Browse Source

提交信息~

wrj 4 tuần trước cách đây
commit
0f7d5ef574
100 tập tin đã thay đổi với 12281 bổ sung0 xóa
  1. 23 0
      .hbuilderx/launch.json
  2. 0 0
      .idea/.gitignore
  3. 131 0
      .idea/easyCodeTableSetting.xml
  4. 9 0
      .idea/libraries/web.xml
  5. 10 0
      .idea/material_theme_project_new.xml
  6. 6 0
      .idea/misc.xml
  7. 8 0
      .idea/modules.xml
  8. 30 0
      .idea/workspace.xml
  9. 9 0
      .idea/yelaixiang-h5.iml
  10. 37 0
      App.vue
  11. 1 0
      MP_verify_GOqnDpeBXzqCDUmQ.txt
  12. 178 0
      api/index.js
  13. 5 0
      api/my.js
  14. 5 0
      api/publicUrl.js
  15. 233 0
      api/request.js
  16. 63 0
      api/wxLogin.js
  17. 10 0
      common/config.js
  18. 193 0
      components/select_time.vue
  19. 43 0
      components/zhuge-swiper/components/image.vue
  20. 79 0
      components/zhuge-swiper/components/video.vue
  21. 74 0
      components/zhuge-swiper/zhuge-swiper.vue
  22. 11 0
      components/zhuge-swiper/喔笗喔`箺.md
  23. 49 0
      js_sdk/lh-select-city/README.md
  24. 1062 0
      js_sdk/lh-select-city/cityData.js
  25. 268 0
      js_sdk/lh-select-city/index.nvue
  26. 13 0
      js_sdk/lh-select-city/package.json
  27. 51 0
      main.js
  28. 128 0
      manifest.json
  29. 15 0
      node_modules/.bin/color-support
  30. 17 0
      node_modules/.bin/color-support.cmd
  31. 18 0
      node_modules/.bin/color-support.ps1
  32. 15 0
      node_modules/.bin/mkdirp
  33. 17 0
      node_modules/.bin/mkdirp.cmd
  34. 18 0
      node_modules/.bin/mkdirp.ps1
  35. 15 0
      node_modules/.bin/node-gyp
  36. 17 0
      node_modules/.bin/node-gyp.cmd
  37. 18 0
      node_modules/.bin/node-gyp.ps1
  38. 15 0
      node_modules/.bin/node-sass
  39. 17 0
      node_modules/.bin/node-sass.cmd
  40. 18 0
      node_modules/.bin/node-sass.ps1
  41. 15 0
      node_modules/.bin/node-which
  42. 17 0
      node_modules/.bin/node-which.cmd
  43. 18 0
      node_modules/.bin/node-which.ps1
  44. 15 0
      node_modules/.bin/nopt
  45. 17 0
      node_modules/.bin/nopt.cmd
  46. 18 0
      node_modules/.bin/nopt.ps1
  47. 15 0
      node_modules/.bin/resolve
  48. 17 0
      node_modules/.bin/resolve.cmd
  49. 18 0
      node_modules/.bin/resolve.ps1
  50. 15 0
      node_modules/.bin/rimraf
  51. 17 0
      node_modules/.bin/rimraf.cmd
  52. 18 0
      node_modules/.bin/rimraf.ps1
  53. 15 0
      node_modules/.bin/sassgraph
  54. 17 0
      node_modules/.bin/sassgraph.cmd
  55. 18 0
      node_modules/.bin/sassgraph.ps1
  56. 15 0
      node_modules/.bin/semver
  57. 17 0
      node_modules/.bin/semver.cmd
  58. 18 0
      node_modules/.bin/semver.ps1
  59. 4 0
      node_modules/@amap/amap-jsapi-loader/.vscode/settings.json
  60. 111 0
      node_modules/@amap/amap-jsapi-loader/README.md
  61. 11 0
      node_modules/@amap/amap-jsapi-loader/dist/index.js
  62. 69 0
      node_modules/@amap/amap-jsapi-loader/example/AMapUI.html
  63. 76 0
      node_modules/@amap/amap-jsapi-loader/example/Loca.html
  64. 94 0
      node_modules/@amap/amap-jsapi-loader/example/Multi.html
  65. 36 0
      node_modules/@amap/amap-jsapi-loader/example/example-es6.html
  66. 46 0
      node_modules/@amap/amap-jsapi-loader/example/example.html
  67. 0 0
      node_modules/@amap/amap-jsapi-loader/example/libs/chai.min.js
  68. 0 0
      node_modules/@amap/amap-jsapi-loader/example/libs/mocha.min.css
  69. 0 0
      node_modules/@amap/amap-jsapi-loader/example/libs/mocha.min.js
  70. 287 0
      node_modules/@amap/amap-jsapi-loader/example/test.html
  71. 15 0
      node_modules/@amap/amap-jsapi-loader/index.d.ts
  72. 66 0
      node_modules/@amap/amap-jsapi-loader/package.json
  73. 25 0
      node_modules/@amap/amap-jsapi-loader/rollup.config.js
  74. 5 0
      node_modules/@amap/amap-jsapi-loader/src/global.d.ts
  75. 367 0
      node_modules/@amap/amap-jsapi-loader/src/index.ts
  76. 17 0
      node_modules/@amap/amap-jsapi-loader/test/demo.ts
  77. 7 0
      node_modules/@amap/amap-jsapi-loader/test/test.ts
  78. 77 0
      node_modules/@babel/helper-module-imports/README.md
  79. 142 0
      node_modules/@babel/helper-module-imports/lib/import-builder.js
  80. 288 0
      node_modules/@babel/helper-module-imports/lib/import-injector.js
  81. 34 0
      node_modules/@babel/helper-module-imports/lib/index.js
  82. 30 0
      node_modules/@babel/helper-module-imports/lib/is-module.js
  83. 49 0
      node_modules/@babel/helper-module-imports/package.json
  84. 2835 0
      node_modules/@babel/types/README.md
  85. 15 0
      node_modules/@babel/types/lib/asserts/assertNode.js
  86. 2215 0
      node_modules/@babel/types/lib/asserts/generated/index.js
  87. 44 0
      node_modules/@babel/types/lib/builders/builder.js
  88. 26 0
      node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
  89. 20 0
      node_modules/@babel/types/lib/builders/flow/createUnionTypeAnnotation.js
  90. 1869 0
      node_modules/@babel/types/lib/builders/generated/index.js
  91. 29 0
      node_modules/@babel/types/lib/builders/react/buildChildren.js
  92. 14 0
      node_modules/@babel/types/lib/clone/clone.js
  93. 24 0
      node_modules/@babel/types/lib/clone/cloneDeep.js
  94. 14 0
      node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
  95. 15 0
      node_modules/@babel/types/lib/comments/addComment.js
  96. 21 0
      node_modules/@babel/types/lib/comments/addComments.js
  97. 12 0
      node_modules/@babel/types/lib/comments/inheritInnerComments.js
  98. 12 0
      node_modules/@babel/types/lib/comments/inheritLeadingComments.js
  99. 12 0
      node_modules/@babel/types/lib/comments/inheritTrailingComments.js
  100. 19 0
      node_modules/@babel/types/lib/comments/inheritsComments.js

+ 23 - 0
.hbuilderx/launch.json

@@ -0,0 +1,23 @@
+{
+    // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+    // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version" : "0.0",
+    "configurations" : [
+        {
+            "app-plus" : {
+                "launchtype" : "local"
+            },
+            "default" : {
+                "launchtype" : "local"
+            },
+            "mp-weixin" : {
+                "launchtype" : "local"
+            },
+            "type" : "uniCloud"
+        },
+        {
+            "playground" : "standard",
+            "type" : "uni-app:app-android"
+        }
+    ]
+}

+ 0 - 0
.idea/.gitignore


+ 131 - 0
.idea/easyCodeTableSetting.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EasyCodeTableSetting">
+    <option name="tableInfoMap">
+      <map>
+        <entry key="ry-vue.coupon">
+          <value>
+            <TableInfoDTO>
+              <option name="comment" value="优惠券的规则信息" />
+              <option name="fullColumn">
+                <list>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠券id" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="id" />
+                    <option name="type" value="java.lang.String" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠券名称,可以和活动名称保持一致" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="name" />
+                    <option name="type" value="java.lang.String" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠券类型,1:普通券" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="type" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠类型,1:无门槛, 2:折扣, 3:满减" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="discountType" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠值" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="discountValue" />
+                    <option name="type" value="java.lang.Double" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="门槛金额" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="thresholdAmount" />
+                    <option name="type" value="java.lang.Double" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="获取方式:1:手动领取 2,自动发放" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="obtainWay" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠券有效期天数,0" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="termDays" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="优惠券配置状态,0:未使用,1:进行中" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="status" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="已使用数量" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="usedNum" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="每个人限领的数量" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="userLimit" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="拓展参数字段,保留字段" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="extParam" />
+                    <option name="type" value="java.lang.String" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="系统创建时间" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="createTime" />
+                    <option name="type" value="java.util.Date" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="系统修改时间" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="updateTime" />
+                    <option name="type" value="java.util.Date" />
+                  </ColumnInfoDTO>
+                  <ColumnInfoDTO>
+                    <option name="comment" value="是否删除0否1是" />
+                    <option name="custom" value="false" />
+                    <option name="ext" value="{}" />
+                    <option name="name" value="isDelete" />
+                    <option name="type" value="java.lang.Integer" />
+                  </ColumnInfoDTO>
+                </list>
+              </option>
+              <option name="name" value="Coupon" />
+              <option name="preName" value="" />
+              <option name="saveModelName" value="nightFragrance-common" />
+              <option name="savePackageName" value="com.ylx.massage" />
+              <option name="savePath" value="./nightFragrance-common/src/main/java/com/ylx/massage" />
+              <option name="templateGroupName" value="MybatisPlus-Mixed" />
+            </TableInfoDTO>
+          </value>
+        </entry>
+      </map>
+    </option>
+  </component>
+</project>

+ 9 - 0
.idea/libraries/web.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="web">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/unpackage/dist/build/web.zip!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 10 - 0
.idea/material_theme_project_new.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MaterialThemeProjectNewConfig">
+    <option name="metadata">
+      <MTProjectMetadataState>
+        <option name="userId" value="d7cf6e8:1982a6c5003:-79bf" />
+      </MTProjectMetadataState>
+    </option>
+  </component>
+</project>

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/yelaixiang-h5.iml" filepath="$PROJECT_DIR$/.idea/yelaixiang-h5.iml" />
+    </modules>
+  </component>
+</project>

+ 30 - 0
.idea/workspace.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MavenImportPreferences">
+    <option name="generalSettings">
+      <MavenGeneralSettings>
+        <option name="localRepository" value="E:\maven-3.9.6\repository" />
+        <option name="mavenHome" value="E:/maven-3.9.6" />
+        <option name="userSettingsFile" value="E:\maven-3.9.6\conf\settings.xml" />
+      </MavenGeneralSettings>
+    </option>
+  </component>
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent">{
+  &quot;keyToString&quot;: {
+    &quot;settings.editor.selected.configurable&quot;: &quot;MavenSettings&quot;
+  }
+}</component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="默认任务">
+      <created>1703227295354</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1703227295354</updated>
+    </task>
+    <servers />
+  </component>
+</project>

+ 9 - 0
.idea/yelaixiang-h5.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 37 - 0
App.vue

@@ -0,0 +1,37 @@
+<script>
+	export default {
+		data(){
+			return{
+			}
+		},
+		onLaunch: function() {
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import 'uview-ui/theme.scss';
+	/*每个页面公共css */
+	// uni-page-head{
+	// 	display: none;
+	// }
+		html {
+			overflow-x: hidden;
+		}
+		body{
+			height: 100vh;
+		}
+		body::-webkit-scrollbar {
+			display: none;
+		}
+		uni-page-body{
+			height: 100%;
+		}
+</style>

+ 1 - 0
MP_verify_GOqnDpeBXzqCDUmQ.txt

@@ -0,0 +1 @@
+GOqnDpeBXzqCDUmQ

+ 178 - 0
api/index.js

@@ -0,0 +1,178 @@
+import { postRequest, postParamsRequest,getRequest,postRequestFormData,putRequest,deleteRequest} from './request'
+const base = '';
+
+// 登陆接口
+// export const requst_post_login = data => postParamsRequest(`/wx/login`, data);
+// 图片上传
+export const imgUpload = data => postRequestFormData(`/common/upload`, data);
+// 获取token  
+export const  getAccessToken = data => getRequest(`/weChat/getAccessToken` , data);
+// 轮播图  
+export const  slideshow = data => getRequest(`/api/lbt/v1/getAll` , data);
+// 项目
+export const  project = data => postRequest(`/api/xiangmu/v1/wx/getAll` , data);
+// 项目详情
+export const  projectDetails = data => postRequest(`/api/xiangmu/v1/getByid` , data);
+// 项目亮点
+export const  brightSpot = data => getRequest(`/api/xiangmu/v1/highlights` , data);
+// 商户------列表
+export const  engineer = data => getRequest(`/api/js/v1/wx/select` , data);
+
+// 商户-部门查询
+export const  department = data => getRequest(`/api/js/v1/wx/select` , data);
+
+// 商户信息
+export const  engineerDetails = data => postRequest(`/api/js/v1/wx/getByid` , data);
+//登录 -------用户信息更新
+export const  infoUpdate = data => postRequest(`/wx/update` , data);
+// 获取用户信息
+export const  getInfo = data => getRequest(`/wx/getUserInfo` , data);
+// 添加地址
+export const  addUpdate = data => postRequest(`/tAddress/save` , data);
+//修改地址
+export const  updateAdd = data => postRequest(`/tAddress/update` , data);
+// 地址列表
+export const  addList = data => getRequest(`/tAddress/getByOpenId` , data);
+// 地址详情
+export const  addDetails = data => getRequest(`/tAddress/getById` , data);
+// 微信支付验证
+export const  getSignature = data => getRequest(`/weChat/getSignature` , data);
+// 删除地址
+export const  delAdd = data => deleteRequest(`/tAddress/delete` , data );
+// 设置默认地址
+export const  defaultAdd = data => postRequest(`/tAddress/defaultAddress` , data );
+// 添加商户
+export const  addEngineer = data => postRequest(`/api/js/v1/wx/add` , data );
+// 添加免车费
+export const  freeFare = data => postRequest(`/api/js/v1/wx/freeFare` , data );
+// 上下岗
+export const work  = data => postRequest(`/api/js/v1/wx/post` , data );
+// 商户详情
+export const  engineDetail = data => postRequest(`/api/js/v1/wx/getByOpenId` , data);
+// 修改商户信息
+export const  UpdateEngine = data => postRequest(`/api/js/v1/wx/update` , data);
+// 订单---------分类
+export const  statusList = data => getRequest(`/api/order/v1/getStatus` , data);
+// 订单列表
+export const orderList = data => getRequest(`/api/order/v1/select` , data);
+// 创建订单
+export const addOrder = data => postRequest(`/api/order/v1/wx/add` , data);
+// 修改订单
+export const updateOrder = data => postRequest(`/api/order/v1/update` , data);
+// 订单详情
+export const orderDeatails = data => getRequest(`/api/order/v1/wx/getOrder` , data);
+// 取消订单
+export const cancleOrder = data => postRequest(`/api/order/v1/wx/cancle` , data);
+// 删除订单
+export const  delOrder = data => postRequest(`/api/order/v1/del` , data );
+// 确认服务完成订单
+export const confirmOrder = data => postRequest(`/api/order/v1/wx/confirm` , data);
+// 评论订单
+export const commentOrder = data => postRequest(`/api/comment/v1/wx/add` , data);
+// 充值
+export const pay = data => postRequest(`/wx/pay/pay` , data);
+// 支付
+export const payoff = data => postRequest(`/api/order/v1/wx/pay` , data);
+// 提现
+export const withdraw = data => postRequest(`/api/tx/record/wx/applicationCash` , data);
+// 上次提现记录
+export const last = data => postRequest(`/api/tx/record/wx/last` , data);
+// 总提现记录
+export const select = data => getRequest(`/api/tx/record/select` , data);
+// 添加收藏
+export const addCollect = data => postRequest(`/api/collect/v1/wx/addCollect` , data);
+// 取消收藏
+export const cancleCollect = data => postRequest(`/api/collect/v1/wx/delCollect` , data);
+// 获取收藏列表
+export const getCollect = data => postRequest(`/api/collect/v1/wx/getCollect` , data);
+// 实时更新商户的位置
+export const getJsLocation = data => postRequest(`/api/js/v1/wx/updateLocation` , data);
+// 接受订单
+export const takeOrder = data => postRequest(`/api/order/v1/wx/takingOrders` , data);
+// 拒绝订单
+export const refuse = data => postRequest(`/api/order/v1/wx/jujue` , data);
+// 到达服务订单位置
+export const arriveOderLocation = data => postRequest(`/api/order/v1/wx/reach` , data);
+// 开始服务
+export const enterService = data => postRequest(`/api/order/v1/wx/service` , data);
+// 报警
+export const alertOrder = data => postRequest(`/ylxAlarm/addAlarm` , data);
+//加单
+export const speedOrder = data => postRequest(`/api/order/v1/wx/add` , data);
+
+//获取优惠券v
+export const getCoupon = data => postRequest(`/couponReceive/myCoupon` , data);
+
+//获取二维码
+export const getwxQrCode = data => getRequest(`/weChat/getwxQrCode` , data);
+
+//获取优惠券v
+export const add = data => postRequest(`/businessDevelopment/add` , data);
+
+//投诉举报
+export const complain = data => postRequest(`/complaint/add` , data);
+
+//投诉举报类型
+export const complaintEnum = data => postRequest(`/complaint/complaintEnum` , data);
+
+//获取部门
+export const getCityList = data => getRequest(`/system/dept/list` , data);
+
+//获取部门车费
+export const tFareSetting = data => getRequest(`/tFareSetting/selectAll` , data);
+
+//商户出发
+export const depart = data => postRequest(`/api/order/v1/wx/depart` , data);
+
+//商户到达
+export const reach = data => postRequest(`/api/order/v1/wx/reach` , data);
+
+//商户提前完成
+export const confirm = data => postRequest(`/api/order/v1/wx/confirm` , data);
+
+//商户提前完成
+export const tCommentUser = data => postRequest(`/tCommentUser/add` , data);
+
+//查看客户评论
+export const userComment = data => getRequest(`/tCommentUser/selectAll` , data);
+
+//首页优惠券弹窗
+export const windows = data => postRequest(`/couponReceive/windows` , data);
+
+//首页领取优惠券
+export const couponReceive = data => postRequest(`/couponReceive/submits` , data);
+
+//首页领取优惠券
+export const verification = data => postRequest(`/api/order/v1/wx/verification` , data);
+
+//查看客户评论
+export const selectApp = data => getRequest(`/tJsDay/selectApp` , data);
+
+//余额记录
+export const ConsumptionLog = data => getRequest(`/tConsumptionLog/selectAll` , data);
+
+//退出登录
+export const logout = data => postRequest(`/logout` , data);
+
+//招商已提交信息
+export const businessDevelopment = data => getRequest(`/businessDevelopment/getByOpenId` , data);
+
+//招商已提交信息
+export const businessupdate = data => postRequest(`/businessDevelopment/update` , data);
+
+//获取银行卡列表
+export const bankList = data => getRequest(`/tBankUser/bankList` , data);
+
+//绑定银行卡
+export const addBnak = data => postRequest(`/tBankUser/save` , data);
+
+//我的银行卡
+export const myBank = data => getRequest(`/tBankUser/myBank` , data);
+
+
+//推荐商户
+export const ranking = data => getRequest(`/api/xiangmu/v1/wx/recommend` , data);
+
+
+//获取订单数量
+export const waitOrder = data => getRequest(`/api/order/v1/wx/waitOrder` , data);

+ 5 - 0
api/my.js

@@ -0,0 +1,5 @@
+import { postRequest, postParamsRequest,getRequest,postRequestFormData,putRequest,deleteRequest} from './request'
+const base = '';
+
+// 登陆接口
+export const wxGetCode = data => getRequest(`/weChat/getCode`, data);

+ 5 - 0
api/publicUrl.js

@@ -0,0 +1,5 @@
+// export const PUBLICRUL = 'https://test.baoxianzhanggui.com/nightFragrance'
+export const PUBLICRUL = 'https://city.baoxianzhanggui.com/nightFragrance'
+// export const PUBLICRUL = 'http://192.168.0.36:8087'
+
+export default PUBLICRUL

+ 233 - 0
api/request.js

@@ -0,0 +1,233 @@
+var tokenKey = "access-token";
+// var serverUrl = "http://192.168.0.36:8087"; 
+var serverUrl = "https://city.baoxianzhanggui.com/nightFragrance"; //测试环境
+import { requst_post_login} from '../api/index'
+
+//请求头处理函数
+function CreateHeader(url, type) {
+  let header = {}
+	// header.Authorization = 'tf:'+uni.getStorageSync('access-token');
+  if (type == 'POST_PARAMS'){
+    header = {
+      'content-type': 'application/x-www-form-urlencoded'
+    }
+  }else if(type == 'FormData'){
+    header = {
+      'content-type': 'multipart/form-data'
+    }
+  }else{
+    header = {
+      'content-type': 'application/json'
+    }
+  }
+    // let token = uni.getStorageSync('access-token');
+    // header.Authorization = 'tf:' + token;
+  // }
+	// let access_token = uni.getStorageSync('access-token');
+  return header;
+}
+//post请求,fomData
+function postRequestFormData(url,data){
+  let header = CreateHeader(url,'FormData');
+	// let access_token = uni.getStorageSync('access-token');
+	header.Authorization = 'tf:' +uni.getStorageSync('access-token');
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: serverUrl + url,
+      data: data,
+      header: header,
+      method: 'POST',
+      success: (res => {
+        if (res.statusCode === 200) {
+          if(res.data.code==401){
+            // 重新登陆
+          	// uni.removeStorage({
+          	// 	key:'access-token'
+          	// })
+             // 重新登陆
+          }
+        }
+				 else {
+          reject(res)
+        }
+      }),
+      fail: (res => {
+        reject(res)
+      })
+    })
+  })
+}
+//post请求,数据在body中
+function postRequest(url,data){
+  let header = CreateHeader(url,'POST');
+	// let access_token = uni.getStorageSync('access-token');
+	header.Authorization = 'tf:' +uni.getStorageSync('access-token');
+  // console.log(header,'header')
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: serverUrl + url,
+      data: data,
+      header: header,
+      method: 'POST',
+      success: (res => {
+        if (res.statusCode === 200) {
+          if(res.data.code==401){
+            // 重新登陆
+            if(res.data.code==401){
+              // 重新登陆
+            	uni.removeStorage({
+            		key:'access-token'
+            	})
+               // 重新登陆
+            }
+             // 重新登陆
+          }else{
+            resolve(res)
+          }
+        } else {
+          reject(res)
+        }
+      }),
+      fail: (res => {
+        reject(res)
+      })
+    })
+  })
+}
+//post请求,数据按照query方式传给后端
+function postParamsRequest(url, data) {
+  let header = CreateHeader(url,'POST_PARAMS');
+    let useurl = url;
+		// let access_token = uni.getStorageSync('access-token');
+		header.Authorization = 'tf:' +uni.getStorageSync('access-token');
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: serverUrl + useurl,
+      data: data,
+      header: header ,
+      method: 'POST',
+      success: (res => {
+        // console.log(res, '1212')
+        if (res.statusCode === 200) {
+          if(res.data.code==401){
+            // 重新登陆
+           if(res.data.code==401){
+             // 重新登陆
+           	uni.removeStorage({
+           		key:'access-token'
+           	})
+              // 重新登陆
+           }
+             // 重新登陆
+          }else{
+            resolve(res)
+          }
+        } else {
+          reject(res)
+        }
+      }),
+      fail: (res => {
+        reject(res)
+      })
+    })
+  })
+}
+//get 请求
+function getRequest(url, data) {
+  let header = CreateHeader(url, 'GET');
+	// let access_token = uni.getStorageSync('access-token');
+	header.Authorization = 'tf:' +uni.getStorageSync('access-token');
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: serverUrl + url,
+      data: data,
+      header: header,
+      method: 'GET',
+      success: (res => {
+        if (res.statusCode === 200) {
+          if(res.data.code==401){
+             // 重新登陆
+           	uni.removeStorage({
+           		key:'access-token'
+           	})
+          }else{
+            resolve(res)
+          }
+        }else{
+          reject(res)
+        }
+      }),
+      fail: (res => {
+        reject(res)
+      })
+    })
+  })
+}
+//put请求
+function putRequest(url, data) {
+  let header = CreateHeader(url, 'PUT');
+	// let access_token = uni.getStorageSync('access-token');
+	header.Authorization = 'tf:' +uni.getStorageSync('access-token');
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: serverUrl + url,
+      data: data,
+      header: header,
+      method: 'PUT',
+      success: (res => {
+        if (res.statusCode === 200) {
+          if(res.data.code==401){
+           if(res.data.code==401){
+             // 重新登陆
+           	uni.removeStorage({
+           		key:'access-token'
+           	})
+              // 重新登陆
+           }
+          }else{
+            resolve(res)
+          }
+        } else {
+          reject(res)
+        }
+      }),
+      fail: (res => {
+        reject(res)
+      })
+    })
+  })
+}
+//delete请求
+function deleteRequest(url, data) {
+  let header = CreateHeader(url, 'POST_PARAMS');
+	// let access_token = uni.getStorageSync('access-token');
+	header.Authorization = 'tf:' +uni.getStorageSync('access-token');
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: serverUrl + url ,
+      data: data,
+      header: header,
+      method: 'DELETE',
+      success: (res => {
+        if (res.statusCode === 200) {
+          //200: 服务端业务处理正常结束
+          resolve(res)
+        } else {
+          reject(res)
+        }
+      }),
+      fail: (res => { 
+         reject(res) 
+      })
+    })
+  })
+}
+
+
+
+module.exports.getRequest = getRequest;
+module.exports.postRequest = postRequest;
+module.exports.postRequestFormData = postRequestFormData;
+module.exports.postParamsRequest = postParamsRequest;
+module.exports.putRequest = putRequest;
+module.exports.deleteRequest = deleteRequest;

+ 63 - 0
api/wxLogin.js

@@ -0,0 +1,63 @@
+ var jWeixin = require('jweixin-module')
+ 
+ // 配置微信config
+ function getSign() {
+ 	// 获取微信签名
+ 	uni.request({
+ 		url: '',//后端获取签名的请求地址
+ 		method: '',//请求方式
+ 		data: {
+ 			url: encodeURIComponent(location.href.split('#')[0])
+ 		},
+ 		success: (wxres) => {
+ 			jWeixin.config({
+ 				debug: false, // 开启调试模式,
+ 				appId: wxres.data.data.appId, // 必填,公众号的唯一标识
+ 				timestamp: wxres.data.data.timestamp, // 必填,生成签名的时间戳
+ 				nonceStr: wxres.data.data.nonceStr, // 必填,生成签名的随机串
+ 				signature: wxres.data.data.signature, // 必填,签名
+ 				jsApiList: ["scanQRCode", "chooseWXPay",'hideToolbar']
+ 			});
+ 			jWeixin.ready(function(res) {
+ 				console.log('微信config配置成功res', res)
+ 			})
+ 		}
+ 	})
+ }
+ 
+ // 微信扫一扫
+ function toggle() {
+ 	return new Promise((resolve, reject) => {
+ 		jWeixin.scanQRCode({
+ 			needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
+ 			scanType: ["qrCode"],
+ 			success: function(res) {
+ 				resolve(res.resultStr) // 当needResult 为 1 时,扫码返回的结果
+ 			},
+ 			fail: function(err) {
+ 				reject(err)
+ 			}
+ 		});
+ 	});
+ }
+ 
+ // 微信支付
+ function payment() {
+ 	let paymentcon = JSON.parse(uni.getStorageSync('payment'))
+ 	jWeixin.chooseWXPay({
+ 		timestamp: paymentcon.timeStamp, // 支付签名时间戳
+ 		nonceStr: paymentcon.nonceStr, // 支付签名随机串,不长于 32 位
+ 		package: paymentcon.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
+ 		signType: paymentcon.signType, // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致
+ 		paySign: paymentcon.paySign, // 支付签名
+ 		success: function(res) {
+ 			console.log(res, '支付成功')
+ 			// 支付成功后的回调函数
+ 		}
+ 	});
+ }
+ export {
+ 	getSign,
+ 	toggle,
+ 	payment
+ }

+ 10 - 0
common/config.js

@@ -0,0 +1,10 @@
+const router = require('uni-simple-router');
+
+// 注册路由
+router.setDefault({
+    platform: 'h5'
+});
+
+module.exports = {
+    router
+};

+ 193 - 0
components/select_time.vue

@@ -0,0 +1,193 @@
+<template>
+	<view class="time_box">
+		<view class="content">
+			<view class="title">
+				选择上门时间
+			</view>
+			<view class="center">
+				<view class="left">
+					<!-- <view class="item select_day" :class="currentDay == index?'select_day':''" v-for="(item,index) in day" :key="index"
+						@click="selectDay(item,index)"> -->
+					<view class="item select_day">
+						<!-- {{item.title}} -->今天
+					</view>
+				</view>
+				<view class="right">
+					<view class="item" :class="currentTime == index?'select_time':''" v-for="(item,index) in time" :key="index"
+						@click="selectTime(item,index)">
+						{{item.value}}
+					</view>
+				</view>
+			</view>
+			<view class="bottom">
+				<view class="btn" v-if="selectTim" @click="selectDate">
+					{{selectDay}} {{selectTim}}
+				</view>
+				<view class="btn" v-else>
+					选择上门时间
+				</view>
+
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'seelctName',
+		data() {
+			return {
+				day: [{
+						title: '今天',
+						type: 0
+					},
+					// {
+					// 	title: '明天',
+					// 	type: 1
+					// }, {
+					// 	title: '后天',
+					// 	type: 2
+					// },
+				],
+				time: [{
+						value: '15:00-17:00'
+					},
+					{
+						value: '15:00-17:00'
+					},
+					{
+						value: '15:00-17:00'
+					},
+					{
+						value: '15:00-17:00'
+					},
+					{
+						value: '15:00-17:00'
+					},
+					{
+						value: '15:00-17:00'
+					}
+				],
+				currentDay: null,
+				currentTime: null,
+				selectDay: '',
+				selectTim: ''
+			}
+		},
+		methods: {
+			// selectDay(item, index) {
+			// 	// this.currentDay = index
+			// 	let today = new Date();
+			// 	this.currentDay = today.toISOString().slice(0, 10);
+			// 	console.log(this.currentDay)
+			// },
+			selectTime(item, index) {
+				this.currentTime = index
+				this.selectTim = item.value
+				let today = new Date();
+				this.selectDay = today.toISOString().slice(0, 10);
+			},
+			selectDate() {
+				let date = this.selectDay + ' ' + this.selectTim
+				this.$emit('dateSend', date);
+			}
+		},
+		mounted() {
+
+
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+	.time_box {
+		width: 100vw;
+		height: 100vh;
+		position: fixed;
+		top: 0;
+		left: 0;
+		background: rgba(0, 0, 0, 0.4);
+
+		.content {
+			width: 100%;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+
+			.title {
+				width: 100%;
+				height: 92rpx;
+				background: #E6F8F7;
+				border-radius: 24rpx 24rpx 0px 0px;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				font-weight: 600;
+			}
+
+			.center {
+				height: 782rpx;
+				display: flex;
+
+				.left {
+					width: 220rpx;
+					height: 100%;
+					background: #F7F7F7;
+
+					.item {
+						width: 100%;
+						height: 76rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						font-size: 28rpx;
+						color: #000000;
+					}
+
+					.select_day {
+						background: #FFFFFF;
+					}
+				}
+
+				.right {
+					flex: 1;
+					background: #FFFFFF;
+
+					.item {
+						width: 100%;
+						height: 76rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						font-size: 28rpx;
+						color: #999999;
+					}
+
+					.select_time {
+						color: #000000;
+					}
+				}
+			}
+
+			.bottom {
+				height: 116rpx;
+				background: #FFFFFF;
+				border-top: 1px solid #EEEEEE;
+				padding: 20rpx 40rpx;
+				box-sizing: border-box;
+
+				.btn {
+					width: 100%;
+					height: 76rpx;
+					background: #00B8B0;
+					border-radius: 106rpx;
+					font-size: 32rpx;
+					color: #FFFFFF;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+				}
+			}
+		}
+	}
+</style>

+ 43 - 0
components/zhuge-swiper/components/image.vue

@@ -0,0 +1,43 @@
+<template>
+	<image class="imageBox" :src="src" :draggable="draggable" 
+		@error="imageError" @load="imageLoad"></image>
+</template>
+
+<script>
+	export default { 
+		onShow: function() { 
+	
+		},
+		props:{
+			src:{
+				type:String,
+				default:'',
+				required:true,
+			},
+		},
+		data() {
+			return {
+				draggable:false
+			}
+		},
+		components: {},
+		methods: {
+			imageError() {
+			},
+			imageLoad() {
+			},
+		},
+		mounted() {
+	
+		}
+	}
+</script>
+
+<style scoped lang="less">
+	.imageBox {
+		// width: 100%;
+		height: 100%;
+		
+	}
+	
+</style>

+ 79 - 0
components/zhuge-swiper/components/video.vue

@@ -0,0 +1,79 @@
+<template>
+	<video id='myVideo' :initial-time="initialTime" :muted="muted" :src="src" :poster="poster" :enable-play-gesture="enablePlayGesture"
+		@play="handlePlay" @pause="handlePause" @ended="handleEnd" @controlstoggle='handlecontrolstoggle' ref='videoRef'
+		class="uni-video-video" x5-video-player-type="h5" x-webkit-airplay="allow"></video>
+</template>
+
+<script>
+	export default {
+		onShow: function() {
+
+		},
+		props: {
+			src: {
+				type: String,
+				default: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni-app-doc/3c1782e0-60ab-11eb-8ff1-d5dcf8779628.m4v',
+				required: true,
+			},
+			poster: {
+				type: String,
+				default: 'https://img.tupianzj.com/uploads/allimg/151208/9-15120R10056.jpg',
+				required: false,
+			},
+			videoAutoplay: {
+				type: Boolean,
+				default: true,
+			},
+			initialTime: {
+				type: Number,
+				default: 0,
+			},
+			muted: {
+				type: Boolean,
+				default: false,
+			},
+		},
+		data() {
+			return {
+				enablePlayGesture: true,
+			}
+		},
+		watch: {
+			videoAutoplay(val) {
+				if (!val) {
+					//视频暂停
+					uni.createVideoContext('myVideo').pause()
+				}
+			}
+		},
+		components: {},
+		methods: {
+			handlePlay() {
+				this.$emit('play', {});
+				this.$nextTick(function() {
+					this.autoplay = false
+				})
+
+			},
+			handlePause() {
+				this.$emit('pause');
+			},
+			handleEnd() {
+				this.$emit('ended');
+			},
+			handlecontrolstoggle() {
+				this.autoplay = false
+			}
+		},
+		mounted() {
+
+		}
+	}
+</script>
+
+<style>
+	.uni-video-video {
+		width: 100%;
+		height: 100%;
+	}
+</style>

+ 74 - 0
components/zhuge-swiper/zhuge-swiper.vue

@@ -0,0 +1,74 @@
+<template>
+	<swiper class="swiper" :indicator-dots="indicatorDots" :autoplay="swiperAutoplay" :interval="interval"
+		:duration="duration" @change='swiperChange'>
+		<swiper-item v-for="(item,index) in list" :key="index + item.src" >
+			<video-item v-if="item.type === 'video'" 
+			:videoAutoplay="videoAutoPlay"
+			:poster="item.poster"
+			:src="item.src" @play="handleVideoPlay" @pause="handleVideoPause"
+				@ended="handleVideoEnd"></video-item>
+			<image-item v-if="item.type === 'image'" :src="item.src"></image-item>
+		</swiper-item>
+	</swiper>
+</template>
+
+<script>
+	import VideoItem from './components/video.vue';
+	import ImageItem from './components/image.vue'
+	export default {
+		onShow: function() {
+
+		},
+		props: {
+			list: {
+				type: Array, 
+				default: () => {
+					return [] //[{type:'video',src:''},{type:'image',src:''}]
+				},
+				required: true
+			}
+		},
+		data() {
+			return {
+				//这里控制swiper
+				indicatorDots: true,
+				swiperAutoplay: true,
+				interval: 4000,
+				duration: 500,
+				//以下是控制viedo的
+				videoAutoPlay:false,
+			}
+		},
+		components: {
+			VideoItem,
+			ImageItem
+		},
+		methods: {
+			swiperChange(detail) {
+				//切换时要把视频暂停
+				this.videoAutoPlay = false;
+			},
+			handleVideoPlay() {
+				this.swiperAutoplay = false
+				this.videoAutoPlay = true;
+			},
+			handleVideoPause() {
+				this.swiperAutoplay = true
+			},
+			handleVideoEnd() {
+				this.swiperAutoplay = true;
+			}
+		},
+		mounted() {
+
+		}
+	}
+</script>
+
+<style lang="less">
+ div {
+	 		 	background-position:50% 0%;
+	 		 	background-size:auto 100% !important;
+	 		 	background-repeat:no-repeat;
+	 	 }
+</style>

+ 11 - 0
components/zhuge-swiper/喔笗喔`箺.md

@@ -0,0 +1,11 @@
+组件引入index.vue。prop传list,格式如下
+[{
+	type: 'video',
+	src: ''
+ },
+ {
+ 	type: 'image',
+ 	src: ''
+  },
+  ...
+]

+ 49 - 0
js_sdk/lh-select-city/README.md

@@ -0,0 +1,49 @@
+## 参数说明
+# hotCitys  热门城市(array)
+# value 当前选中城市(string)
+# windowHeight  scroll的高 也是滑块的高 记得带单位!!! px rpx upx都支持(string)
+# @onSelect   点击切换城市事件 参数为城市名称
+# sliding 是否开始滑动选择 不传默认开启(Boolean)
+
+## 使用说明
+
+```javascript
+<lhSelectCity
+  :value="value"
+  :windowHeight="windowHeight"
+  :hotCitys="hotCitys"
+  @onSelect="onSelectCity"
+/>
+
+
+import lhSelectCity from '@/components/lh-select-city/index.nvue'
+	export default {
+		components:{lhSelectCity},
+		data() {
+			return {
+				hotCitys: [
+					'杭州',
+					'天津',
+					'北京',
+					'上海',
+					'深圳',
+					'广州',
+					'成都',
+					'重庆',
+					'厦门'
+				],
+				value: '杭州',
+				windowHeight:""
+			}
+		},
+		onLoad(){
+			// 计算出可用高度
+			 this.windowHeight = uni.getSystemInfoSync().windowHeight-100+"px";
+		},
+		methods: {
+			onSelectCity(city) {
+				console.log(city)
+			}
+		}
+	}
+```

+ 1062 - 0
js_sdk/lh-select-city/cityData.js

@@ -0,0 +1,1062 @@
+const cityData = [
+  {
+    letter: 'A',
+    list: [
+      '安远',
+      '安义',
+      '安溪',
+      '安丘',
+      '安宁',
+      '安吉',
+      '安福',
+      '阿城',
+      '安阳',
+      '安顺',
+      '鞍山',
+      '安庆',
+      '安康',
+      '阿里',
+      '阿勒泰',
+      '阿拉善盟',
+      '阿克苏',
+      '阿坝'
+    ]
+  },
+  {
+    letter: 'B',
+    list: [
+      '北京',
+      '博兴',
+      '博罗',
+      '博爱',
+      '璧山',
+      '宾阳',
+      '宾县',
+      '滨海',
+      '巴彦',
+      '宝应',
+      '亳州',
+      '博尔塔拉',
+      '滨州',
+      '毕节',
+      '本溪',
+      '北海',
+      '巴中',
+      '巴音郭楞',
+      '巴彦淖尔',
+      '包头',
+      '保山',
+      '宝鸡',
+      '保定',
+      '蚌埠',
+      '白银',
+      '白山',
+      '百色',
+      '白城'
+    ]
+  },
+  {
+    letter: 'C',
+    list: [
+      '成都',
+      '常州',
+      '长沙',
+      '长春',
+      '重庆',
+      '朝阳',
+      '巢湖',
+      '长治',
+      '昌吉',
+      '昌都',
+      '常德',
+      '沧州',
+      '郴州',
+      '承德',
+      '潮州',
+      '滁州',
+      '楚雄',
+      '崇左',
+      '池州',
+      '赤峰',
+      '枞阳',
+      '从化',
+      '慈溪',
+      '淳安',
+      '崇州',
+      '崇义',
+      '崇仁',
+      '茌平',
+      '成武',
+      '城口',
+      '呈贡',
+      '潮安',
+      '昌邑',
+      '长兴',
+      '长汀',
+      '长泰',
+      '常熟',
+      '常山',
+      '昌乐',
+      '长乐',
+      '长海',
+      '长丰',
+      '长岛',
+      '曹县',
+      '苍山',
+      '苍南'
+    ]
+  },
+  {
+    letter: 'D',
+    list: [
+      '丹东',
+      '大理',
+      '东莞',
+      '大连',
+      '大兴安岭',
+      '大同',
+      '大庆',
+      '德州',
+      '德阳',
+      '德宏',
+      '达州',
+      '大丰',
+      '东营',
+      '迪庆',
+      '定西',
+      '单县',
+      '当涂',
+      '砀山',
+      '岱山',
+      '大邑',
+      '大田',
+      '大埔',
+      '丹阳',
+      '德化',
+      '德安',
+      '大足',
+      '大余',
+      '德庆',
+      '德清',
+      '登封',
+      '德惠',
+      '定南',
+      '垫江',
+      '电白',
+      '德兴',
+      '东海',
+      '东阿',
+      '定远',
+      '定陶',
+      '东台',
+      '东山',
+      '东平',
+      '东明',
+      '东源',
+      '东阳',
+      '东乡',
+      '洞头',
+      '都江堰',
+      '都昌',
+      '东至'
+    ]
+  },
+  {
+    letter: 'E',
+    list: ['鄂尔多斯', '恩施', '恩平', '鄂州']
+  },
+  {
+    letter: 'F',
+    list: [
+      '佛山',
+      '福州',
+      '防城港',
+      '抚顺',
+      '阜新',
+      '阜阳',
+      '抚州',
+      '法库',
+      '富阳',
+      '福清',
+      '阜宁',
+      '阜南',
+      '富民',
+      '浮梁',
+      '福鼎',
+      '福安',
+      '佛冈',
+      '分宜',
+      '凤阳',
+      '奉新',
+      '丰县',
+      '凤台',
+      '丰顺',
+      '封开',
+      '奉节',
+      '奉化',
+      '丰都',
+      '丰城',
+      '费县',
+      '肥西',
+      '肥东',
+      '肥城',
+      '方正',
+      '繁昌'
+    ]
+  },
+  {
+    letter: 'G',
+    list: [
+      '广州',
+      '贵阳',
+      '甘南',
+      '赣州',
+      '甘孜',
+      '广安',
+      '广元',
+      '贵港',
+      '桂林',
+      '果洛',
+      '固原',
+      '赣县',
+      '赣榆',
+      '高安',
+      '固镇',
+      '古田',
+      '贵溪',
+      '灌云',
+      '冠县',
+      '灌南',
+      '光泽',
+      '广饶',
+      '广宁',
+      '广丰',
+      '广德',
+      '广昌',
+      '巩义',
+      '高州',
+      '高邮',
+      '高邑',
+      '高要',
+      '高唐',
+      '高青',
+      '高密',
+      '高陵',
+      '皋兰',
+      '高淳',
+      '藁城'
+    ]
+  },
+  {
+    letter: 'H',
+    list: [
+      '杭州',
+      '哈尔滨',
+      '邯郸',
+      '海口',
+      '黑河',
+      '合肥',
+      '鹤岗',
+      '河池',
+      '鹤壁',
+      '汉中',
+      '哈密',
+      '海西',
+      '海南',
+      '海东',
+      '海北',
+      '惠州',
+      '呼伦贝尔',
+      '葫芦岛',
+      '呼和浩特',
+      '黄石',
+      '黄山',
+      '黄南',
+      '黄冈',
+      '淮南',
+      '怀化',
+      '淮北',
+      '淮安',
+      '红河',
+      '贺州',
+      '菏泽',
+      '河源',
+      '和田地',
+      '衡阳',
+      '衡水',
+      '怀远',
+      '怀宁',
+      '怀集',
+      '桦甸',
+      '华安',
+      '洪泽',
+      '和县',
+      '鹤山',
+      '和平',
+      '横县',
+      '横峰',
+      '合川',
+      '含山',
+      '海阳',
+      '海盐',
+      '海宁',
+      '海门',
+      '海丰',
+      '海安',
+      '湖州',
+      '户县',
+      '霍山',
+      '霍邱',
+      '呼兰',
+      '湖口',
+      '惠民',
+      '惠来',
+      '惠东',
+      '会昌',
+      '惠安',
+      '化州',
+      '桓台'
+    ]
+  },
+  {
+    letter: 'J',
+    list: [
+      '鸡西',
+      '酒泉',
+      '九江',
+      '锦州',
+      '晋中',
+      '济宁',
+      '金华',
+      '荆州',
+      '荆门',
+      '景德镇',
+      '晋城',
+      '金昌',
+      '揭阳',
+      '嘉峪关',
+      '吉安',
+      '江门',
+      '佳木斯',
+      '济南',
+      '吉林',
+      '嘉兴',
+      '焦作',
+      '井冈山',
+      '旌德',
+      '靖安',
+      '即墨',
+      '揭西',
+      '界首',
+      '揭东',
+      '嘉祥',
+      '嘉善',
+      '胶州',
+      '胶南',
+      '蕉岭',
+      '蛟河',
+      '吉安',
+      '建阳',
+      '建瓯',
+      '建宁',
+      '建湖',
+      '江阴',
+      '姜堰',
+      '江山',
+      '将乐',
+      '江津',
+      '江都',
+      '建德',
+      '九台',
+      '九江',
+      '吉水',
+      '晋州',
+      '金寨',
+      '缙云',
+      '金乡',
+      '金溪',
+      '进贤',
+      '金堂',
+      '金坛',
+      '晋宁',
+      '金门',
+      '晋江',
+      '金湖',
+      '井陉',
+      '泾县',
+      '景宁',
+      '靖江',
+      '巨野',
+      '莒县',
+      '句容',
+      '莒南',
+      '鄄城',
+      '济源',
+      '济阳',
+      '绩溪'
+    ]
+  },
+  {
+    letter: 'K',
+    list: [
+      '昆明',
+      '开封',
+      '喀什地',
+      '克拉玛依',
+      '克孜勒',
+      '开化',
+      '开平',
+      '开县',
+      '开阳',
+      '康平',
+      '垦利',
+      '昆山'
+    ]
+  },
+  {
+    letter: 'L',
+    list: [
+      '连云港',
+      '凉山',
+      '乐山',
+      '拉萨',
+      '廊坊',
+      '莱芜',
+      '来宾',
+      '洛阳',
+      '柳州',
+      '兰州',
+      '六盘水',
+      '六安',
+      '丽水',
+      '林芝',
+      '临沂',
+      '临夏',
+      '临汾',
+      '临沧',
+      '丽江',
+      '辽源',
+      '辽阳',
+      '聊城',
+      '乐亭',
+      '乐清',
+      '乐平',
+      '乐陵',
+      '雷州',
+      '乐昌',
+      '乐安',
+      '兰溪',
+      '蓝田',
+      '郎溪',
+      '莱州',
+      '莱阳',
+      '莱西',
+      '来安',
+      '吕梁',
+      '泸州',
+      '漯河',
+      '娄底',
+      '龙岩',
+      '陇南',
+      '临邑',
+      '临沭',
+      '临朐',
+      '临泉',
+      '临清',
+      '临海',
+      '陵县',
+      '灵寿',
+      '灵璧',
+      '临安',
+      '利津',
+      '黎川',
+      '辽中',
+      '连州',
+      '涟水',
+      '连山',
+      '连平',
+      '连南',
+      '廉江',
+      '连江',
+      '莲花',
+      '梁山',
+      '梁平',
+      '连城',
+      '鹿寨',
+      '芦溪',
+      '禄劝',
+      '鹿泉',
+      '罗源',
+      '洛宁',
+      '罗定',
+      '庐江',
+      '陆河',
+      '陆丰',
+      '滦县',
+      '滦南',
+      '栾川',
+      '栾城',
+      '龙游',
+      '龙泉',
+      '龙南',
+      '龙门',
+      '龙口',
+      '龙海',
+      '龙川',
+      '隆安',
+      '溧阳',
+      '利辛',
+      '浏阳',
+      '柳江',
+      '柳城',
+      '溧水'
+    ]
+  },
+  {
+    letter: 'M',
+    list: [
+      '马鞍山',
+      '茂名',
+      '眉山',
+      '梅州',
+      '绵阳',
+      '牡丹江',
+      '马山',
+      '梅县',
+      '蒙城',
+      '孟津',
+      '蒙阴',
+      '孟州',
+      '明光',
+      '明溪',
+      '闽侯',
+      '闽清',
+      '木兰'
+    ]
+  },
+  {
+    letter: 'N',
+    list: [
+      '南昌',
+      '南京',
+      '南宁',
+      '南通',
+      '宁波',
+      '南充',
+      '南平',
+      '南阳',
+      '那曲',
+      '内江',
+      '宁德',
+      '怒江',
+      '南安',
+      '南澳',
+      '南城',
+      '南川',
+      '南丰',
+      '南靖',
+      '南康',
+      '南陵',
+      '南雄',
+      '宁都',
+      '宁国',
+      '宁海',
+      '宁化',
+      '宁津',
+      '宁乡',
+      '宁阳',
+      '农安'
+    ]
+  },
+  {
+    letter: 'P',
+    list: [
+      '盘锦',
+      '攀枝花',
+      '平顶山',
+      '平凉',
+      '萍乡',
+      '普洱',
+      '莆田',
+      '濮阳',
+      '磐安',
+      '磐石',
+      '沛县',
+      '蓬莱',
+      '彭水',
+      '彭泽',
+      '彭州',
+      '平度',
+      '平和',
+      '平湖',
+      '屏南',
+      '平山',
+      '平潭',
+      '平阳',
+      '平阴',
+      '平邑',
+      '平原',
+      '平远',
+      '郫县',
+      '邳州',
+      '鄱阳',
+      '浦城',
+      '浦江',
+      '蒲江',
+      '普兰店',
+      '普宁'
+    ]
+  },
+  {
+    letter: 'Q',
+    list: [
+      '青岛',
+      '泉州',
+      '黔东',
+      '黔南',
+      '黔西南',
+      '庆阳',
+      '清远',
+      '秦皇岛',
+      '钦州',
+      '齐齐哈尔',
+      '七台河',
+      '曲靖',
+      '衢州',
+      '迁安',
+      '潜山',
+      '铅山',
+      '迁西',
+      '启东',
+      '齐河',
+      '綦江',
+      '祁门',
+      '清流',
+      '青田',
+      '清新',
+      '青阳',
+      '庆元',
+      '庆云',
+      '清镇',
+      '青州',
+      '沁阳',
+      '邛崃',
+      '栖霞',
+      '全椒',
+      '曲江',
+      '曲阜',
+      '全南'
+    ]
+  },
+  {
+    letter: 'R',
+    list: [
+      '日喀则',
+      '日照',
+      '饶平',
+      '仁化',
+      '融安',
+      '荣昌',
+      '荣成',
+      '融水',
+      '如东',
+      '如皋',
+      '瑞安',
+      '瑞昌',
+      '瑞金',
+      '乳山',
+      '汝阳',
+      '乳源'
+    ]
+  },
+  {
+    letter: 'S',
+    list: [
+      '上海',
+      '沈阳',
+      '深圳',
+      '石家庄',
+      '苏州',
+      '三门峡',
+      '三明',
+      '三亚',
+      '商丘',
+      '商洛',
+      '上饶',
+      '汕尾',
+      '汕头',
+      '绍兴',
+      '韶关',
+      '山南',
+      '邵阳',
+      '十堰',
+      '双鸭山',
+      '石嘴山',
+      '绥化',
+      '松原',
+      '四平',
+      '朔州',
+      '泗阳',
+      '泗县',
+      '泗水',
+      '四会',
+      '泗洪',
+      '沭阳',
+      '顺昌',
+      '舒兰',
+      '舒城',
+      '双流',
+      '双城',
+      '寿县',
+      '寿宁',
+      '寿光',
+      '石柱',
+      '始兴',
+      '石台',
+      '石狮',
+      '石林',
+      '石城',
+      '射阳',
+      '歙县',
+      '深泽',
+      '莘县',
+      '嵊州',
+      '嵊泗',
+      '沙县',
+      '绍兴',
+      '邵武',
+      '尚志',
+      '上虞',
+      '上犹',
+      '上饶',
+      '上林',
+      '上栗',
+      '商河',
+      '上杭',
+      '上高',
+      '诏安',
+      '三门',
+      '三江',
+      '松阳',
+      '嵩县',
+      '松溪',
+      '嵩明',
+      '宿州',
+      '宿迁',
+      '随州',
+      '遂宁',
+      '宿松',
+      '遂溪',
+      '濉溪',
+      '睢宁',
+      '遂川',
+      '遂昌',
+      '宿豫'
+    ]
+  },
+  {
+    letter: 'T',
+    list: [
+      '天津',
+      '台州',
+      '唐山',
+      '塔城地',
+      '泰安',
+      '太原',
+      '泰州',
+      '天水',
+      '铁岭',
+      '铜川',
+      '通化',
+      '通辽',
+      '铜陵',
+      '铜仁',
+      '通州',
+      '桐乡',
+      '铜山',
+      '潼南',
+      '桐庐',
+      '铜陵',
+      '铜梁',
+      '通河',
+      '铜鼓',
+      '桐城',
+      '天台',
+      '天长',
+      '滕州',
+      '唐海',
+      '郯城',
+      '泰兴',
+      '泰顺',
+      '台山',
+      '泰宁',
+      '太湖',
+      '泰和',
+      '太和',
+      '太仓',
+      '吐鲁番'
+    ]
+  },
+  {
+    letter: 'W',
+    list: [
+      '潍坊',
+      '威海',
+      '武汉',
+      '无锡',
+      '渭南',
+      '文山',
+      '温州',
+      '乌海',
+      '芜湖',
+      '乌兰察布',
+      '乌鲁木齐',
+      '武威',
+      '吴忠',
+      '武陟',
+      '婺源',
+      '武夷山',
+      '武义',
+      '巫溪',
+      '无为',
+      '巫山',
+      '武平',
+      '武宁',
+      '武鸣',
+      '武隆',
+      '五莲',
+      '吴江',
+      '无极',
+      '五华',
+      '芜湖',
+      '五河',
+      '无棣',
+      '吴川',
+      '武城',
+      '五常',
+      '涡阳',
+      '温县',
+      '汶上',
+      '温岭',
+      '翁源',
+      '文登',
+      '文成',
+      '微山',
+      '万载',
+      '万年',
+      '望江',
+      '望城',
+      '万安',
+      '瓦房店',
+      '梧州'
+    ]
+  },
+  {
+    letter: 'X',
+    list: [
+      '厦门',
+      '西安',
+      '许昌',
+      '徐州',
+      '襄樊',
+      '湘潭',
+      '湘西',
+      '咸宁',
+      '咸阳',
+      '孝感',
+      '锡林郭勒盟',
+      '兴安盟',
+      '邢台',
+      '西宁',
+      '新乡',
+      '信阳',
+      '新余',
+      '忻州',
+      '西双版纳',
+      '宣城',
+      '峡江',
+      '夏津',
+      '象山',
+      '响水',
+      '仙居',
+      '仙游',
+      '萧县',
+      '霞浦',
+      '息烽',
+      '新安',
+      '新昌',
+      '信丰',
+      '新丰',
+      '新干',
+      '兴国',
+      '兴化',
+      '兴宁',
+      '行唐',
+      '荥阳',
+      '星子',
+      '辛集',
+      '新建',
+      '新津',
+      '新乐',
+      '新民',
+      '新密',
+      '新泰',
+      '新兴',
+      '新沂',
+      '信宜',
+      '新郑',
+      '休宁',
+      '秀山',
+      '修水',
+      '修文',
+      '修武',
+      '寻甸',
+      '盱眙',
+      '徐闻',
+      '寻乌'
+    ]
+  },
+  {
+    letter: 'Y',
+    list: [
+      '扬州',
+      '烟台',
+      '雅安',
+      '延安',
+      '延边',
+      '盐城',
+      '阳江',
+      '阳泉',
+      '宜宾',
+      '宜昌',
+      '伊春',
+      '宜春',
+      '伊犁哈萨克',
+      '银川',
+      '营口',
+      '鹰潭',
+      '益阳',
+      '永州',
+      '岳阳',
+      '玉林',
+      '榆林',
+      '运城',
+      '云浮',
+      '玉树',
+      '玉溪',
+      '阳春',
+      '阳东',
+      '阳谷',
+      '阳山',
+      '阳信',
+      '阳西',
+      '扬中',
+      '偃师',
+      '延寿',
+      '兖州',
+      '伊川',
+      '宜丰',
+      '宜黄',
+      '依兰',
+      '宜良',
+      '沂南',
+      '英德',
+      '颍上',
+      '沂水',
+      '义乌',
+      '黟县',
+      '宜兴',
+      '弋阳',
+      '宜阳',
+      '沂源',
+      '仪征',
+      '永安',
+      '永川',
+      '永春',
+      '永登',
+      '永定',
+      '永丰',
+      '永吉',
+      '永嘉',
+      '永康',
+      '邕宁',
+      '永泰',
+      '永新',
+      '永修',
+      '尤溪',
+      '酉阳',
+      '元氏',
+      '禹城',
+      '于都',
+      '岳西',
+      '余干',
+      '玉环',
+      '余江',
+      '郁南',
+      '云安',
+      '郓城',
+      '云和',
+      '云霄',
+      '云阳',
+      '玉山',
+      '榆树',
+      '鱼台',
+      '玉田',
+      '余姚',
+      '榆中'
+    ]
+  },
+  {
+    letter: 'Z',
+    list: [
+      '漳州',
+      '遵化',
+      '郑州',
+      '中山',
+      '珠海',
+      '枣庄',
+      '张家界',
+      '张家口',
+      '张掖',
+      '湛江',
+      '肇庆',
+      '昭通',
+      '镇江',
+      '中卫',
+      '周口',
+      '舟山',
+      '驻马店',
+      '株洲',
+      '淄博',
+      '自贡',
+      '资阳',
+      '遵义',
+      '赞皇',
+      '增城',
+      '张家港',
+      '漳平',
+      '漳浦',
+      '章丘',
+      '樟树',
+      '沾化',
+      '赵县',
+      '招远',
+      '正定',
+      '政和',
+      '柘荣',
+      '中牟',
+      '忠县',
+      '周宁',
+      '周至',
+      '庄河',
+      '诸城',
+      '诸暨',
+      '紫金',
+      '资溪',
+      '邹城',
+      '邹平'
+    ]
+  }
+]
+
+export default cityData

+ 268 - 0
js_sdk/lh-select-city/index.nvue

@@ -0,0 +1,268 @@
+<template>
+  <view class="select-city-wrap" :style="'height:'+windowHeight">
+		<!-- 内容 -->
+		<scroll-view
+			class="scroll"
+		  :scroll-into-view="scrollIntoId"
+		  :scroll-y="true"
+		  :scroll-with-animation="true"
+			:show-scrollbar="false"
+			:style="'height:'+windowHeight"
+		>
+			<!-- 当前城市 -->
+			<view style="height:200rpx">
+				<text class="name"  id="current">当前城市</text>
+				<view class="city-item" v-if="city">
+					<view class="city-item-view" >
+						<text class="city-item-text">{{ city }}</text>
+					</view>
+				</view>
+			</view>
+			
+			<!-- 热门城市 -->
+			<text class="name">热门城市</text>
+			<view class="city-item">
+				<view :class=" city== cityname?'city-item-viewa':'city-item-view' " v-for="(cityname, i) in hotCitys" :key="cityname"  @click="onSelect(cityname)">
+					<text :class=" city== cityname?'city-item-texta':'city-item-text' ">{{ cityname }}</text>
+				</view>
+			</view>
+			<view
+			  :id="item.letter"
+			  v-for="item in cityData"
+			  :key="item.letter"
+			>
+				<!-- ABCD -->
+				<text class="letter">{{ item.letter }}</text>
+				<!-- 城市 -->
+				<view class="city-item">
+					<view :class=" city== cityname?'city-item-viewa':'city-item-view' " v-for="(cityname, i) in item.list" :key="cityname"  @click="onSelect(cityname)">
+						<text  :class=" city== cityname?'city-item-texta':'city-item-text' ">{{ cityname }}</text>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+
+		<!-- 右边锚点 -->
+		<view class="anchor" @touchstart="start"  @touchmove="move" @touchend="end" v-if="sliding">
+			<view >
+				<view class="anchor-item" ><text v-if=" slidingChoice == 'current' " class="anchor-text">#</text></view>
+				<view class="anchor-item" v-for="(item,index) in anchorArr" :key="item"  >
+					<text class="anchor-text-position" v-if=" slidingChoice==item ">{{item}}</text>
+				</view>
+			</view>
+			<view >
+				<view class="anchor-item" @click="scrollIntoId='current' "  ><text class="anchor-text">#</text></view>
+				<view class="anchor-item" v-for="(item,index) in anchorArr" :key="item"  @click="scrollIntoId=item" >
+					<text class="anchor-text"  >{{item}}</text>
+				</view>
+			</view>
+		</view>
+		<view class="anchor" v-else>
+			<view >
+				<view class="anchor-item" @click="scrollIntoId='current' "  ><text class="anchor-text">#</text></view>
+				<view class="anchor-item" v-for="(item,index) in anchorArr" :key="item"  @click="scrollIntoId=item" >
+					<text class="anchor-text"  >{{item}}</text>
+				</view>
+			</view>
+		</view>
+		
+		
+  </view>
+</template>
+<script>
+	// hotCitys  热门城市  
+	// value 当前选中城市
+	// windowHeight  scroll的高 也是滑块的高 记得带单位!!! px rpx upx都支持
+	// sliding 是否开始滑动选择 默认开启  false true
+	// @onSelect   点击切换城市事件 参数为城市名称
+import cityData from './cityData.js'
+let anchorArr=["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"];
+export default {
+  props: { 
+    hotCitys: {
+      type: Array,
+      default() {
+        return []
+      }
+    },
+    value: {
+      type: String
+    },
+		windowHeight:{
+			type: String
+		},
+		// 开启滑动选择
+		sliding: {
+			type: Boolean,
+			default: true
+		},
+  },
+  data() {
+    return {
+      cityData,	
+      scrollIntoId: '',
+			city:this.value,
+			anchorArr,
+			// 滑动中选中的具体值
+			slidingChoice:"",
+			//开始滑动位置
+			startY:"",
+			// 滑动中当前选中下标
+			downIndex:-1,
+    }
+  },
+  computed: {
+  },
+	created(){
+	},
+  mounted() {
+  },
+  methods: {
+		// 点击城市
+    onSelect(city) {
+			this.city=city;
+      this.$emit('onSelect', city)
+    },
+		// 开始滑动
+		start(e){
+			// console.log("开始滑动",e);
+			// #ifdef MP
+			let eY=e.changedTouches[0].clientY
+			// #endif
+			// #ifdef APP-PLUS
+			let eY=e.changedTouches[0].screenY
+			// #endif
+			this.startY=eY;
+			// 计算点击时候下标
+			let index=eY/(uni.upx2px(eY)/eY);
+			index=parseInt((index-200)/40)-1;
+			this.downIndex=index;
+		},
+		// 开始移动
+		move(e){
+			// console.log("开始移动",e);
+			// #ifdef MP
+			let downY=e.changedTouches[0].clientY;
+			// #endif
+			// #ifdef APP-PLUS
+			let downY=e.changedTouches[0].screenY;
+			// #endif
+			
+			let gap=this.startY-downY;
+			let index=parseInt(gap/(uni.upx2px(gap)/gap)/40);
+			// 选中下标
+			let optforIndex=this.downIndex-index;
+			if(optforIndex < -1){
+				optforIndex=-1;
+			}else if(optforIndex > 21){
+				optforIndex=21;
+			}
+			this.slidingChoice=this.anchorArr[optforIndex];
+			this.scrollIntoId=this.anchorArr[optforIndex];
+		},
+		// 滑动结束
+		end(e){
+			// console.log("结束滑动",e)
+			this.slidingChoice='';
+		},
+		
+  }
+}
+</script>
+
+<style  scoped>
+.select-city-wrap{
+	overflow: hidden;
+}
+	/* 滑块 */
+.scroll{
+	/* background-color: yellow; */
+}
+.name{
+	color: #333;
+	font-size: 28rpx;
+	margin: 30rpx 30rpx;
+}
+/* 城市 */
+.letter{
+	width: 44rpx;
+	height: 44rpx;
+	color: #fff;
+	border-radius: 22rpx;
+	background-color: #2f9bfe;
+	font-size: 28rpx;
+	line-height: 44rpx;
+	text-align: center;
+	margin-bottom: 30rpx;
+	margin-left: 30rpx;
+}
+.city-item{
+	flex-wrap: wrap;
+	flex-direction: row;
+	margin-left: 20rpx;
+}
+.city-item-view{
+	width: 180rpx;
+	height: 55rpx;
+	margin: 15rpx;
+	border: 1rpx solid #dcdcdc;
+	border-radius: 6rpx;
+	justify-content: center;
+	align-items: center;
+	background-color: #FFFFFF;
+/* 	background-color: #d5ebff;
+	border-color: #2f9bfe; */
+}
+.city-item-viewa{
+	width: 180rpx;
+	height: 55rpx;
+	margin: 15rpx;
+	border: 1rpx solid #2f9bfe;
+	border-radius: 6rpx;
+	justify-content: center;
+	align-items: center;
+	background-color: #d5ebff;
+}
+.city-item-text{
+	color: #999;
+	font-size: 28rpx;
+}
+.city-item-texta{
+	font-size: 28rpx;
+	color: #2f9bfe;
+}
+
+	/* 右锚点 */
+.anchor{
+	/* background-color: pink; */
+	position: fixed;
+	right: 20rpx;
+	top: 200rpx;
+	z-index:10;
+	flex-direction: row;
+}
+
+.anchor-item{
+	align-items: center;
+	flex-direction: row;
+	height: 40rpx;
+	text-align: center;
+}
+
+.anchor-text-position{
+	height: 40rpx;
+	width: 40rpx;
+	text-align: center;
+	line-height: 40rpx;
+	font-size: 32rpx;
+	color: #333;
+	background-color: #E5E5E5;
+	border-radius: 20rpx;
+}
+.anchor-text{
+	font-size: 32rpx;
+	line-height: 40rpx;
+	padding: 0 15rpx;
+	color: #2f9bfe;
+}
+</style>

+ 13 - 0
js_sdk/lh-select-city/package.json

@@ -0,0 +1,13 @@
+{
+    "id": "lh-select-city",
+    "name": "城市选择 (支持nvue)",
+    "version": "1.1",
+    "description": "uni-app城市选择插件 支持nvue",
+    "keywords": [
+        "nvue",
+        "城市",
+        "城市选择",
+        "选择城市",
+        "选择市"
+    ]
+}

+ 51 - 0
main.js

@@ -0,0 +1,51 @@
+import App from './App'
+import Vue from 'vue'
+import uView from "uview-ui";
+
+import axios from 'axios'
+
+import { VueJsonp } from 'vue-jsonp'
+Vue.use(VueJsonp)
+
+import infiniteScroll from "vue-infinite-scroll";
+ Vue.use(infiniteScroll);
+
+// 定义全局变量————图片前缀
+Vue.prototype.$globalData = {
+  // publicUrl: 'https://test.baoxianzhanggui.com/nightFragrance'
+	publicUrl: 'https://city.baoxianzhanggui.com/nightFragrance'
+}
+
+Vue.use(uView);
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+  ...App
+})
+app.$mount()
+
+// // #ifndef VUE3
+// import Vue from 'vue'
+// import uView from "./node_modules/uview-ui";
+// Vue.use(uView);
+// import './uni.promisify.adaptor'
+// Vue.config.productionTip = false
+// App.mpType = 'app'
+// const app = new Vue({
+//   ...App
+// })
+// app.$mount()
+// // #endif
+
+// // #ifdef VUE3
+// import { createSSRApp } from 'vue'
+// import uView from "./node_modules/uview-ui";
+// Vue.use(uView);
+// export function createApp() {
+//   const app = createSSRApp(App)
+//   return {
+//     app
+//   }
+// }
+// // #endif

+ 128 - 0
manifest.json

@@ -0,0 +1,128 @@
+{
+    "name" : "yelaixiang-h5",
+    "appid" : "__UNI__F9027B9",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {
+            "Geolocation" : {},
+            "OAuth" : {},
+            "Payment" : {},
+            "Maps" : {}
+        },
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {
+                "privacyDescription" : {
+                    "NSLocationAlwaysAndWhenInUseUsageDescription" : "该应用需要持续获取用户地理位置,以便为你提供当前地区的服务",
+                    "NSLocationWhenInUseUsageDescription" : "",
+                    "NSLocationAlwaysUsageDescription" : ""
+                }
+            },
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "maps" : {},
+                "geolocation" : {
+                    "system" : {
+                        "__platform__" : [ "ios", "android" ]
+                    }
+                },
+                "oauth" : {
+                    "weixin" : {
+                        "appid" : "wxa72f643173a90106",
+                        "UniversalLinks" : ""
+                    }
+                },
+                "payment" : {
+                    "weixin" : {
+                        "__platform__" : [ "ios", "android" ],
+                        "appid" : "wxa72f643173a90106",
+                        "UniversalLinks" : ""
+                    }
+                }
+            }
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wxa72f643173a90106",
+        "setting" : {
+            "urlCheck" : false,
+            "es6" : true
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : ""
+            }
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2",
+    "h5" : {
+        "router" : {
+            "base" : "./",
+            "mode" : "hash"
+        },
+        "devServer" : {
+            "port" : 80,
+            "https" : true
+        },
+        "sdkConfigs" : {
+            "maps" : {
+                "amap" : {
+                    "key" : "5df9445f578191c7d4fd5f3ce6b8712c",
+                    "securityJsCode" : "b5c2691e1ffcf58a735e502081ae781f",
+                    "serviceHost" : ""
+                }
+            }
+        }
+    }
+}

+ 15 - 0
node_modules/.bin/color-support

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../color-support/bin.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../color-support/bin.js" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/color-support.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\color-support\bin.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/color-support.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../color-support/bin.js" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../color-support/bin.js" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/mkdirp

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/mkdirp.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\mkdirp\bin\cmd.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/mkdirp.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/node-gyp

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../node-gyp/bin/node-gyp.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../node-gyp/bin/node-gyp.js" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/node-gyp.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\node-gyp\bin\node-gyp.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/node-gyp.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/node-sass

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../node-sass/bin/node-sass" "$@"
+  ret=$?
+else 
+  node  "$basedir/../node-sass/bin/node-sass" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/node-sass.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\node-sass\bin\node-sass" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/node-sass.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../node-sass/bin/node-sass" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../node-sass/bin/node-sass" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/node-which

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../which/bin/node-which" "$@"
+  ret=$?
+else 
+  node  "$basedir/../which/bin/node-which" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/node-which.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\which\bin\node-which" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/node-which.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../which/bin/node-which" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/nopt

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../nopt/bin/nopt.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../nopt/bin/nopt.js" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/nopt.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\nopt\bin\nopt.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/nopt.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../nopt/bin/nopt.js" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../nopt/bin/nopt.js" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/resolve

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../resolve/bin/resolve" "$@"
+  ret=$?
+else 
+  node  "$basedir/../resolve/bin/resolve" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/resolve.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\resolve\bin\resolve" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/resolve.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../resolve/bin/resolve" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../resolve/bin/resolve" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/rimraf

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../rimraf/bin.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../rimraf/bin.js" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/rimraf.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\rimraf\bin.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/rimraf.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../rimraf/bin.js" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/sassgraph

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../sass-graph/bin/sassgraph" "$@"
+  ret=$?
+else 
+  node  "$basedir/../sass-graph/bin/sassgraph" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/sassgraph.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\sass-graph\bin\sassgraph" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/sassgraph.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../sass-graph/bin/sassgraph" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../sass-graph/bin/sassgraph" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 15 - 0
node_modules/.bin/semver

@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
+else 
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
+fi
+exit $ret

+ 17 - 0
node_modules/.bin/semver.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b

+ 18 - 0
node_modules/.bin/semver.ps1

@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
+  $ret=$LASTEXITCODE
+} else {
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 4 - 0
node_modules/@amap/amap-jsapi-loader/.vscode/settings.json

@@ -0,0 +1,4 @@
+{
+  "editor.tabSize": 4,
+  "prettier.tabWidth": 4
+}

+ 111 - 0
node_modules/@amap/amap-jsapi-loader/README.md

@@ -0,0 +1,111 @@
+# amap-jsapi-loader
+amap-jsapi-loader 是高德开放平台官网提供的地图 JSAPI 的加载器,可帮助开发者快速定位、有效避免加载引用地图 JSAPI 各种错误用法。
+
+
+该加载器具有以下特性:
+* 支持以 普通JS 和 npm包 两种方式使用;
+* 有效避免错误异步加载导致的 JSAPI 资源加载不完整问题;
+* 对于加载混用多个版本 JSAPI 的错误用法给予报错处理;
+* 对于不合法加载引用 JSAPI 给予报错处理;
+* 支持指定 JSAPI 版本;
+* 支持插件加载;
+* 允许多次执行加载操作,网络资源不会重复请求,便于大型工程模块管理;
+
+
+# USAGE
+
+## AMapLoader.load方法参数说明
+```js
+AMapLoader.load({
+    "key": "",              // 申请好的Web端开发者Key,首次调用 load 时必填
+    "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+    "plugins": []           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+    "AMapUI": {             // 是否加载 AMapUI,缺省不加载
+        "version": '1.1',   // AMapUI 缺省 1.1
+        "plugins":[],       // 需要加载的 AMapUI ui插件
+    },
+    "Loca":{                // 是否加载 Loca, 缺省不加载
+        "version": '1.3.2'  // Loca 版本,缺省 1.3.2
+    },
+}).then(()=>{
+    window.AMap.xx;
+    window.AMapUI.xx;
+    window.Loca.xx
+});
+
+```
+
+## AMapUI
+
+AMapUI 用法和官网有一点点区别。通过 AMapUI.xx 来获取组件
+```js
+AMapLoader.load({
+    key: '',//首次load必填
+    version: '2.0',
+    AMapUI: {
+        version: '1.1',
+        plugins: ['overlay/SimpleMarker'],
+    }
+}).then((AMap) => {
+    map = new AMap.Map('container');
+
+    // !!! 通过 AMap.SimpleMarker 获取组件
+    new AMapUI.SimpleMarker({
+        //前景文字
+        iconLabel: 'A',
+        //图标主题
+        iconTheme: 'default',
+        //背景图标样式
+        iconStyle: 'red',
+        map: map,
+        position: map.getCenter()
+    });
+}).catch((e) => {
+    console.error(e);
+});
+```
+
+
+# 使用
+#### 以普通 JS 方式使用 Loader
+尚未发布在线Loader,可将 dist/index.js 复制到项目下
+```
+<script src="../dist/index.js"></script>
+<script>
+    AMapLoader.load({
+        key:'',//首次load必填
+        version:'2.0',
+        plugins:['AMap.Scale']
+    }).then((AMap)=>{
+        map = new AMap.Map('container');
+        map.addControl(new AMap.Scale())
+    }).catch((e)=>{
+        console.error(e);
+    });   
+</script>
+```
+#### 以 NPM 包方式使用 Loader
+安装
+```
+tnpm i @alife/amap-jsapi-loader --save-dev
+```
+使用
+```
+import AMapLoader from '@alife/amap-jsapi-loader';
+
+AMapLoader.load().then((AMap)=>{
+    map = new AMap.Map('container');
+}).catch(e=>{
+    console.log(e);
+})
+
+```
+
+# 相关链接:
+地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;图 JSAPI:  &nbsp;&nbsp;[示例中心](https://lbs.amap.com/demo-center/js-api)&nbsp;&nbsp;&nbsp;&nbsp;[教程](https://lbs.amap.com/api/javascript-api/summary)&nbsp;&nbsp;&nbsp;&nbsp;[参考手册](https://lbs.amap.com/api/javascript-api/reference/map)
+
+
+
+数据可视化 JSAPI:  &nbsp;&nbsp;[示例中心](https://lbs.amap.com/demo-center/loca-api)&nbsp;&nbsp;&nbsp;&nbsp;[教程](https://lbs.amap.com/api/loca-api/prod_intro)&nbsp;&nbsp;&nbsp;&nbsp;[参考手册](https://lbs.amap.com/api/loca-api/guide/baselayer)
+
+

+ 11 - 0
node_modules/@amap/amap-jsapi-loader/dist/index.js

@@ -0,0 +1,11 @@
+'use strict';(function(m,p){"object"===typeof exports&&"undefined"!==typeof module?module.exports=p():"function"===typeof define&&define.amd?define(p):(m=m||self,m.AMapLoader=p())})(this,function(){function m(a){var b=[];a.AMapUI&&b.push(p(a.AMapUI));a.Loca&&b.push(r(a.Loca));return Promise.all(b)}function p(a){return new Promise(function(h,c){var f=[];if(a.plugins)for(var e=0;e<a.plugins.length;e+=1)-1==d.AMapUI.plugins.indexOf(a.plugins[e])&&f.push(a.plugins[e]);if(g.AMapUI===b.failed)c("\u524d\u6b21\u8bf7\u6c42 AMapUI \u5931\u8d25");
+else if(g.AMapUI===b.notload){g.AMapUI=b.loading;d.AMapUI.version=a.version||d.AMapUI.version;e=d.AMapUI.version;var l=document.body||document.head,k=document.createElement("script");k.type="text/javascript";k.src="https://webapi.amap.com/ui/"+e+"/main.js";k.onerror=function(a){g.AMapUI=b.failed;c("\u8bf7\u6c42 AMapUI \u5931\u8d25")};k.onload=function(){g.AMapUI=b.loaded;if(f.length)window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split("/").slice(-1)[0];window.AMapUI[c]=
+arguments[a]}for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()});else for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()};l.appendChild(k)}else g.AMapUI===b.loaded?a.version&&a.version!==d.AMapUI.version?c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c AMapUI \u6df7\u7528"):f.length?window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split("/").slice(-1)[0];window.AMapUI[c]=arguments[a]}h()}):h():a.version&&a.version!==d.AMapUI.version?c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c AMapUI \u6df7\u7528"):
+n.AMapUI.push(function(a){a?c(a):f.length?window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split("/").slice(-1)[0];window.AMapUI[c]=arguments[a]}h()}):h()})})}function r(a){return new Promise(function(h,c){if(g.Loca===b.failed)c("\u524d\u6b21\u8bf7\u6c42 Loca \u5931\u8d25");else if(g.Loca===b.notload){g.Loca=b.loading;d.Loca.version=a.version||d.Loca.version;var f=d.Loca.version,e=d.AMap.version.startsWith("2"),l=f.startsWith("2");if(e&&!l||!e&&l)c("JSAPI \u4e0e Loca \u7248\u672c\u4e0d\u5bf9\u5e94\uff01\uff01");
+else{e=d.key;l=document.body||document.head;var k=document.createElement("script");k.type="text/javascript";k.src="https://webapi.amap.com/loca?v="+f+"&key="+e;k.onerror=function(a){g.Loca=b.failed;c("\u8bf7\u6c42 AMapUI \u5931\u8d25")};k.onload=function(){g.Loca=b.loaded;for(h();n.Loca.length;)n.Loca.splice(0,1)[0]()};l.appendChild(k)}}else g.Loca===b.loaded?a.version&&a.version!==d.Loca.version?c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c Loca \u6df7\u7528"):h():a.version&&a.version!==d.Loca.version?
+c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c Loca \u6df7\u7528"):n.Loca.push(function(a){a?c(a):c()})})}if(!window)throw Error("AMap JSAPI can only be used in Browser.");var b;(function(a){a.notload="notload";a.loading="loading";a.loaded="loaded";a.failed="failed"})(b||(b={}));var d={key:"",AMap:{version:"1.4.15",plugins:[]},AMapUI:{version:"1.1",plugins:[]},Loca:{version:"1.3.2"}},g={AMap:b.notload,AMapUI:b.notload,Loca:b.notload},n={AMap:[],AMapUI:[],Loca:[]},q=[],t=function(a){"function"==typeof a&&
+(g.AMap===b.loaded?a(window.AMap):q.push(a))};return{load:function(a){return new Promise(function(h,c){if(g.AMap==b.failed)c("");else if(g.AMap==b.notload){var f=a.key,e=a.version,l=a.plugins;f?(window.AMap&&"lbs.amap.com"!==location.host&&c("\u7981\u6b62\u591a\u79cdAPI\u52a0\u8f7d\u65b9\u5f0f\u6df7\u7528"),d.key=f,d.AMap.version=e||d.AMap.version,d.AMap.plugins=l||d.AMap.plugins,g.AMap=b.loading,e=document.body||document.head,window.___onAPILoaded=function(d){delete window.___onAPILoaded;if(d)g.AMap=
+b.failed,c(d);else for(g.AMap=b.loaded,m(a).then(function(){h(window.AMap)})["catch"](c);q.length;)q.splice(0,1)[0]()},l=document.createElement("script"),l.type="text/javascript",l.src="https://webapi.amap.com/maps?callback=___onAPILoaded&v="+d.AMap.version+"&key="+f+"&plugin="+d.AMap.plugins.join(","),l.onerror=function(a){g.AMap=b.failed;c(a)},e.appendChild(l)):c("\u8bf7\u586b\u5199key")}else if(g.AMap==b.loaded)if(a.key&&a.key!==d.key)c("\u591a\u4e2a\u4e0d\u4e00\u81f4\u7684 key");else if(a.version&&
+a.version!==d.AMap.version)c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c JSAPI \u6df7\u7528");else{f=[];if(a.plugins)for(e=0;e<a.plugins.length;e+=1)-1==d.AMap.plugins.indexOf(a.plugins[e])&&f.push(a.plugins[e]);if(f.length)window.AMap.plugin(f,function(){m(a).then(function(){h(window.AMap)})["catch"](c)});else m(a).then(function(){h(window.AMap)})["catch"](c)}else if(a.key&&a.key!==d.key)c("\u591a\u4e2a\u4e0d\u4e00\u81f4\u7684 key");else if(a.version&&a.version!==d.AMap.version)c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c JSAPI \u6df7\u7528");
+else{var k=[];if(a.plugins)for(e=0;e<a.plugins.length;e+=1)-1==d.AMap.plugins.indexOf(a.plugins[e])&&k.push(a.plugins[e]);t(function(){if(k.length)window.AMap.plugin(k,function(){m(a).then(function(){h(window.AMap)})["catch"](c)});else m(a).then(function(){h(window.AMap)})["catch"](c)})}})},reset:function(){delete window.AMap;delete window.AMapUI;delete window.Loca;d={key:"",AMap:{version:"1.4.15",plugins:[]},AMapUI:{version:"1.1",plugins:[]},Loca:{version:"1.3.2"}};g={AMap:b.notload,AMapUI:b.notload,
+Loca:b.notload};n={AMap:[],AMapUI:[],Loca:[]}}}})

+ 69 - 0
node_modules/@amap/amap-jsapi-loader/example/AMapUI.html

@@ -0,0 +1,69 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>JSAPI Loader</title>
+    <style>
+        html,
+        body,
+        #container {
+            height: 100%;
+            width: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="container" tabindex="0"></div>
+
+    <script src="../dist/index.js"></script>
+    <script>
+        AMapLoader.load({
+            key: '',//首次load必填
+            version: '2.0Beta',
+            plugins: ['AMap.Scale'],
+            AMapUI: {
+                plugins: ['overlay/SimpleMarker'],
+            }
+        }).then((AMap) => {
+            map = new AMap.Map('container');
+            map.addControl(new AMap.Scale());
+            new AMapUI.SimpleMarker({
+
+                //前景文字
+                iconLabel: 'A',
+
+                //图标主题
+                iconTheme: 'default',
+
+                //背景图标样式
+                iconStyle: 'red',
+
+                //...其他Marker选项...,不包括content
+                map: map,
+                position: map.getCenter()
+            });
+        }).catch((e) => {
+            console.error(e);
+        });
+        setTimeout(function () {
+            AMapLoader.load({
+                plugins: ['AMap.MapType']
+            }).then((AMap) => {
+                map.addControl(new AMap.MapType())
+            }).catch((e) => {
+                console.error(e);
+            });
+        }, 5000);
+
+    </script>
+
+
+    </script>
+</body>
+
+</html>

+ 76 - 0
node_modules/@amap/amap-jsapi-loader/example/Loca.html

@@ -0,0 +1,76 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>JSAPI Loader</title>
+    <style>
+        html,
+        body,
+        #container {
+            height: 100%;
+            width: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="container" tabindex="0"></div>
+    <script src="https://a.amap.com/Loca/static/mock/districts.js"></script>
+    <script src="../dist/index.js"></script>
+    <script>
+        AMapLoader.load({
+            key: 'd3c5511c8a102496b1fdb985e6ca1cd7',//首次load必填
+            // version: '2.0',
+            Loca: {
+                version: '2.0.0beta'
+            }
+        }).then((AMap) => {
+            var map = new AMap.Map('container', {
+                zoom: 4,
+                center: [107.4976, 32.1697],
+                features: ['bg', 'road'],
+                // Loca 自 1.2.0 起 viewMode 模式默认为 3D,如需 2D 模式,请显示配置。
+                // viewMode: '3D'
+            });
+
+            var layer = new Loca.PointLayer({
+                map: map
+            });
+
+            layer.setData(districts, {
+                // 指定经纬度所在字段
+                lnglat: 'center'
+            });
+
+            layer.setOptions({
+                style: {
+                    // 圆形半径,单位像素
+                    radius: 5,
+                    // 填充颜色
+                    color: '#07E8E4',
+                    // 描边颜色
+                    borderColor: '#5DFBF9',
+                    // 描边宽度,单位像素
+                    borderWidth: 1,
+                    // 透明度 [0-1]
+                    opacity: 0.9,
+                }
+            });
+
+            layer.render();
+
+        }).catch((e) => {
+            console.error(e);
+        });
+
+    </script>
+
+
+    </script>
+</body>
+
+</html>

+ 94 - 0
node_modules/@amap/amap-jsapi-loader/example/Multi.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>JSAPI Loader</title>
+    <style>
+        html,
+        body,
+        #container {
+            height: 100%;
+            width: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="container" tabindex="0"></div>
+    <script src="https://a.amap.com/Loca/static/mock/districts.js"></script>
+    <script src="../dist/index.js"></script>
+    <script>
+        AMapLoader.load({
+            key: '',//首次load必填
+            version: '1.4.15',
+            AMapUI: {
+                plugins: ['overlay/SimpleMarker'],
+            },
+            Loca: {
+                version: '1.3.2'
+            }
+        }).then((AMap) => {
+            var map = new AMap.Map('container', {
+                zoom: 4,
+                center: [107.4976, 32.1697],
+                features: ['bg', 'road'],
+                // Loca 自 1.2.0 起 viewMode 模式默认为 3D,如需 2D 模式,请显示配置。
+                // viewMode: '3D'
+            });
+
+            new AMapUI.SimpleMarker({
+
+                //前景文字
+                iconLabel: 'A',
+
+                //图标主题
+                iconTheme: 'default',
+
+                //背景图标样式
+                iconStyle: 'red',
+
+                //...其他Marker选项...,不包括content
+                map: map,
+                position: map.getCenter()
+            });
+            var layer = new Loca.PointLayer({
+                map: map
+            });
+
+            layer.setData(districts, {
+                // 指定经纬度所在字段
+                lnglat: 'center'
+            });
+
+            layer.setOptions({
+                style: {
+                    // 圆形半径,单位像素
+                    radius: 5,
+                    // 填充颜色
+                    color: '#07E8E4',
+                    // 描边颜色
+                    borderColor: '#5DFBF9',
+                    // 描边宽度,单位像素
+                    borderWidth: 1,
+                    // 透明度 [0-1]
+                    opacity: 0.9,
+                }
+            });
+
+            layer.render();
+
+        }).catch((e) => {
+            console.error(e);
+        });
+
+    </script>
+
+
+    </script>
+</body>
+
+</html>

+ 36 - 0
node_modules/@amap/amap-jsapi-loader/example/example-es6.html

@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>JSAPI Loader - ES6</title>
+    <style>
+        html, body, #container {
+            height: 100%;
+            width: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+<body>
+<div id="container" tabindex="0"></div>
+<script type="module">
+    import AMapLoader from '../src/index.js';
+    AMapLoader.load({
+        key:'',//必填
+        version:'2.0',
+        plugins:['AMap.Scale']
+    }).then((AMap)=>{
+        debugger
+        var map = new AMap.Map('container');
+        map.addControl(new AMap.Scale())
+    }).catch((e)=>{
+        console.error(e);
+    });
+</script>
+
+
+</script>
+</body>
+</html>

+ 46 - 0
node_modules/@amap/amap-jsapi-loader/example/example.html

@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>AMap JSAPI Loader</title>
+    <style>
+        html, body, #container {
+            height: 100%;
+            width: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+<body>
+<div id="container" tabindex="0"></div>
+
+<script src="https://webapi.amap.com/loader.js"></script>
+<script>
+    AMapLoader.load({ //首次调用 load
+        key:'你申请的高德开放平台 Web 端 key',//首次load key为必填
+        version:'2.0',
+        plugins:['AMap.Scale','AMap.ToolBar']
+    }).then((AMap)=>{
+        map = new AMap.Map('container');
+        map.addControl(new AMap.Scale())
+        map.addControl(new AMap.ToolBar())
+        map.add(new AMap.Marker({
+            position:map.getCenter()
+        }));
+    }).catch((e)=>{
+        console.error(e);
+    });
+   
+    AMapLoader.load({ //可多次调用load
+        plugins:['AMap.MapType']
+    }).then((AMap)=>{
+        map.addControl(new AMap.MapType())
+    }).catch((e)=>{
+        console.error(e);
+    });
+   
+</script>
+</body>
+</html>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/@amap/amap-jsapi-loader/example/libs/chai.min.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/@amap/amap-jsapi-loader/example/libs/mocha.min.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
node_modules/@amap/amap-jsapi-loader/example/libs/mocha.min.js


+ 287 - 0
node_modules/@amap/amap-jsapi-loader/example/test.html

@@ -0,0 +1,287 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
+    <title>JSAPI Loader</title>
+    <style>
+        html,
+        body,
+        #container {
+            height: 100%;
+            width: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="mocha"></div>
+
+    <link rel="stylesheet" href="./libs/mocha.min.css" />
+    <script src="./libs/chai.min.js"></script>
+    <script src="./libs/mocha.min.js"></script>
+
+    <script>
+        mocha.setup('bdd');
+        mocha.traceIgnores = ['mocha.min.js', 'chai.min.js'];
+        expect = chai.expect;
+    </script>
+    <div id="container" tabindex="0"></div>
+
+    <script src="../dist/index.js"></script>
+    <script>
+        // 请把 key 写在这里
+        const JSAPIKey = '';
+        const chai = window.chai;
+        const mocha = window.mocha;
+        mocha.setup({
+            timeout: '5000',
+            ui: 'bdd',
+        });
+        const expect = chai.expect;
+        describe('JSAPI', () => {
+            beforeEach(function () {
+                AMapLoader.reset()
+            });
+
+            it('Simple', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '2.0',
+                    plugins: ['AMap.Scale'],
+                    AMapUI: {
+                        plugins: ['overlay/SimpleMarker']
+                    }
+                }).then(() => {
+                    expect(Boolean(window.AMap)).eq(true)
+                    expect(Boolean(window.AMapUI)).eq(true)
+                    expect(Boolean(window.AMapUI.SimpleMarker)).eq(true)
+                    expect(Boolean(window.Loca)).eq(false)
+                    done();
+                });
+
+            });
+            it('Request with AMapUI Loca', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '1.4.15',
+                    plugins: ['AMap.Scale'],
+                    AMapUI: {
+                        plugins: ['overlay/SimpleMarker']
+                    },
+                    Loca: {
+                        version: '1.3.2'
+                    }
+                }).then(() => {
+                    expect(Boolean(window.AMap)).eq(true)
+                    expect(Boolean(window.AMapUI)).eq(true)
+                    expect(Boolean(window.AMapUI.SimpleMarker)).eq(true)
+
+                    expect(Boolean(window.Loca)).eq(true)
+                    done();
+                });
+
+            });
+            it('fail with multi version', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '2.0',
+                }).then(() => {
+                    done()
+                });
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '1.4.15',
+                }).then(() => {
+                    done(Error('should not here'))
+                })
+                    .catch(err => {
+                        try {
+                            expect(err).eq('不允许多个版本 JSAPI 混用')
+
+                        } catch (error) {
+                            done(error)
+                        }
+                    })
+
+            });
+            it('fail with multi key', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '2.0',
+                }).then(() => {
+                    done()
+                });
+                AMapLoader.load({
+                    key: 'asdfas',//首次load必填
+                }).then(() => {
+                    done(Error('should not here'))
+                })
+                    .catch(err => {
+                        try {
+                            expect(err).eq('多个不一致的 key')
+
+                        } catch (error) {
+                            done(error)
+                        }
+                    })
+
+            });
+        })
+
+
+        describe('AMapUI', () => {
+            beforeEach(function () {
+                AMapLoader.reset()
+            });
+
+            it('version', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '1.4.15',
+                    AMapUI: {
+                        version: '1.1',
+                        plugins: ['misc/PathSimplifier']
+                    }
+                }).then(() => {
+                    expect(Boolean(window.AMap)).eq(true)
+                    expect(Boolean(window.AMapUI)).eq(true)
+                    expect(Boolean(window.AMapUI.PathSimplifier)).eq(true)
+                    expect(Boolean(window.AMapUI.version.startsWith('1.1'))).eq(true)
+                    done();
+                }).catch(done);
+            });
+
+            it('async', (done) => {
+                console.log(window.AMap);
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '1.4.15',
+                    AMapUI: {
+                        version: '1.0',
+                        plugins: ['overlay/SimpleMarker']
+                    }
+                }).then(() => {
+                    AMapLoader.load({
+                        AMapUI: {
+                            plugins: ['overlay/SimpleInfoWindow']
+                        }
+                    }).then(() => {
+                        expect(Boolean(window.AMap)).eq(true)
+                        expect(Boolean(window.AMapUI.version.startsWith('1.0'))).eq(true)
+                        expect(Boolean(window.AMapUI.SimpleMarker)).eq(true)
+                        expect(Boolean(window.AMapUI.SimpleInfoWindow)).eq(true)
+                        done()
+                    });
+                }).catch(done);
+            })
+        });
+
+        describe('Loca', () => {
+            beforeEach(function () {
+                AMapLoader.reset()
+            });
+
+            it('version', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '1.4.15',
+                    Loca: {
+                        version: '1.3.1'
+                    }
+                }).then(() => {
+                    expect(Boolean(window.AMap)).eq(true)
+                    expect(Boolean(window.Loca)).eq(true)
+                    expect(window.Loca.version).eq('1.3.1')
+                    done()
+                }).catch(done);
+            });
+            it('fail with jsapi2.0', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '2.0',
+                    Loca: {
+                        version: '1.3.1'
+                    }
+                }).then(() => {
+                    done(Error('should not here'))
+                }).catch(err => {
+                    try {
+                        expect(err).eq("Loca 暂不适配 JSAPI 2.0,请使用 1.4.15")
+                        done()
+                    } catch (error) {
+                        done(error)
+                    }
+                });
+            });
+
+
+            it('async', (done) => {
+                AMapLoader.load({
+                    key: JSAPIKey,//首次load必填
+                    version: '1.4.15',
+                    Loca: {
+                        version: '1.2.1'
+                    }
+                }).then(() => {
+                    expect(Boolean(window.AMap)).eq(true)
+                    expect(Boolean(window.Loca)).eq(true)
+                    expect(window.Loca.version).eq('1.2.1')
+                    AMapLoader.load({
+                        Loca: {
+                            version: '1.2.1'
+                        }
+                    }).then(() => {
+                        expect(Boolean(window.AMap)).eq(true)
+                        expect(Boolean(window.Loca)).eq(true)
+                        expect(window.Loca.version).eq('1.2.1')
+                        done()
+                    }).catch(done);
+
+                });
+            })
+        });
+
+
+        describe('Advance', () => {
+            beforeEach(function () {
+                AMapLoader.reset()
+            });
+            it('Multi', (done) => {
+                AMapLoader.load({ key: JSAPIKey, version: '1.4.15' }).then(() => {
+                    expect(Boolean(window.AMap)).eq(true);
+                    expect(window.AMap.v).eq('1.4.15');
+
+                    expect(Boolean(window.AMapUI)).eq(false);
+                    expect(Boolean(window.Loca)).eq(false);
+                    AMapLoader.load({ AMapUI: {} }).then(() => {
+                        expect(Boolean(window.AMap)).eq(true);
+                        expect(window.AMap.v).eq('1.4.15');
+
+                        expect(Boolean(window.AMapUI)).eq(true);
+                        expect(window.AMapUI.version.startsWith('1.1')).eq(true);
+                        expect(Boolean(window.Loca)).eq(false);
+                        AMapLoader.load({ Loca: {} }).then(() => {
+                            expect(Boolean(window.AMap)).eq(true);
+                            expect(window.AMap.v).eq('1.4.15');
+                            expect(Boolean(window.AMapUI)).eq(true);
+                            expect(window.AMapUI.version.startsWith('1.1')).eq(true);
+                            expect(Boolean(window.Loca)).eq(true);
+                            expect(window.Loca.version).eq('1.3.2');
+                            done()
+                        })
+                    })
+                }).catch(done)
+            })
+        })
+        mocha.run()
+    </script>
+
+
+    </script>
+</body>
+
+</html>

+ 15 - 0
node_modules/@amap/amap-jsapi-loader/index.d.ts

@@ -0,0 +1,15 @@
+declare var load: (options: {
+    key: string; // 申请好的Web端开发者Key,首次调用 load 时必填
+    version: string; // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+    plugins?: string[]; //插件列表
+    // 是否加载 AMapUI,缺省不加载
+    AMapUI?: {
+        version?: string; // AMapUI 缺省 1.1
+        plugins?: string[]; // 需要加载的 AMapUI ui插件
+    };
+    // 是否加载 Loca, 缺省不加载
+    Loca?: {
+        version?: string; // Loca 版本,缺省 1.3.2
+    };
+}) => Promise<any>;
+export { load };

+ 66 - 0
node_modules/@amap/amap-jsapi-loader/package.json

@@ -0,0 +1,66 @@
+{
+  "_from": "@amap/amap-jsapi-loader",
+  "_id": "@amap/amap-jsapi-loader@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==",
+  "_location": "/@amap/amap-jsapi-loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "@amap/amap-jsapi-loader",
+    "name": "@amap/amap-jsapi-loader",
+    "escapedName": "@amap%2famap-jsapi-loader",
+    "scope": "@amap",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
+  "_shasum": "9ec4b4d5d2467eac451f6c852e35db69e9f9f0c0",
+  "_spec": "@amap/amap-jsapi-loader",
+  "_where": "D:\\Desktop\\yelaixiangApp\\yelaixiang-h5",
+  "author": {
+    "name": "mengmeng.du@alibaba-inc.com"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "高德官网提供的地图JSAPI加载器,可以避免多种异步加载API的错误用法",
+  "devDependencies": {
+    "@ampproject/rollup-plugin-closure-compiler": "^0.23.0",
+    "@babel/core": "^7.8.7",
+    "@babel/preset-env": "^7.8.7",
+    "rollup": "^1.32.0",
+    "rollup-plugin-babel": "^4.3.3",
+    "rollup-plugin-server": "^0.7.0",
+    "rollup-plugin-typescript2": "^0.27.1",
+    "typescript": "^3.9.7"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "keywords": [
+    "amap",
+    "jsapi",
+    "sdk",
+    "loader",
+    "地图",
+    "高德"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "@amap/amap-jsapi-loader",
+  "repository": {
+    "type": "git",
+    "url": "git@gitlab.alibaba-inc.com:amap-web/amap-jsapi-loader.git"
+  },
+  "scripts": {
+    "build": "rollup -c rollup.config.js"
+  },
+  "types": "index.d.ts",
+  "version": "1.0.1"
+}

+ 25 - 0
node_modules/@amap/amap-jsapi-loader/rollup.config.js

@@ -0,0 +1,25 @@
+import server from "rollup-plugin-server";
+import babel from "rollup-plugin-babel";
+import compiler from "@ampproject/rollup-plugin-closure-compiler";
+import rollupTypescript from 'rollup-plugin-typescript2';
+
+export default {
+    input: "src/index.ts",
+    output: {
+        file: "dist/index.js",
+        format: "umd",
+        name: "AMapLoader",
+    },
+    plugins: [
+        rollupTypescript(),
+        babel({
+            presets: [["@babel/env", { targets: { ie: 9 } }]],
+        }),
+        compiler(),
+        server({
+            contentBase: "./",
+            host: "127.0.0.1",
+            port: 3601,
+        }),
+    ],
+};

+ 5 - 0
node_modules/@amap/amap-jsapi-loader/src/global.d.ts

@@ -0,0 +1,5 @@
+declare var AMap: any;
+declare var AMapUI: any;
+declare var Loca: any;
+
+declare var ___onAPILoaded: any;

+ 367 - 0
node_modules/@amap/amap-jsapi-loader/src/index.ts

@@ -0,0 +1,367 @@
+if (!window) {
+    throw Error("AMap JSAPI can only be used in Browser.");
+}
+enum LoadStatus {
+    notload = "notload",
+    loading = "loading",
+    loaded = "loaded",
+    failed = "failed",
+}
+let config = {
+    key: "",
+    AMap: {
+        version: "1.4.15",
+        plugins: [],
+    },
+    AMapUI: {
+        version: "1.1",
+        plugins: [],
+    },
+    Loca: {
+        version: "1.3.2",
+    },
+};
+
+let Status = {
+    AMap: LoadStatus.notload,
+    AMapUI: LoadStatus.notload,
+    Loca: LoadStatus.notload,
+};
+let Callback = {
+    AMap: [],
+    AMapUI: [],
+    Loca: [],
+};
+
+let onloadCBKs = [];
+const onload = function (callback) {
+    if (typeof callback == "function") {
+        if (Status.AMap === LoadStatus.loaded) {
+            callback(window.AMap);
+            return;
+        }
+        onloadCBKs.push(callback);
+    }
+};
+
+interface LoadOption {
+    key: string;
+    version?: string;
+    plugins?: string[];
+    AMapUI?: {
+        version?: string;
+        plugins?: string[];
+    };
+    Loca?: {
+        version?: string;
+    };
+}
+function appendOther(option: LoadOption): Promise<any> {
+    let pros: Promise<void>[] = [];
+    if (option.AMapUI) {
+        pros.push(loadAMapUI(option.AMapUI));
+    }
+    if (option.Loca) {
+        pros.push(loadLoca(option.Loca));
+    }
+    return Promise.all(pros);
+}
+function loadAMapUI(params: { version?: string; plugins?: string[] }): Promise<void> {
+    return new Promise((res, rej) => {
+        const newPlugins: string[] = [];
+        if (params.plugins) {
+            for (var i = 0; i < params.plugins.length; i += 1) {
+                if (config.AMapUI.plugins.indexOf(params.plugins[i]) == -1) {
+                    newPlugins.push(params.plugins[i]);
+                }
+            }
+        }
+        if (Status.AMapUI === LoadStatus.failed) {
+            rej("前次请求 AMapUI 失败");
+        } else if (Status.AMapUI === LoadStatus.notload) {
+            Status.AMapUI = LoadStatus.loading;
+            config.AMapUI.version = params.version || config.AMapUI.version;
+            const version = config.AMapUI.version;
+            const parentNode = document.body || document.head;
+            const script = document.createElement("script");
+            script.type = "text/javascript";
+            script.src = `https://webapi.amap.com/ui/${version}/main.js`;
+
+            script.onerror = (e) => {
+                Status.AMapUI = LoadStatus.failed;
+                rej("请求 AMapUI 失败");
+            };
+            script.onload = () => {
+                Status.AMapUI = LoadStatus.loaded;
+                if (newPlugins.length) {
+                    window.AMapUI.loadUI(newPlugins, function () {
+                        for (let i = 0, len = newPlugins.length; i < len; i++) {
+                            const path = newPlugins[i];
+                            const name = path.split("/").slice(-1)[0];
+                            window.AMapUI[name] = arguments[i];
+                        }
+                        res();
+                        while (Callback.AMapUI.length) {
+                            Callback.AMapUI.splice(0, 1)[0]();
+                        }
+                    });
+                } else {
+                    res();
+                    while (Callback.AMapUI.length) {
+                        Callback.AMapUI.splice(0, 1)[0]();
+                    }
+                }
+            };
+            parentNode.appendChild(script);
+        } else if (Status.AMapUI === LoadStatus.loaded) {
+            if (params.version && params.version !== config.AMapUI.version) {
+                rej("不允许多个版本 AMapUI 混用");
+            } else {
+                if (newPlugins.length) {
+                    window.AMapUI.loadUI(newPlugins, function () {
+                        for (let i = 0, len = newPlugins.length; i < len; i++) {
+                            const path = newPlugins[i];
+                            const name = path.split("/").slice(-1)[0];
+                            window.AMapUI[name] = arguments[i];
+                        }
+                        res();
+                    });
+                } else {
+                    res();
+                }
+            }
+        } else {
+            if (params.version && params.version !== config.AMapUI.version) {
+                rej("不允许多个版本 AMapUI 混用");
+            } else {
+                Callback.AMapUI.push((err) => {
+                    if (err) {
+                        rej(err);
+                    } else {
+                        if (newPlugins.length) {
+                            window.AMapUI.loadUI(newPlugins, function () {
+                                for (let i = 0, len = newPlugins.length; i < len; i++) {
+                                    const path = newPlugins[i];
+                                    const name = path.split("/").slice(-1)[0];
+                                    window.AMapUI[name] = arguments[i];
+                                }
+                                res();
+                            });
+                        } else {
+                            res();
+                        }
+                    }
+                });
+            }
+        }
+    });
+}
+
+function loadLoca(params: { version?: string }): Promise<void> {
+    return new Promise((res, rej) => {
+        if (Status.Loca === LoadStatus.failed) {
+            rej("前次请求 Loca 失败");
+        } else if (Status.Loca === LoadStatus.notload) {
+            Status.Loca = LoadStatus.loading;
+            config.Loca.version = params.version || config.Loca.version;
+            const version = config.Loca.version;
+            const isApiV2 = config.AMap.version.startsWith("2");
+            const isLocaV2 = version.startsWith("2");
+            if ((isApiV2 && !isLocaV2) || (!isApiV2 && isLocaV2)) {
+                rej("JSAPI 与 Loca 版本不对应!!");
+                return;
+            }
+            const key = config.key;
+            const parentNode = document.body || document.head;
+            const script = document.createElement("script");
+            script.type = "text/javascript";
+            script.src = `https://webapi.amap.com/loca?v=${version}&key=${key}`;
+
+            script.onerror = (e) => {
+                Status.Loca = LoadStatus.failed;
+                rej("请求 AMapUI 失败");
+            };
+            script.onload = () => {
+                Status.Loca = LoadStatus.loaded;
+                res();
+                while (Callback.Loca.length) {
+                    Callback.Loca.splice(0, 1)[0]();
+                }
+            };
+            parentNode.appendChild(script);
+        } else if (Status.Loca === LoadStatus.loaded) {
+            if (params.version && params.version !== config.Loca.version) {
+                rej("不允许多个版本 Loca 混用");
+            } else {
+                res();
+            }
+        } else {
+            if (params.version && params.version !== config.Loca.version) {
+                rej("不允许多个版本 Loca 混用");
+            } else {
+                Callback.Loca.push((err) => {
+                    if (err) {
+                        rej(err);
+                    } else {
+                        rej();
+                    }
+                });
+            }
+        }
+    });
+}
+
+const load = function (options: LoadOption) {
+    return new Promise((resolve, reject) => {
+        if (Status.AMap == LoadStatus.failed) {
+            reject("");
+        } else if (Status.AMap == LoadStatus.notload) {
+            //初次加载
+            let { key, version, plugins } = options;
+            if (!key) {
+                reject("请填写key");
+                return;
+            }
+            if (window.AMap && location.host !== "lbs.amap.com") {
+                reject("禁止多种API加载方式混用");
+            }
+            config.key = key;
+            config.AMap.version = version || config.AMap.version;
+            config.AMap.plugins = plugins || config.AMap.plugins;
+            Status.AMap = LoadStatus.loading;
+
+            const parentNode = document.body || document.head;
+
+            window.___onAPILoaded = function (err) {
+                delete window.___onAPILoaded;
+                if (err) {
+                    Status.AMap = LoadStatus.failed;
+                    reject(err);
+                } else {
+                    Status.AMap = LoadStatus.loaded;
+                    appendOther(options)
+                        .then(() => {
+                            resolve(window.AMap);
+                        })
+                        .catch(reject);
+                    while (onloadCBKs.length) {
+                        onloadCBKs.splice(0, 1)[0]();
+                    }
+                }
+            };
+            const script = document.createElement("script");
+            script.type = "text/javascript";
+
+            script.src =
+                "https://webapi.amap.com/maps?callback=___onAPILoaded&v=" +
+                config.AMap.version +
+                "&key=" +
+                key +
+                "&plugin=" +
+                config.AMap.plugins.join(",");
+            script.onerror = (e) => {
+                Status.AMap = LoadStatus.failed;
+                reject(e);
+            };
+            parentNode.appendChild(script);
+        } else if (Status.AMap == LoadStatus.loaded) {
+            //deal multi load
+            if (options.key && options.key !== config.key) {
+                reject("多个不一致的 key");
+                return;
+            }
+            if (options.version && options.version !== config.AMap.version) {
+                reject("不允许多个版本 JSAPI 混用");
+                return;
+            }
+            const newPlugins = [];
+            if (options.plugins) {
+                for (var i = 0; i < options.plugins.length; i += 1) {
+                    if (config.AMap.plugins.indexOf(options.plugins[i]) == -1) {
+                        newPlugins.push(options.plugins[i]);
+                    }
+                }
+            }
+            if (newPlugins.length) {
+                window.AMap.plugin(newPlugins, () => {
+                    appendOther(options)
+                        .then(() => {
+                            resolve(window.AMap);
+                        })
+                        .catch(reject);
+                });
+            } else {
+                appendOther(options)
+                    .then(() => {
+                        resolve(window.AMap);
+                    })
+                    .catch(reject);
+            }
+        } else {
+            // loading
+            if (options.key && options.key !== config.key) {
+                reject("多个不一致的 key");
+                return;
+            }
+            if (options.version && options.version !== config.AMap.version) {
+                reject("不允许多个版本 JSAPI 混用");
+                return;
+            }
+            const newPlugins = [];
+            if (options.plugins) {
+                for (var i = 0; i < options.plugins.length; i += 1) {
+                    if (config.AMap.plugins.indexOf(options.plugins[i]) == -1) {
+                        newPlugins.push(options.plugins[i]);
+                    }
+                }
+            }
+            onload(() => {
+                if (newPlugins.length) {
+                    window.AMap.plugin(newPlugins, () => {
+                        appendOther(options)
+                            .then(() => {
+                                resolve(window.AMap);
+                            })
+                            .catch(reject);
+                    });
+                } else {
+                    appendOther(options)
+                        .then(() => {
+                            resolve(window.AMap);
+                        })
+                        .catch(reject);
+                }
+            });
+        }
+    });
+};
+function reset() {
+    delete window.AMap;
+    delete window.AMapUI;
+    delete window.Loca;
+    config = {
+        key: "",
+        AMap: {
+            version: "1.4.15",
+            plugins: [],
+        },
+        AMapUI: {
+            version: "1.1",
+            plugins: [],
+        },
+        Loca: {
+            version: "1.3.2",
+        },
+    };
+    Status = {
+        AMap: LoadStatus.notload,
+        AMapUI: LoadStatus.notload,
+        Loca: LoadStatus.notload,
+    };
+    Callback = {
+        AMap: [],
+        AMapUI: [],
+        Loca: [],
+    };
+}
+export default { load, reset };

+ 17 - 0
node_modules/@amap/amap-jsapi-loader/test/demo.ts

@@ -0,0 +1,17 @@
+import AMapLoader from "../";
+// import {  } from "@ali/test-amap-jsapi";
+
+AMapLoader.load({
+  key: "test",
+  version: "2.0"
+}).then(() => {
+  new AMap.Circle({})
+  const map = new AMap.Map("div");
+  map.on("complete", () => {
+    const circle = new AMap.Circle({
+      center: [135, 45],
+      radius: 40
+    });
+    map.add(circle);
+  });
+});

+ 7 - 0
node_modules/@amap/amap-jsapi-loader/test/test.ts

@@ -0,0 +1,7 @@
+import AMapLoader from "../";
+import "@amap/amap-jsapi-loader";
+
+AMapLoader.load({
+  key: "test",
+  version: "2.0"
+}).then(() => {});

+ 77 - 0
node_modules/@babel/helper-module-imports/README.md

@@ -0,0 +1,77 @@
+# @babel/helper-module-imports
+
+## Installation
+
+```sh
+npm install @babel/helper-module-imports --save
+```
+
+## Usage
+
+### `import "source"`
+
+```js
+import { addSideEffect } from "@babel/helper-module-imports";
+addSideEffect(path, 'source');
+```
+
+### `import { named } from "source"`
+
+```js
+import { addNamed } from "@babel/helper-module-imports";
+addNamed(path, 'named', 'source');
+```
+
+### `import { named as _hintedName } from "source"`
+
+```js
+import { addNamed } from "@babel/helper-module-imports";
+addNamed(path, 'named', 'source', { nameHint: "hintedName" });
+```
+
+### `import _default from "source"`
+
+```js
+import { addDefault } from "@babel/helper-module-imports";
+addDefault(path, 'source');
+```
+
+### `import hintedName from "source"`
+
+```js
+import { addDefault } from "@babel/helper-module-imports";
+addDefault(path, 'source', { nameHint: "hintedName" })
+```
+
+### `import * as _namespace from "source"`
+
+```js
+import { addNamespace } from "@babel/helper-module-imports";
+addNamespace(path, 'source');
+```
+
+## Examples
+
+### Adding a named import
+
+```js
+import { addNamed } from "@babel/helper-module-imports";
+
+export default function({ types: t }) {
+  return {
+    visitor: {
+      ReferencedIdentifier(path) {
+        let importName = this.importName;
+        if (importName) {
+          importName = t.cloneDeep(importName);
+        } else {
+          // require('bluebird').coroutine
+          importName = this.importName = addNamed(path, 'coroutine', 'bluebird');
+        }
+
+        path.replaceWith(importName);
+      }
+    },
+  };
+}
+```

+ 142 - 0
node_modules/@babel/helper-module-imports/lib/import-builder.js

@@ -0,0 +1,142 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _assert = _interopRequireDefault(require("assert"));
+
+var t = _interopRequireWildcard(require("@babel/types"));
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var ImportBuilder = function () {
+  function ImportBuilder(importedSource, scope, file) {
+    this._statements = [];
+    this._resultName = null;
+    this._scope = null;
+    this._file = null;
+    this._scope = scope;
+    this._file = file;
+    this._importedSource = importedSource;
+  }
+
+  var _proto = ImportBuilder.prototype;
+
+  _proto.done = function done() {
+    return {
+      statements: this._statements,
+      resultName: this._resultName
+    };
+  };
+
+  _proto.import = function _import() {
+    this._statements.push(t.importDeclaration([], t.stringLiteral(this._importedSource)));
+
+    return this;
+  };
+
+  _proto.require = function require() {
+    this._statements.push(t.expressionStatement(t.callExpression(t.identifier("require"), [t.stringLiteral(this._importedSource)])));
+
+    return this;
+  };
+
+  _proto.namespace = function namespace(name) {
+    if (name === void 0) {
+      name = "namespace";
+    }
+
+    name = this._scope.generateUidIdentifier(name);
+    var statement = this._statements[this._statements.length - 1];
+    (0, _assert.default)(statement.type === "ImportDeclaration");
+    (0, _assert.default)(statement.specifiers.length === 0);
+    statement.specifiers = [t.importNamespaceSpecifier(name)];
+    this._resultName = t.clone(name);
+    return this;
+  };
+
+  _proto.default = function _default(name) {
+    name = this._scope.generateUidIdentifier(name);
+    var statement = this._statements[this._statements.length - 1];
+    (0, _assert.default)(statement.type === "ImportDeclaration");
+    (0, _assert.default)(statement.specifiers.length === 0);
+    statement.specifiers = [t.importDefaultSpecifier(name)];
+    this._resultName = t.clone(name);
+    return this;
+  };
+
+  _proto.named = function named(name, importName) {
+    if (importName === "default") return this.default(name);
+    name = this._scope.generateUidIdentifier(name);
+    var statement = this._statements[this._statements.length - 1];
+    (0, _assert.default)(statement.type === "ImportDeclaration");
+    (0, _assert.default)(statement.specifiers.length === 0);
+    statement.specifiers = [t.importSpecifier(name, t.identifier(importName))];
+    this._resultName = t.clone(name);
+    return this;
+  };
+
+  _proto.var = function _var(name) {
+    name = this._scope.generateUidIdentifier(name);
+    var statement = this._statements[this._statements.length - 1];
+
+    if (statement.type !== "ExpressionStatement") {
+      (0, _assert.default)(this._resultName);
+      statement = t.expressionStatement(this._resultName);
+
+      this._statements.push(statement);
+    }
+
+    this._statements[this._statements.length - 1] = t.variableDeclaration("var", [t.variableDeclarator(name, statement.expression)]);
+    this._resultName = t.clone(name);
+    return this;
+  };
+
+  _proto.defaultInterop = function defaultInterop() {
+    return this._interop(this._file.addHelper("interopRequireDefault"));
+  };
+
+  _proto.wildcardInterop = function wildcardInterop() {
+    return this._interop(this._file.addHelper("interopRequireWildcard"));
+  };
+
+  _proto._interop = function _interop(callee) {
+    var statement = this._statements[this._statements.length - 1];
+
+    if (statement.type === "ExpressionStatement") {
+      statement.expression = t.callExpression(callee, [statement.expression]);
+    } else if (statement.type === "VariableDeclaration") {
+      (0, _assert.default)(statement.declarations.length === 1);
+      statement.declarations[0].init = t.callExpression(callee, [statement.declarations[0].init]);
+    } else {
+      _assert.default.fail("Unexpected type.");
+    }
+
+    return this;
+  };
+
+  _proto.prop = function prop(name) {
+    var statement = this._statements[this._statements.length - 1];
+
+    if (statement.type === "ExpressionStatement") {
+      statement.expression = t.memberExpression(statement.expression, t.identifier(name));
+    } else if (statement.type === "VariableDeclaration") {
+      (0, _assert.default)(statement.declarations.length === 1);
+      statement.declarations[0].init = t.memberExpression(statement.declarations[0].init, t.identifier(name));
+    } else {
+      _assert.default.fail("Unexpected type:" + statement.type);
+    }
+
+    return this;
+  };
+
+  _proto.read = function read(name) {
+    this._resultName = t.memberExpression(this._resultName, t.identifier(name));
+  };
+
+  return ImportBuilder;
+}();
+
+exports.default = ImportBuilder;

+ 288 - 0
node_modules/@babel/helper-module-imports/lib/import-injector.js

@@ -0,0 +1,288 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _assert = _interopRequireDefault(require("assert"));
+
+var t = _interopRequireWildcard(require("@babel/types"));
+
+var _importBuilder = _interopRequireDefault(require("./import-builder"));
+
+var _isModule = _interopRequireDefault(require("./is-module"));
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var ImportInjector = function () {
+  function ImportInjector(path, importedSource, opts) {
+    this._programPath = void 0;
+    this._programScope = void 0;
+    this._file = void 0;
+    this._defaultOpts = {
+      importedSource: null,
+      importedType: "commonjs",
+      importedInterop: "babel",
+      importingInterop: "babel",
+      ensureLiveReference: false,
+      ensureNoContext: false
+    };
+    var programPath = path.find(function (p) {
+      return p.isProgram();
+    });
+    this._programPath = programPath;
+    this._programScope = programPath.scope;
+    this._file = programPath.hub.file;
+    this._defaultOpts = this._applyDefaults(importedSource, opts, true);
+  }
+
+  var _proto = ImportInjector.prototype;
+
+  _proto.addDefault = function addDefault(importedSourceIn, opts) {
+    return this.addNamed("default", importedSourceIn, opts);
+  };
+
+  _proto.addNamed = function addNamed(importName, importedSourceIn, opts) {
+    (0, _assert.default)(typeof importName === "string");
+    return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);
+  };
+
+  _proto.addNamespace = function addNamespace(importedSourceIn, opts) {
+    return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);
+  };
+
+  _proto.addSideEffect = function addSideEffect(importedSourceIn, opts) {
+    return this._generateImport(this._applyDefaults(importedSourceIn, opts), false);
+  };
+
+  _proto._applyDefaults = function _applyDefaults(importedSource, opts, isInit) {
+    if (isInit === void 0) {
+      isInit = false;
+    }
+
+    var optsList = [];
+
+    if (typeof importedSource === "string") {
+      optsList.push({
+        importedSource: importedSource
+      });
+      optsList.push(opts);
+    } else {
+      (0, _assert.default)(!opts, "Unexpected secondary arguments.");
+      optsList.push(importedSource);
+    }
+
+    var newOpts = Object.assign({}, this._defaultOpts);
+
+    var _loop = function _loop(_opts) {
+      if (!_opts) return "continue";
+      Object.keys(newOpts).forEach(function (key) {
+        if (_opts[key] !== undefined) newOpts[key] = _opts[key];
+      });
+
+      if (!isInit) {
+        if (_opts.nameHint !== undefined) newOpts.nameHint = _opts.nameHint;
+        if (_opts.blockHoist !== undefined) newOpts.blockHoist = _opts.blockHoist;
+      }
+    };
+
+    for (var _i = 0; _i < optsList.length; _i++) {
+      var _opts = optsList[_i];
+
+      var _ret = _loop(_opts);
+
+      if (_ret === "continue") continue;
+    }
+
+    return newOpts;
+  };
+
+  _proto._generateImport = function _generateImport(opts, importName) {
+    var isDefault = importName === "default";
+    var isNamed = !!importName && !isDefault;
+    var isNamespace = importName === null;
+    var importedSource = opts.importedSource,
+        importedType = opts.importedType,
+        importedInterop = opts.importedInterop,
+        importingInterop = opts.importingInterop,
+        ensureLiveReference = opts.ensureLiveReference,
+        ensureNoContext = opts.ensureNoContext,
+        nameHint = opts.nameHint,
+        blockHoist = opts.blockHoist;
+    var name = nameHint || importName;
+    var isMod = (0, _isModule.default)(this._programPath, true);
+    var isModuleForNode = isMod && importingInterop === "node";
+    var isModuleForBabel = isMod && importingInterop === "babel";
+    var builder = new _importBuilder.default(importedSource, this._programScope, this._file);
+
+    if (importedType === "es6") {
+      if (!isModuleForNode && !isModuleForBabel) {
+        throw new Error("Cannot import an ES6 module from CommonJS");
+      }
+
+      builder.import();
+
+      if (isNamespace) {
+        builder.namespace(nameHint || importedSource);
+      } else if (isDefault || isNamed) {
+        builder.named(name, importName);
+      }
+    } else if (importedType !== "commonjs") {
+      throw new Error("Unexpected interopType \"" + importedType + "\"");
+    } else if (importedInterop === "babel") {
+      if (isModuleForNode) {
+        name = name !== "default" ? name : importedSource;
+        var es6Default = importedSource + "$es6Default";
+        builder.import();
+
+        if (isNamespace) {
+          builder.default(es6Default).var(name || importedSource).wildcardInterop();
+        } else if (isDefault) {
+          if (ensureLiveReference) {
+            builder.default(es6Default).var(name || importedSource).defaultInterop().read("default");
+          } else {
+            builder.default(es6Default).var(name).defaultInterop().prop(importName);
+          }
+        } else if (isNamed) {
+          builder.default(es6Default).read(importName);
+        }
+      } else if (isModuleForBabel) {
+        builder.import();
+
+        if (isNamespace) {
+          builder.namespace(name || importedSource);
+        } else if (isDefault || isNamed) {
+          builder.named(name, importName);
+        }
+      } else {
+        builder.require();
+
+        if (isNamespace) {
+          builder.var(name || importedSource).wildcardInterop();
+        } else if ((isDefault || isNamed) && ensureLiveReference) {
+          if (isDefault) {
+            name = name !== "default" ? name : importedSource;
+            builder.var(name).read(importName);
+            builder.defaultInterop();
+          } else {
+            builder.var(importedSource).read(importName);
+          }
+        } else if (isDefault) {
+          builder.var(name).defaultInterop().prop(importName);
+        } else if (isNamed) {
+          builder.var(name).prop(importName);
+        }
+      }
+    } else if (importedInterop === "compiled") {
+      if (isModuleForNode) {
+        builder.import();
+
+        if (isNamespace) {
+          builder.default(name || importedSource);
+        } else if (isDefault || isNamed) {
+          builder.default(importedSource).read(name);
+        }
+      } else if (isModuleForBabel) {
+        builder.import();
+
+        if (isNamespace) {
+          builder.namespace(name || importedSource);
+        } else if (isDefault || isNamed) {
+          builder.named(name, importName);
+        }
+      } else {
+        builder.require();
+
+        if (isNamespace) {
+          builder.var(name || importedSource);
+        } else if (isDefault || isNamed) {
+          if (ensureLiveReference) {
+            builder.var(importedSource).read(name);
+          } else {
+            builder.prop(importName).var(name);
+          }
+        }
+      }
+    } else if (importedInterop === "uncompiled") {
+      if (isDefault && ensureLiveReference) {
+        throw new Error("No live reference for commonjs default");
+      }
+
+      if (isModuleForNode) {
+        builder.import();
+
+        if (isNamespace) {
+          builder.default(name || importedSource);
+        } else if (isDefault) {
+          builder.default(name);
+        } else if (isNamed) {
+          builder.default(importedSource).read(name);
+        }
+      } else if (isModuleForBabel) {
+        builder.import();
+
+        if (isNamespace) {
+          builder.default(name || importedSource);
+        } else if (isDefault) {
+          builder.default(name);
+        } else if (isNamed) {
+          builder.named(name, importName);
+        }
+      } else {
+        builder.require();
+
+        if (isNamespace) {
+          builder.var(name || importedSource);
+        } else if (isDefault) {
+          builder.var(name);
+        } else if (isNamed) {
+          if (ensureLiveReference) {
+            builder.var(importedSource).read(name);
+          } else {
+            builder.var(name).prop(importName);
+          }
+        }
+      }
+    } else {
+      throw new Error("Unknown importedInterop \"" + importedInterop + "\".");
+    }
+
+    var _builder$done = builder.done(),
+        statements = _builder$done.statements,
+        resultName = _builder$done.resultName;
+
+    this._insertStatements(statements, blockHoist);
+
+    if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") {
+      return t.sequenceExpression([t.numericLiteral(0), resultName]);
+    }
+
+    return resultName;
+  };
+
+  _proto._insertStatements = function _insertStatements(statements, blockHoist) {
+    if (blockHoist === void 0) {
+      blockHoist = 3;
+    }
+
+    statements.forEach(function (node) {
+      node._blockHoist = blockHoist;
+    });
+
+    var targetPath = this._programPath.get("body").filter(function (p) {
+      var val = p.node._blockHoist;
+      return Number.isFinite(val) && val < 4;
+    })[0];
+
+    if (targetPath) {
+      targetPath.insertBefore(statements);
+    } else {
+      this._programPath.unshiftContainer("body", statements);
+    }
+  };
+
+  return ImportInjector;
+}();
+
+exports.default = ImportInjector;

+ 34 - 0
node_modules/@babel/helper-module-imports/lib/index.js

@@ -0,0 +1,34 @@
+"use strict";
+
+exports.__esModule = true;
+exports.addDefault = addDefault;
+exports.addNamed = addNamed;
+exports.addNamespace = addNamespace;
+exports.addSideEffect = addSideEffect;
+exports.isModule = void 0;
+
+var _importInjector = _interopRequireDefault(require("./import-injector"));
+
+exports.ImportInjector = _importInjector.default;
+
+var _isModule = _interopRequireDefault(require("./is-module"));
+
+exports.isModule = _isModule.default;
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function addDefault(path, importedSource, opts) {
+  return new _importInjector.default(path).addDefault(importedSource, opts);
+}
+
+function addNamed(path, name, importedSource, opts) {
+  return new _importInjector.default(path).addNamed(name, importedSource, opts);
+}
+
+function addNamespace(path, importedSource, opts) {
+  return new _importInjector.default(path).addNamespace(importedSource, opts);
+}
+
+function addSideEffect(path, importedSource, opts) {
+  return new _importInjector.default(path).addSideEffect(importedSource, opts);
+}

+ 30 - 0
node_modules/@babel/helper-module-imports/lib/is-module.js

@@ -0,0 +1,30 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = isModule;
+
+function isModule(path, requireUnambiguous) {
+  if (requireUnambiguous === void 0) {
+    requireUnambiguous = false;
+  }
+
+  var sourceType = path.node.sourceType;
+
+  if (sourceType !== "module" && sourceType !== "script") {
+    throw path.buildCodeFrameError("Unknown sourceType \"" + sourceType + "\", cannot transform.");
+  }
+
+  var filename = path.hub.file.opts.filename;
+
+  if (/\.mjs$/.test(filename)) {
+    requireUnambiguous = false;
+  }
+
+  return path.node.sourceType === "module" && (!requireUnambiguous || isUnambiguousModule(path));
+}
+
+function isUnambiguousModule(path) {
+  return path.get("body").some(function (p) {
+    return p.isModuleDeclaration();
+  });
+}

+ 49 - 0
node_modules/@babel/helper-module-imports/package.json

@@ -0,0 +1,49 @@
+{
+  "_from": "@babel/helper-module-imports@7.0.0-beta.35",
+  "_id": "@babel/helper-module-imports@7.0.0-beta.35",
+  "_inBundle": false,
+  "_integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
+  "_location": "/@babel/helper-module-imports",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-module-imports@7.0.0-beta.35",
+    "name": "@babel/helper-module-imports",
+    "escapedName": "@babel%2fhelper-module-imports",
+    "scope": "@babel",
+    "rawSpec": "7.0.0-beta.35",
+    "saveSpec": null,
+    "fetchSpec": "7.0.0-beta.35"
+  },
+  "_requiredBy": [
+    "/babel-plugin-component"
+  ],
+  "_resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
+  "_shasum": "308e350e731752cdb4d0f058df1d704925c64e0a",
+  "_spec": "@babel/helper-module-imports@7.0.0-beta.35",
+  "_where": "D:\\Desktop\\yelaixiangApp\\yelaixiang-h5\\node_modules\\babel-plugin-component",
+  "author": {
+    "name": "Logan Smyth",
+    "email": "loganfsmyth@gmail.com"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "@babel/types": "7.0.0-beta.35",
+    "lodash": "^4.2.0"
+  },
+  "deprecated": false,
+  "description": "Babel helper functions for inserting module loads",
+  "devDependencies": {
+    "@babel/core": "7.0.0-beta.35"
+  },
+  "homepage": "https://babeljs.io/",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "@babel/helper-module-imports",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-module-imports"
+  },
+  "version": "7.0.0-beta.35"
+}

+ 2835 - 0
node_modules/@babel/types/README.md

@@ -0,0 +1,2835 @@
+# @babel/types
+
+> This module contains methods for building ASTs manually and for checking the types of AST nodes.
+
+## Install
+
+```sh
+npm install --save-dev @babel/types
+```
+
+## API
+
+<!-- begin generated section -->
+
+### anyTypeAnnotation
+```javascript
+t.anyTypeAnnotation()
+```
+
+See also `t.isAnyTypeAnnotation(node, opts)` and `t.assertAnyTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### arrayExpression
+```javascript
+t.arrayExpression(elements)
+```
+
+See also `t.isArrayExpression(node, opts)` and `t.assertArrayExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `elements`: `Array<null | Expression | SpreadElement>` (default: `[]`)
+
+---
+
+### arrayPattern
+```javascript
+t.arrayPattern(elements)
+```
+
+See also `t.isArrayPattern(node, opts)` and `t.assertArrayPattern(node, opts)`.
+
+Aliases: `Pattern`, `PatternLike`, `LVal`
+
+ - `elements`: `Array<PatternLike>` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `typeAnnotation`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+
+---
+
+### arrayTypeAnnotation
+```javascript
+t.arrayTypeAnnotation(elementType)
+```
+
+See also `t.isArrayTypeAnnotation(node, opts)` and `t.assertArrayTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `elementType` (required)
+
+---
+
+### arrowFunctionExpression
+```javascript
+t.arrowFunctionExpression(params, body, async)
+```
+
+See also `t.isArrowFunctionExpression(node, opts)` and `t.assertArrowFunctionExpression(node, opts)`.
+
+Aliases: `Scopable`, `Function`, `BlockParent`, `FunctionParent`, `Expression`, `Pureish`
+
+ - `params`: `Array<LVal>` (required)
+ - `body`: `BlockStatement | Expression` (required)
+ - `async`: `boolean` (default: `false`)
+ - `expression`: `boolean` (default: `null`)
+ - `generator`: `boolean` (default: `false`)
+ - `returnType`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### assignmentExpression
+```javascript
+t.assignmentExpression(operator, left, right)
+```
+
+See also `t.isAssignmentExpression(node, opts)` and `t.assertAssignmentExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `operator`: `string` (required)
+ - `left`: `LVal` (required)
+ - `right`: `Expression` (required)
+
+---
+
+### assignmentPattern
+```javascript
+t.assignmentPattern(left, right)
+```
+
+See also `t.isAssignmentPattern(node, opts)` and `t.assertAssignmentPattern(node, opts)`.
+
+Aliases: `Pattern`, `PatternLike`, `LVal`
+
+ - `left`: `Identifier | ObjectPattern | ArrayPattern` (required)
+ - `right`: `Expression` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `typeAnnotation`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+
+---
+
+### awaitExpression
+```javascript
+t.awaitExpression(argument)
+```
+
+See also `t.isAwaitExpression(node, opts)` and `t.assertAwaitExpression(node, opts)`.
+
+Aliases: `Expression`, `Terminatorless`
+
+ - `argument`: `Expression` (required)
+
+---
+
+### binaryExpression
+```javascript
+t.binaryExpression(operator, left, right)
+```
+
+See also `t.isBinaryExpression(node, opts)` and `t.assertBinaryExpression(node, opts)`.
+
+Aliases: `Binary`, `Expression`
+
+ - `operator`: `'+' | '-' | '/' | '%' | '*' | '**' | '&' | '|' | '>>' | '>>>' | '<<' | '^' | '==' | '===' | '!=' | '!==' | 'in' | 'instanceof' | '>' | '<' | '>=' | '<='` (required)
+ - `left`: `Expression` (required)
+ - `right`: `Expression` (required)
+
+---
+
+### bindExpression
+```javascript
+t.bindExpression(object, callee)
+```
+
+See also `t.isBindExpression(node, opts)` and `t.assertBindExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `object` (required)
+ - `callee` (required)
+
+---
+
+### blockStatement
+```javascript
+t.blockStatement(body, directives)
+```
+
+See also `t.isBlockStatement(node, opts)` and `t.assertBlockStatement(node, opts)`.
+
+Aliases: `Scopable`, `BlockParent`, `Block`, `Statement`
+
+ - `body`: `Array<Statement>` (required)
+ - `directives`: `Array<Directive>` (default: `[]`)
+
+---
+
+### booleanLiteral
+```javascript
+t.booleanLiteral(value)
+```
+
+See also `t.isBooleanLiteral(node, opts)` and `t.assertBooleanLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+ - `value`: `boolean` (required)
+
+---
+
+### booleanLiteralTypeAnnotation
+```javascript
+t.booleanLiteralTypeAnnotation()
+```
+
+See also `t.isBooleanLiteralTypeAnnotation(node, opts)` and `t.assertBooleanLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+---
+
+### booleanTypeAnnotation
+```javascript
+t.booleanTypeAnnotation()
+```
+
+See also `t.isBooleanTypeAnnotation(node, opts)` and `t.assertBooleanTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### breakStatement
+```javascript
+t.breakStatement(label)
+```
+
+See also `t.isBreakStatement(node, opts)` and `t.assertBreakStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `label`: `Identifier` (default: `null`)
+
+---
+
+### callExpression
+```javascript
+t.callExpression(callee, arguments)
+```
+
+See also `t.isCallExpression(node, opts)` and `t.assertCallExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `callee`: `Expression` (required)
+ - `arguments`: `Array<Expression | SpreadElement | JSXNamespacedName>` (required)
+ - `optional`: `true | false` (default: `null`)
+ - `typeParameters`: `TypeParameterInstantiation | TSTypeParameterInstantiation` (default: `null`)
+
+---
+
+### catchClause
+```javascript
+t.catchClause(param, body)
+```
+
+See also `t.isCatchClause(node, opts)` and `t.assertCatchClause(node, opts)`.
+
+Aliases: `Scopable`, `BlockParent`
+
+ - `param`: `Identifier` (default: `null`)
+ - `body`: `BlockStatement` (required)
+
+---
+
+### classBody
+```javascript
+t.classBody(body)
+```
+
+See also `t.isClassBody(node, opts)` and `t.assertClassBody(node, opts)`.
+
+ - `body`: `Array<ClassMethod | ClassProperty | TSDeclareMethod | TSIndexSignature>` (required)
+
+---
+
+### classDeclaration
+```javascript
+t.classDeclaration(id, superClass, body, decorators)
+```
+
+See also `t.isClassDeclaration(node, opts)` and `t.assertClassDeclaration(node, opts)`.
+
+Aliases: `Scopable`, `Class`, `Statement`, `Declaration`, `Pureish`
+
+ - `id`: `Identifier` (default: `null`)
+ - `superClass`: `Expression` (default: `null`)
+ - `body`: `ClassBody` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `abstract`: `boolean` (default: `null`)
+ - `declare`: `boolean` (default: `null`)
+ - `implements`: `Array<TSExpressionWithTypeArguments | FlowClassImplements>` (default: `null`)
+ - `mixins` (default: `null`)
+ - `superTypeParameters`: `TypeParameterInstantiation | TSTypeParameterInstantiation` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### classExpression
+```javascript
+t.classExpression(id, superClass, body, decorators)
+```
+
+See also `t.isClassExpression(node, opts)` and `t.assertClassExpression(node, opts)`.
+
+Aliases: `Scopable`, `Class`, `Expression`, `Pureish`
+
+ - `id`: `Identifier` (default: `null`)
+ - `superClass`: `Expression` (default: `null`)
+ - `body`: `ClassBody` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `implements`: `Array<TSExpressionWithTypeArguments | FlowClassImplements>` (default: `null`)
+ - `mixins` (default: `null`)
+ - `superTypeParameters`: `TypeParameterInstantiation | TSTypeParameterInstantiation` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### classImplements
+```javascript
+t.classImplements(id, typeParameters)
+```
+
+See also `t.isClassImplements(node, opts)` and `t.assertClassImplements(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `typeParameters` (required)
+
+---
+
+### classMethod
+```javascript
+t.classMethod(kind, key, params, body, computed, static)
+```
+
+See also `t.isClassMethod(node, opts)` and `t.assertClassMethod(node, opts)`.
+
+Aliases: `Function`, `Scopable`, `BlockParent`, `FunctionParent`, `Method`
+
+ - `kind`: `"get" | "set" | "method" | "constructor"` (default: `'method'`)
+ - `key`: if computed then `Expression` else `Identifier | Literal` (required)
+ - `params`: `Array<LVal>` (required)
+ - `body`: `BlockStatement` (required)
+ - `computed`: `boolean` (default: `false`)
+ - `static`: `boolean` (default: `null`)
+ - `abstract`: `boolean` (default: `null`)
+ - `access`: `"public" | "private" | "protected"` (default: `null`)
+ - `accessibility`: `"public" | "private" | "protected"` (default: `null`)
+ - `async`: `boolean` (default: `false`)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `generator`: `boolean` (default: `false`)
+ - `optional`: `boolean` (default: `null`)
+ - `returnType`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### classProperty
+```javascript
+t.classProperty(key, value, typeAnnotation, decorators, computed)
+```
+
+See also `t.isClassProperty(node, opts)` and `t.assertClassProperty(node, opts)`.
+
+Aliases: `Property`
+
+ - `key` (required)
+ - `value`: `Expression` (default: `null`)
+ - `typeAnnotation`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `computed`: `boolean` (default: `false`)
+ - `abstract`: `boolean` (default: `null`)
+ - `accessibility`: `"public" | "private" | "protected"` (default: `null`)
+ - `optional`: `boolean` (default: `null`)
+ - `readonly`: `boolean` (default: `null`)
+ - `static`: `boolean` (default: `null`)
+
+---
+
+### conditionalExpression
+```javascript
+t.conditionalExpression(test, consequent, alternate)
+```
+
+See also `t.isConditionalExpression(node, opts)` and `t.assertConditionalExpression(node, opts)`.
+
+Aliases: `Expression`, `Conditional`
+
+ - `test`: `Expression` (required)
+ - `consequent`: `Expression` (required)
+ - `alternate`: `Expression` (required)
+
+---
+
+### continueStatement
+```javascript
+t.continueStatement(label)
+```
+
+See also `t.isContinueStatement(node, opts)` and `t.assertContinueStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `label`: `Identifier` (default: `null`)
+
+---
+
+### debuggerStatement
+```javascript
+t.debuggerStatement()
+```
+
+See also `t.isDebuggerStatement(node, opts)` and `t.assertDebuggerStatement(node, opts)`.
+
+Aliases: `Statement`
+
+
+---
+
+### declareClass
+```javascript
+t.declareClass(id, typeParameters, extends, body)
+```
+
+See also `t.isDeclareClass(node, opts)` and `t.assertDeclareClass(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `extends` (required)
+ - `body` (required)
+
+---
+
+### declareExportAllDeclaration
+```javascript
+t.declareExportAllDeclaration(source)
+```
+
+See also `t.isDeclareExportAllDeclaration(node, opts)` and `t.assertDeclareExportAllDeclaration(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `source` (required)
+
+---
+
+### declareExportDeclaration
+```javascript
+t.declareExportDeclaration(declaration, specifiers, source)
+```
+
+See also `t.isDeclareExportDeclaration(node, opts)` and `t.assertDeclareExportDeclaration(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `declaration` (required)
+ - `specifiers` (required)
+ - `source` (required)
+
+---
+
+### declareFunction
+```javascript
+t.declareFunction(id)
+```
+
+See also `t.isDeclareFunction(node, opts)` and `t.assertDeclareFunction(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+
+---
+
+### declareInterface
+```javascript
+t.declareInterface(id, typeParameters, extends, body)
+```
+
+See also `t.isDeclareInterface(node, opts)` and `t.assertDeclareInterface(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `extends` (required)
+ - `body` (required)
+
+---
+
+### declareModule
+```javascript
+t.declareModule(id, body)
+```
+
+See also `t.isDeclareModule(node, opts)` and `t.assertDeclareModule(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `body` (required)
+
+---
+
+### declareModuleExports
+```javascript
+t.declareModuleExports(typeAnnotation)
+```
+
+See also `t.isDeclareModuleExports(node, opts)` and `t.assertDeclareModuleExports(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `typeAnnotation` (required)
+
+---
+
+### declareOpaqueType
+```javascript
+t.declareOpaqueType(id, typeParameters, supertype)
+```
+
+See also `t.isDeclareOpaqueType(node, opts)` and `t.assertDeclareOpaqueType(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `supertype` (required)
+
+---
+
+### declareTypeAlias
+```javascript
+t.declareTypeAlias(id, typeParameters, right)
+```
+
+See also `t.isDeclareTypeAlias(node, opts)` and `t.assertDeclareTypeAlias(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `right` (required)
+
+---
+
+### declareVariable
+```javascript
+t.declareVariable(id)
+```
+
+See also `t.isDeclareVariable(node, opts)` and `t.assertDeclareVariable(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+
+---
+
+### declaredPredicate
+```javascript
+t.declaredPredicate(value)
+```
+
+See also `t.isDeclaredPredicate(node, opts)` and `t.assertDeclaredPredicate(node, opts)`.
+
+Aliases: `Flow`, `FlowPredicate`
+
+ - `value` (required)
+
+---
+
+### decorator
+```javascript
+t.decorator(expression)
+```
+
+See also `t.isDecorator(node, opts)` and `t.assertDecorator(node, opts)`.
+
+ - `expression`: `Expression` (required)
+
+---
+
+### directive
+```javascript
+t.directive(value)
+```
+
+See also `t.isDirective(node, opts)` and `t.assertDirective(node, opts)`.
+
+ - `value`: `DirectiveLiteral` (required)
+
+---
+
+### directiveLiteral
+```javascript
+t.directiveLiteral(value)
+```
+
+See also `t.isDirectiveLiteral(node, opts)` and `t.assertDirectiveLiteral(node, opts)`.
+
+ - `value`: `string` (required)
+
+---
+
+### doExpression
+```javascript
+t.doExpression(body)
+```
+
+See also `t.isDoExpression(node, opts)` and `t.assertDoExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `body`: `BlockStatement` (required)
+
+---
+
+### doWhileStatement
+```javascript
+t.doWhileStatement(test, body)
+```
+
+See also `t.isDoWhileStatement(node, opts)` and `t.assertDoWhileStatement(node, opts)`.
+
+Aliases: `Statement`, `BlockParent`, `Loop`, `While`, `Scopable`
+
+ - `test`: `Expression` (required)
+ - `body`: `Statement` (required)
+
+---
+
+### emptyStatement
+```javascript
+t.emptyStatement()
+```
+
+See also `t.isEmptyStatement(node, opts)` and `t.assertEmptyStatement(node, opts)`.
+
+Aliases: `Statement`
+
+
+---
+
+### emptyTypeAnnotation
+```javascript
+t.emptyTypeAnnotation()
+```
+
+See also `t.isEmptyTypeAnnotation(node, opts)` and `t.assertEmptyTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### existsTypeAnnotation
+```javascript
+t.existsTypeAnnotation()
+```
+
+See also `t.isExistsTypeAnnotation(node, opts)` and `t.assertExistsTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+---
+
+### exportAllDeclaration
+```javascript
+t.exportAllDeclaration(source)
+```
+
+See also `t.isExportAllDeclaration(node, opts)` and `t.assertExportAllDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`, `ExportDeclaration`
+
+ - `source`: `StringLiteral` (required)
+
+---
+
+### exportDefaultDeclaration
+```javascript
+t.exportDefaultDeclaration(declaration)
+```
+
+See also `t.isExportDefaultDeclaration(node, opts)` and `t.assertExportDefaultDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`, `ExportDeclaration`
+
+ - `declaration`: `FunctionDeclaration | TSDeclareFunction | ClassDeclaration | Expression` (required)
+
+---
+
+### exportDefaultSpecifier
+```javascript
+t.exportDefaultSpecifier(exported)
+```
+
+See also `t.isExportDefaultSpecifier(node, opts)` and `t.assertExportDefaultSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `exported`: `Identifier` (required)
+
+---
+
+### exportNamedDeclaration
+```javascript
+t.exportNamedDeclaration(declaration, specifiers, source)
+```
+
+See also `t.isExportNamedDeclaration(node, opts)` and `t.assertExportNamedDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`, `ExportDeclaration`
+
+ - `declaration`: `Declaration` (default: `null`)
+ - `specifiers`: `Array<ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier>` (required)
+ - `source`: `StringLiteral` (default: `null`)
+
+---
+
+### exportNamespaceSpecifier
+```javascript
+t.exportNamespaceSpecifier(exported)
+```
+
+See also `t.isExportNamespaceSpecifier(node, opts)` and `t.assertExportNamespaceSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `exported`: `Identifier` (required)
+
+---
+
+### exportSpecifier
+```javascript
+t.exportSpecifier(local, exported)
+```
+
+See also `t.isExportSpecifier(node, opts)` and `t.assertExportSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+ - `exported`: `Identifier` (required)
+
+---
+
+### expressionStatement
+```javascript
+t.expressionStatement(expression)
+```
+
+See also `t.isExpressionStatement(node, opts)` and `t.assertExpressionStatement(node, opts)`.
+
+Aliases: `Statement`, `ExpressionWrapper`
+
+ - `expression`: `Expression` (required)
+
+---
+
+### file
+```javascript
+t.file(program, comments, tokens)
+```
+
+See also `t.isFile(node, opts)` and `t.assertFile(node, opts)`.
+
+ - `program`: `Program` (required)
+ - `comments` (required)
+ - `tokens` (required)
+
+---
+
+### forInStatement
+```javascript
+t.forInStatement(left, right, body)
+```
+
+See also `t.isForInStatement(node, opts)` and `t.assertForInStatement(node, opts)`.
+
+Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement`
+
+ - `left`: `VariableDeclaration | LVal` (required)
+ - `right`: `Expression` (required)
+ - `body`: `Statement` (required)
+
+---
+
+### forOfStatement
+```javascript
+t.forOfStatement(left, right, body)
+```
+
+See also `t.isForOfStatement(node, opts)` and `t.assertForOfStatement(node, opts)`.
+
+Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement`
+
+ - `left`: `VariableDeclaration | LVal` (required)
+ - `right`: `Expression` (required)
+ - `body`: `Statement` (required)
+ - `await`: `boolean` (default: `false`)
+
+---
+
+### forStatement
+```javascript
+t.forStatement(init, test, update, body)
+```
+
+See also `t.isForStatement(node, opts)` and `t.assertForStatement(node, opts)`.
+
+Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`
+
+ - `init`: `VariableDeclaration | Expression` (default: `null`)
+ - `test`: `Expression` (default: `null`)
+ - `update`: `Expression` (default: `null`)
+ - `body`: `Statement` (required)
+
+---
+
+### functionDeclaration
+```javascript
+t.functionDeclaration(id, params, body, generator, async)
+```
+
+See also `t.isFunctionDeclaration(node, opts)` and `t.assertFunctionDeclaration(node, opts)`.
+
+Aliases: `Scopable`, `Function`, `BlockParent`, `FunctionParent`, `Statement`, `Pureish`, `Declaration`
+
+ - `id`: `Identifier` (default: `null`)
+ - `params`: `Array<LVal>` (required)
+ - `body`: `BlockStatement` (required)
+ - `generator`: `boolean` (default: `false`)
+ - `async`: `boolean` (default: `false`)
+ - `declare`: `boolean` (default: `null`)
+ - `returnType`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### functionExpression
+```javascript
+t.functionExpression(id, params, body, generator, async)
+```
+
+See also `t.isFunctionExpression(node, opts)` and `t.assertFunctionExpression(node, opts)`.
+
+Aliases: `Scopable`, `Function`, `BlockParent`, `FunctionParent`, `Expression`, `Pureish`
+
+ - `id`: `Identifier` (default: `null`)
+ - `params`: `Array<LVal>` (required)
+ - `body`: `BlockStatement` (required)
+ - `generator`: `boolean` (default: `false`)
+ - `async`: `boolean` (default: `false`)
+ - `returnType`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### functionTypeAnnotation
+```javascript
+t.functionTypeAnnotation(typeParameters, params, rest, returnType)
+```
+
+See also `t.isFunctionTypeAnnotation(node, opts)` and `t.assertFunctionTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `typeParameters` (required)
+ - `params` (required)
+ - `rest` (required)
+ - `returnType` (required)
+
+---
+
+### functionTypeParam
+```javascript
+t.functionTypeParam(name, typeAnnotation)
+```
+
+See also `t.isFunctionTypeParam(node, opts)` and `t.assertFunctionTypeParam(node, opts)`.
+
+Aliases: `Flow`
+
+ - `name` (required)
+ - `typeAnnotation` (required)
+
+---
+
+### genericTypeAnnotation
+```javascript
+t.genericTypeAnnotation(id, typeParameters)
+```
+
+See also `t.isGenericTypeAnnotation(node, opts)` and `t.assertGenericTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `typeParameters` (required)
+
+---
+
+### identifier
+```javascript
+t.identifier(name)
+```
+
+See also `t.isIdentifier(node, opts)` and `t.assertIdentifier(node, opts)`.
+
+Aliases: `Expression`, `PatternLike`, `LVal`, `TSEntityName`
+
+ - `name`: `string` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `optional`: `boolean` (default: `null`)
+ - `typeAnnotation`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+
+---
+
+### ifStatement
+```javascript
+t.ifStatement(test, consequent, alternate)
+```
+
+See also `t.isIfStatement(node, opts)` and `t.assertIfStatement(node, opts)`.
+
+Aliases: `Statement`, `Conditional`
+
+ - `test`: `Expression` (required)
+ - `consequent`: `Statement` (required)
+ - `alternate`: `Statement` (default: `null`)
+
+---
+
+### import
+```javascript
+t.import()
+```
+
+See also `t.isImport(node, opts)` and `t.assertImport(node, opts)`.
+
+Aliases: `Expression`
+
+
+---
+
+### importDeclaration
+```javascript
+t.importDeclaration(specifiers, source)
+```
+
+See also `t.isImportDeclaration(node, opts)` and `t.assertImportDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`
+
+ - `specifiers`: `Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>` (required)
+ - `source`: `StringLiteral` (required)
+
+---
+
+### importDefaultSpecifier
+```javascript
+t.importDefaultSpecifier(local)
+```
+
+See also `t.isImportDefaultSpecifier(node, opts)` and `t.assertImportDefaultSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+
+---
+
+### importNamespaceSpecifier
+```javascript
+t.importNamespaceSpecifier(local)
+```
+
+See also `t.isImportNamespaceSpecifier(node, opts)` and `t.assertImportNamespaceSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+
+---
+
+### importSpecifier
+```javascript
+t.importSpecifier(local, imported)
+```
+
+See also `t.isImportSpecifier(node, opts)` and `t.assertImportSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+ - `imported`: `Identifier` (required)
+ - `importKind`: `null | 'type' | 'typeof'` (default: `null`)
+
+---
+
+### inferredPredicate
+```javascript
+t.inferredPredicate()
+```
+
+See also `t.isInferredPredicate(node, opts)` and `t.assertInferredPredicate(node, opts)`.
+
+Aliases: `Flow`, `FlowPredicate`
+
+
+---
+
+### interfaceDeclaration
+```javascript
+t.interfaceDeclaration(id, typeParameters, extends, body)
+```
+
+See also `t.isInterfaceDeclaration(node, opts)` and `t.assertInterfaceDeclaration(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `extends` (required)
+ - `body` (required)
+
+---
+
+### interfaceExtends
+```javascript
+t.interfaceExtends(id, typeParameters)
+```
+
+See also `t.isInterfaceExtends(node, opts)` and `t.assertInterfaceExtends(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `typeParameters` (required)
+
+---
+
+### intersectionTypeAnnotation
+```javascript
+t.intersectionTypeAnnotation(types)
+```
+
+See also `t.isIntersectionTypeAnnotation(node, opts)` and `t.assertIntersectionTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `types` (required)
+
+---
+
+### jSXAttribute
+```javascript
+t.jSXAttribute(name, value)
+```
+
+See also `t.isJSXAttribute(node, opts)` and `t.assertJSXAttribute(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `name`: `JSXIdentifier | JSXNamespacedName` (required)
+ - `value`: `JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer` (default: `null`)
+
+---
+
+### jSXClosingElement
+```javascript
+t.jSXClosingElement(name)
+```
+
+See also `t.isJSXClosingElement(node, opts)` and `t.assertJSXClosingElement(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `name`: `JSXIdentifier | JSXMemberExpression` (required)
+
+---
+
+### jSXClosingFragment
+```javascript
+t.jSXClosingFragment()
+```
+
+See also `t.isJSXClosingFragment(node, opts)` and `t.assertJSXClosingFragment(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+
+---
+
+### jSXElement
+```javascript
+t.jSXElement(openingElement, closingElement, children, selfClosing)
+```
+
+See also `t.isJSXElement(node, opts)` and `t.assertJSXElement(node, opts)`.
+
+Aliases: `JSX`, `Immutable`, `Expression`
+
+ - `openingElement`: `JSXOpeningElement` (required)
+ - `closingElement`: `JSXClosingElement` (default: `null`)
+ - `children`: `Array<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment>` (required)
+ - `selfClosing` (required)
+
+---
+
+### jSXEmptyExpression
+```javascript
+t.jSXEmptyExpression()
+```
+
+See also `t.isJSXEmptyExpression(node, opts)` and `t.assertJSXEmptyExpression(node, opts)`.
+
+Aliases: `JSX`, `Expression`
+
+
+---
+
+### jSXExpressionContainer
+```javascript
+t.jSXExpressionContainer(expression)
+```
+
+See also `t.isJSXExpressionContainer(node, opts)` and `t.assertJSXExpressionContainer(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `expression`: `Expression` (required)
+
+---
+
+### jSXFragment
+```javascript
+t.jSXFragment(openingFragment, closingFragment, children)
+```
+
+See also `t.isJSXFragment(node, opts)` and `t.assertJSXFragment(node, opts)`.
+
+Aliases: `JSX`, `Immutable`, `Expression`
+
+ - `openingFragment`: `JSXOpeningFragment` (required)
+ - `closingFragment`: `JSXClosingFragment` (required)
+ - `children`: `Array<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment>` (required)
+
+---
+
+### jSXIdentifier
+```javascript
+t.jSXIdentifier(name)
+```
+
+See also `t.isJSXIdentifier(node, opts)` and `t.assertJSXIdentifier(node, opts)`.
+
+Aliases: `JSX`, `Expression`
+
+ - `name`: `string` (required)
+
+---
+
+### jSXMemberExpression
+```javascript
+t.jSXMemberExpression(object, property)
+```
+
+See also `t.isJSXMemberExpression(node, opts)` and `t.assertJSXMemberExpression(node, opts)`.
+
+Aliases: `JSX`, `Expression`
+
+ - `object`: `JSXMemberExpression | JSXIdentifier` (required)
+ - `property`: `JSXIdentifier` (required)
+
+---
+
+### jSXNamespacedName
+```javascript
+t.jSXNamespacedName(namespace, name)
+```
+
+See also `t.isJSXNamespacedName(node, opts)` and `t.assertJSXNamespacedName(node, opts)`.
+
+Aliases: `JSX`
+
+ - `namespace`: `JSXIdentifier` (required)
+ - `name`: `JSXIdentifier` (required)
+
+---
+
+### jSXOpeningElement
+```javascript
+t.jSXOpeningElement(name, attributes, selfClosing)
+```
+
+See also `t.isJSXOpeningElement(node, opts)` and `t.assertJSXOpeningElement(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `name`: `JSXIdentifier | JSXMemberExpression` (required)
+ - `attributes`: `Array<JSXAttribute | JSXSpreadAttribute>` (required)
+ - `selfClosing`: `boolean` (default: `false`)
+
+---
+
+### jSXOpeningFragment
+```javascript
+t.jSXOpeningFragment()
+```
+
+See also `t.isJSXOpeningFragment(node, opts)` and `t.assertJSXOpeningFragment(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+
+---
+
+### jSXSpreadAttribute
+```javascript
+t.jSXSpreadAttribute(argument)
+```
+
+See also `t.isJSXSpreadAttribute(node, opts)` and `t.assertJSXSpreadAttribute(node, opts)`.
+
+Aliases: `JSX`
+
+ - `argument`: `Expression` (required)
+
+---
+
+### jSXSpreadChild
+```javascript
+t.jSXSpreadChild(expression)
+```
+
+See also `t.isJSXSpreadChild(node, opts)` and `t.assertJSXSpreadChild(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `expression`: `Expression` (required)
+
+---
+
+### jSXText
+```javascript
+t.jSXText(value)
+```
+
+See also `t.isJSXText(node, opts)` and `t.assertJSXText(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `value`: `string` (required)
+
+---
+
+### labeledStatement
+```javascript
+t.labeledStatement(label, body)
+```
+
+See also `t.isLabeledStatement(node, opts)` and `t.assertLabeledStatement(node, opts)`.
+
+Aliases: `Statement`
+
+ - `label`: `Identifier` (required)
+ - `body`: `Statement` (required)
+
+---
+
+### logicalExpression
+```javascript
+t.logicalExpression(operator, left, right)
+```
+
+See also `t.isLogicalExpression(node, opts)` and `t.assertLogicalExpression(node, opts)`.
+
+Aliases: `Binary`, `Expression`
+
+ - `operator`: `'||' | '&&' | '??'` (required)
+ - `left`: `Expression` (required)
+ - `right`: `Expression` (required)
+
+---
+
+### memberExpression
+```javascript
+t.memberExpression(object, property, computed, optional)
+```
+
+See also `t.isMemberExpression(node, opts)` and `t.assertMemberExpression(node, opts)`.
+
+Aliases: `Expression`, `LVal`
+
+ - `object`: `Expression` (required)
+ - `property`: if computed then `Expression` else `Identifier` (required)
+ - `computed`: `boolean` (default: `false`)
+ - `optional`: `true | false` (default: `null`)
+
+---
+
+### metaProperty
+```javascript
+t.metaProperty(meta, property)
+```
+
+See also `t.isMetaProperty(node, opts)` and `t.assertMetaProperty(node, opts)`.
+
+Aliases: `Expression`
+
+ - `meta`: `Identifier` (required)
+ - `property`: `Identifier` (required)
+
+---
+
+### mixedTypeAnnotation
+```javascript
+t.mixedTypeAnnotation()
+```
+
+See also `t.isMixedTypeAnnotation(node, opts)` and `t.assertMixedTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### newExpression
+```javascript
+t.newExpression(callee, arguments)
+```
+
+See also `t.isNewExpression(node, opts)` and `t.assertNewExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `callee`: `Expression` (required)
+ - `arguments`: `Array<Expression | SpreadElement | JSXNamespacedName>` (required)
+ - `optional`: `true | false` (default: `null`)
+ - `typeParameters`: `TypeParameterInstantiation | TSTypeParameterInstantiation` (default: `null`)
+
+---
+
+### noop
+```javascript
+t.noop()
+```
+
+See also `t.isNoop(node, opts)` and `t.assertNoop(node, opts)`.
+
+
+---
+
+### nullLiteral
+```javascript
+t.nullLiteral()
+```
+
+See also `t.isNullLiteral(node, opts)` and `t.assertNullLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+
+---
+
+### nullLiteralTypeAnnotation
+```javascript
+t.nullLiteralTypeAnnotation()
+```
+
+See also `t.isNullLiteralTypeAnnotation(node, opts)` and `t.assertNullLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### nullableTypeAnnotation
+```javascript
+t.nullableTypeAnnotation(typeAnnotation)
+```
+
+See also `t.isNullableTypeAnnotation(node, opts)` and `t.assertNullableTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `typeAnnotation` (required)
+
+---
+
+### numberLiteralTypeAnnotation
+```javascript
+t.numberLiteralTypeAnnotation()
+```
+
+See also `t.isNumberLiteralTypeAnnotation(node, opts)` and `t.assertNumberLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+---
+
+### numberTypeAnnotation
+```javascript
+t.numberTypeAnnotation()
+```
+
+See also `t.isNumberTypeAnnotation(node, opts)` and `t.assertNumberTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### numericLiteral
+```javascript
+t.numericLiteral(value)
+```
+
+See also `t.isNumericLiteral(node, opts)` and `t.assertNumericLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+ - `value`: `number` (required)
+
+---
+
+### objectExpression
+```javascript
+t.objectExpression(properties)
+```
+
+See also `t.isObjectExpression(node, opts)` and `t.assertObjectExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `properties`: `Array<ObjectMethod | ObjectProperty | SpreadElement>` (required)
+
+---
+
+### objectMethod
+```javascript
+t.objectMethod(kind, key, params, body, computed)
+```
+
+See also `t.isObjectMethod(node, opts)` and `t.assertObjectMethod(node, opts)`.
+
+Aliases: `UserWhitespacable`, `Function`, `Scopable`, `BlockParent`, `FunctionParent`, `Method`, `ObjectMember`
+
+ - `kind`: `"method" | "get" | "set"` (default: `'method'`)
+ - `key`: if computed then `Expression` else `Identifier | Literal` (required)
+ - `params`: `Array<LVal>` (required)
+ - `body`: `BlockStatement` (required)
+ - `computed`: `boolean` (default: `false`)
+ - `async`: `boolean` (default: `false`)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `generator`: `boolean` (default: `false`)
+ - `returnType`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+ - `typeParameters`: `TypeParameterDeclaration | TSTypeParameterDeclaration | Noop` (default: `null`)
+
+---
+
+### objectPattern
+```javascript
+t.objectPattern(properties)
+```
+
+See also `t.isObjectPattern(node, opts)` and `t.assertObjectPattern(node, opts)`.
+
+Aliases: `Pattern`, `PatternLike`, `LVal`
+
+ - `properties`: `Array<RestElement | ObjectProperty>` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `typeAnnotation`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+
+---
+
+### objectProperty
+```javascript
+t.objectProperty(key, value, computed, shorthand, decorators)
+```
+
+See also `t.isObjectProperty(node, opts)` and `t.assertObjectProperty(node, opts)`.
+
+Aliases: `UserWhitespacable`, `Property`, `ObjectMember`
+
+ - `key`: if computed then `Expression` else `Identifier | Literal` (required)
+ - `value`: `Expression | PatternLike` (required)
+ - `computed`: `boolean` (default: `false`)
+ - `shorthand`: `boolean` (default: `false`)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+
+---
+
+### objectTypeAnnotation
+```javascript
+t.objectTypeAnnotation(properties, indexers, callProperties)
+```
+
+See also `t.isObjectTypeAnnotation(node, opts)` and `t.assertObjectTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `properties` (required)
+ - `indexers` (required)
+ - `callProperties` (required)
+
+---
+
+### objectTypeCallProperty
+```javascript
+t.objectTypeCallProperty(value)
+```
+
+See also `t.isObjectTypeCallProperty(node, opts)` and `t.assertObjectTypeCallProperty(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `value` (required)
+
+---
+
+### objectTypeIndexer
+```javascript
+t.objectTypeIndexer(id, key, value)
+```
+
+See also `t.isObjectTypeIndexer(node, opts)` and `t.assertObjectTypeIndexer(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `id` (required)
+ - `key` (required)
+ - `value` (required)
+
+---
+
+### objectTypeProperty
+```javascript
+t.objectTypeProperty(key, value)
+```
+
+See also `t.isObjectTypeProperty(node, opts)` and `t.assertObjectTypeProperty(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `key` (required)
+ - `value` (required)
+
+---
+
+### objectTypeSpreadProperty
+```javascript
+t.objectTypeSpreadProperty(argument)
+```
+
+See also `t.isObjectTypeSpreadProperty(node, opts)` and `t.assertObjectTypeSpreadProperty(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `argument` (required)
+
+---
+
+### opaqueType
+```javascript
+t.opaqueType(id, typeParameters, supertype, impltype)
+```
+
+See also `t.isOpaqueType(node, opts)` and `t.assertOpaqueType(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `supertype` (required)
+ - `impltype` (required)
+
+---
+
+### parenthesizedExpression
+```javascript
+t.parenthesizedExpression(expression)
+```
+
+See also `t.isParenthesizedExpression(node, opts)` and `t.assertParenthesizedExpression(node, opts)`.
+
+Aliases: `Expression`, `ExpressionWrapper`
+
+ - `expression`: `Expression` (required)
+
+---
+
+### program
+```javascript
+t.program(body, directives, sourceType)
+```
+
+See also `t.isProgram(node, opts)` and `t.assertProgram(node, opts)`.
+
+Aliases: `Scopable`, `BlockParent`, `Block`
+
+ - `body`: `Array<Statement>` (required)
+ - `directives`: `Array<Directive>` (default: `[]`)
+ - `sourceType`: `'script' | 'module'` (default: `'script'`)
+ - `sourceFile`: `string` (default: `null`)
+
+---
+
+### qualifiedTypeIdentifier
+```javascript
+t.qualifiedTypeIdentifier(id, qualification)
+```
+
+See also `t.isQualifiedTypeIdentifier(node, opts)` and `t.assertQualifiedTypeIdentifier(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `qualification` (required)
+
+---
+
+### regExpLiteral
+```javascript
+t.regExpLiteral(pattern, flags)
+```
+
+See also `t.isRegExpLiteral(node, opts)` and `t.assertRegExpLiteral(node, opts)`.
+
+Aliases: `Expression`, `Literal`
+
+ - `pattern`: `string` (required)
+ - `flags`: `string` (default: `''`)
+
+---
+
+### restElement
+```javascript
+t.restElement(argument)
+```
+
+See also `t.isRestElement(node, opts)` and `t.assertRestElement(node, opts)`.
+
+Aliases: `LVal`, `PatternLike`
+
+ - `argument`: `LVal` (required)
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `typeAnnotation`: `TypeAnnotation | TSTypeAnnotation | Noop` (default: `null`)
+
+---
+
+### returnStatement
+```javascript
+t.returnStatement(argument)
+```
+
+See also `t.isReturnStatement(node, opts)` and `t.assertReturnStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `argument`: `Expression` (default: `null`)
+
+---
+
+### sequenceExpression
+```javascript
+t.sequenceExpression(expressions)
+```
+
+See also `t.isSequenceExpression(node, opts)` and `t.assertSequenceExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `expressions`: `Array<Expression>` (required)
+
+---
+
+### spreadElement
+```javascript
+t.spreadElement(argument)
+```
+
+See also `t.isSpreadElement(node, opts)` and `t.assertSpreadElement(node, opts)`.
+
+Aliases: `UnaryLike`
+
+ - `argument`: `Expression` (required)
+
+---
+
+### stringLiteral
+```javascript
+t.stringLiteral(value)
+```
+
+See also `t.isStringLiteral(node, opts)` and `t.assertStringLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+ - `value`: `string` (required)
+
+---
+
+### stringLiteralTypeAnnotation
+```javascript
+t.stringLiteralTypeAnnotation()
+```
+
+See also `t.isStringLiteralTypeAnnotation(node, opts)` and `t.assertStringLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+---
+
+### stringTypeAnnotation
+```javascript
+t.stringTypeAnnotation()
+```
+
+See also `t.isStringTypeAnnotation(node, opts)` and `t.assertStringTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### super
+```javascript
+t.super()
+```
+
+See also `t.isSuper(node, opts)` and `t.assertSuper(node, opts)`.
+
+Aliases: `Expression`
+
+
+---
+
+### switchCase
+```javascript
+t.switchCase(test, consequent)
+```
+
+See also `t.isSwitchCase(node, opts)` and `t.assertSwitchCase(node, opts)`.
+
+ - `test`: `Expression` (default: `null`)
+ - `consequent`: `Array<Statement>` (required)
+
+---
+
+### switchStatement
+```javascript
+t.switchStatement(discriminant, cases)
+```
+
+See also `t.isSwitchStatement(node, opts)` and `t.assertSwitchStatement(node, opts)`.
+
+Aliases: `Statement`, `BlockParent`, `Scopable`
+
+ - `discriminant`: `Expression` (required)
+ - `cases`: `Array<SwitchCase>` (required)
+
+---
+
+### tSAnyKeyword
+```javascript
+t.tSAnyKeyword()
+```
+
+See also `t.isTSAnyKeyword(node, opts)` and `t.assertTSAnyKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSArrayType
+```javascript
+t.tSArrayType(elementType)
+```
+
+See also `t.isTSArrayType(node, opts)` and `t.assertTSArrayType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `elementType`: `TSType` (required)
+
+---
+
+### tSAsExpression
+```javascript
+t.tSAsExpression(expression, typeAnnotation)
+```
+
+See also `t.isTSAsExpression(node, opts)` and `t.assertTSAsExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `expression`: `Expression` (required)
+ - `typeAnnotation`: `TSType` (required)
+
+---
+
+### tSBooleanKeyword
+```javascript
+t.tSBooleanKeyword()
+```
+
+See also `t.isTSBooleanKeyword(node, opts)` and `t.assertTSBooleanKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSCallSignatureDeclaration
+```javascript
+t.tSCallSignatureDeclaration(typeParameters, parameters, typeAnnotation)
+```
+
+See also `t.isTSCallSignatureDeclaration(node, opts)` and `t.assertTSCallSignatureDeclaration(node, opts)`.
+
+Aliases: `TSTypeElement`
+
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `parameters`: `Array<Identifier | RestElement>` (default: `null`)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+
+---
+
+### tSConstructSignatureDeclaration
+```javascript
+t.tSConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation)
+```
+
+See also `t.isTSConstructSignatureDeclaration(node, opts)` and `t.assertTSConstructSignatureDeclaration(node, opts)`.
+
+Aliases: `TSTypeElement`
+
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `parameters`: `Array<Identifier | RestElement>` (default: `null`)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+
+---
+
+### tSConstructorType
+```javascript
+t.tSConstructorType(typeParameters, typeAnnotation)
+```
+
+See also `t.isTSConstructorType(node, opts)` and `t.assertTSConstructorType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+ - `parameters`: `Array<Identifier | RestElement>` (default: `null`)
+
+---
+
+### tSDeclareFunction
+```javascript
+t.tSDeclareFunction(id, typeParameters, params, returnType)
+```
+
+See also `t.isTSDeclareFunction(node, opts)` and `t.assertTSDeclareFunction(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `id`: `Identifier` (default: `null`)
+ - `typeParameters`: `TSTypeParameterDeclaration | Noop` (default: `null`)
+ - `params`: `Array<LVal>` (required)
+ - `returnType`: `TSTypeAnnotation | Noop` (default: `null`)
+ - `async`: `boolean` (default: `false`)
+ - `declare`: `boolean` (default: `null`)
+ - `generator`: `boolean` (default: `false`)
+
+---
+
+### tSDeclareMethod
+```javascript
+t.tSDeclareMethod(decorators, key, typeParameters, params, returnType)
+```
+
+See also `t.isTSDeclareMethod(node, opts)` and `t.assertTSDeclareMethod(node, opts)`.
+
+ - `decorators`: `Array<Decorator>` (default: `null`)
+ - `key` (required)
+ - `typeParameters`: `TSTypeParameterDeclaration | Noop` (default: `null`)
+ - `params`: `Array<LVal>` (required)
+ - `returnType`: `TSTypeAnnotation | Noop` (default: `null`)
+ - `abstract`: `boolean` (default: `null`)
+ - `access`: `"public" | "private" | "protected"` (default: `null`)
+ - `accessibility`: `"public" | "private" | "protected"` (default: `null`)
+ - `async`: `boolean` (default: `false`)
+ - `computed`: `boolean` (default: `false`)
+ - `generator`: `boolean` (default: `false`)
+ - `kind`: `"get" | "set" | "method" | "constructor"` (default: `'method'`)
+ - `optional`: `boolean` (default: `null`)
+ - `static`: `boolean` (default: `null`)
+
+---
+
+### tSEnumDeclaration
+```javascript
+t.tSEnumDeclaration(id, members)
+```
+
+See also `t.isTSEnumDeclaration(node, opts)` and `t.assertTSEnumDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `id`: `Identifier` (required)
+ - `members`: `Array<TSEnumMember>` (required)
+ - `const`: `boolean` (default: `null`)
+ - `declare`: `boolean` (default: `null`)
+ - `initializer`: `Expression` (default: `null`)
+
+---
+
+### tSEnumMember
+```javascript
+t.tSEnumMember(id, initializer)
+```
+
+See also `t.isTSEnumMember(node, opts)` and `t.assertTSEnumMember(node, opts)`.
+
+ - `id`: `Identifier | StringLiteral` (required)
+ - `initializer`: `Expression` (default: `null`)
+
+---
+
+### tSExportAssignment
+```javascript
+t.tSExportAssignment(expression)
+```
+
+See also `t.isTSExportAssignment(node, opts)` and `t.assertTSExportAssignment(node, opts)`.
+
+Aliases: `Statement`
+
+ - `expression`: `Expression` (required)
+
+---
+
+### tSExpressionWithTypeArguments
+```javascript
+t.tSExpressionWithTypeArguments(expression, typeParameters)
+```
+
+See also `t.isTSExpressionWithTypeArguments(node, opts)` and `t.assertTSExpressionWithTypeArguments(node, opts)`.
+
+Aliases: `TSType`
+
+ - `expression`: `TSEntityName` (required)
+ - `typeParameters`: `TSTypeParameterInstantiation` (default: `null`)
+
+---
+
+### tSExternalModuleReference
+```javascript
+t.tSExternalModuleReference(expression)
+```
+
+See also `t.isTSExternalModuleReference(node, opts)` and `t.assertTSExternalModuleReference(node, opts)`.
+
+ - `expression`: `StringLiteral` (required)
+
+---
+
+### tSFunctionType
+```javascript
+t.tSFunctionType(typeParameters, typeAnnotation)
+```
+
+See also `t.isTSFunctionType(node, opts)` and `t.assertTSFunctionType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+ - `parameters`: `Array<Identifier | RestElement>` (default: `null`)
+
+---
+
+### tSImportEqualsDeclaration
+```javascript
+t.tSImportEqualsDeclaration(id, moduleReference)
+```
+
+See also `t.isTSImportEqualsDeclaration(node, opts)` and `t.assertTSImportEqualsDeclaration(node, opts)`.
+
+Aliases: `Statement`
+
+ - `id`: `Identifier` (required)
+ - `moduleReference`: `TSEntityName | TSExternalModuleReference` (required)
+ - `isExport`: `boolean` (default: `null`)
+
+---
+
+### tSIndexSignature
+```javascript
+t.tSIndexSignature(parameters, typeAnnotation)
+```
+
+See also `t.isTSIndexSignature(node, opts)` and `t.assertTSIndexSignature(node, opts)`.
+
+Aliases: `TSTypeElement`
+
+ - `parameters`: `Array<Identifier>` (required)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+ - `readonly`: `boolean` (default: `null`)
+
+---
+
+### tSIndexedAccessType
+```javascript
+t.tSIndexedAccessType(objectType, indexType)
+```
+
+See also `t.isTSIndexedAccessType(node, opts)` and `t.assertTSIndexedAccessType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `objectType`: `TSType` (required)
+ - `indexType`: `TSType` (required)
+
+---
+
+### tSInterfaceBody
+```javascript
+t.tSInterfaceBody(body)
+```
+
+See also `t.isTSInterfaceBody(node, opts)` and `t.assertTSInterfaceBody(node, opts)`.
+
+ - `body`: `Array<TSTypeElement>` (required)
+
+---
+
+### tSInterfaceDeclaration
+```javascript
+t.tSInterfaceDeclaration(id, typeParameters, extends, body)
+```
+
+See also `t.isTSInterfaceDeclaration(node, opts)` and `t.assertTSInterfaceDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `id`: `Identifier` (required)
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `extends`: `Array<TSExpressionWithTypeArguments>` (default: `null`)
+ - `body`: `TSInterfaceBody` (required)
+ - `declare`: `boolean` (default: `null`)
+
+---
+
+### tSIntersectionType
+```javascript
+t.tSIntersectionType(types)
+```
+
+See also `t.isTSIntersectionType(node, opts)` and `t.assertTSIntersectionType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `types`: `Array<TSType>` (required)
+
+---
+
+### tSLiteralType
+```javascript
+t.tSLiteralType(literal)
+```
+
+See also `t.isTSLiteralType(node, opts)` and `t.assertTSLiteralType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `literal`: `NumericLiteral | StringLiteral | BooleanLiteral` (required)
+
+---
+
+### tSMappedType
+```javascript
+t.tSMappedType(typeParameter, typeAnnotation)
+```
+
+See also `t.isTSMappedType(node, opts)` and `t.assertTSMappedType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `typeParameter`: `TSTypeParameter` (required)
+ - `typeAnnotation`: `TSType` (default: `null`)
+ - `optional`: `boolean` (default: `null`)
+ - `readonly`: `boolean` (default: `null`)
+
+---
+
+### tSMethodSignature
+```javascript
+t.tSMethodSignature(key, typeParameters, parameters, typeAnnotation)
+```
+
+See also `t.isTSMethodSignature(node, opts)` and `t.assertTSMethodSignature(node, opts)`.
+
+Aliases: `TSTypeElement`
+
+ - `key`: `Expression` (required)
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `parameters`: `Array<Identifier | RestElement>` (default: `null`)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+ - `computed`: `boolean` (default: `null`)
+ - `optional`: `boolean` (default: `null`)
+
+---
+
+### tSModuleBlock
+```javascript
+t.tSModuleBlock(body)
+```
+
+See also `t.isTSModuleBlock(node, opts)` and `t.assertTSModuleBlock(node, opts)`.
+
+ - `body`: `Array<Statement>` (required)
+
+---
+
+### tSModuleDeclaration
+```javascript
+t.tSModuleDeclaration(id, body)
+```
+
+See also `t.isTSModuleDeclaration(node, opts)` and `t.assertTSModuleDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `id`: `Identifier | StringLiteral` (required)
+ - `body`: `TSModuleBlock | TSModuleDeclaration` (required)
+ - `declare`: `boolean` (default: `null`)
+ - `global`: `boolean` (default: `null`)
+
+---
+
+### tSNamespaceExportDeclaration
+```javascript
+t.tSNamespaceExportDeclaration(id)
+```
+
+See also `t.isTSNamespaceExportDeclaration(node, opts)` and `t.assertTSNamespaceExportDeclaration(node, opts)`.
+
+Aliases: `Statement`
+
+ - `id`: `Identifier` (required)
+
+---
+
+### tSNeverKeyword
+```javascript
+t.tSNeverKeyword()
+```
+
+See also `t.isTSNeverKeyword(node, opts)` and `t.assertTSNeverKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSNonNullExpression
+```javascript
+t.tSNonNullExpression(expression)
+```
+
+See also `t.isTSNonNullExpression(node, opts)` and `t.assertTSNonNullExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `expression`: `Expression` (required)
+
+---
+
+### tSNullKeyword
+```javascript
+t.tSNullKeyword()
+```
+
+See also `t.isTSNullKeyword(node, opts)` and `t.assertTSNullKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSNumberKeyword
+```javascript
+t.tSNumberKeyword()
+```
+
+See also `t.isTSNumberKeyword(node, opts)` and `t.assertTSNumberKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSObjectKeyword
+```javascript
+t.tSObjectKeyword()
+```
+
+See also `t.isTSObjectKeyword(node, opts)` and `t.assertTSObjectKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSParameterProperty
+```javascript
+t.tSParameterProperty(parameter)
+```
+
+See also `t.isTSParameterProperty(node, opts)` and `t.assertTSParameterProperty(node, opts)`.
+
+Aliases: `LVal`
+
+ - `parameter`: `Identifier | AssignmentPattern` (required)
+ - `accessibility`: `'public' | 'private' | 'protected'` (default: `null`)
+ - `readonly`: `boolean` (default: `null`)
+
+---
+
+### tSParenthesizedType
+```javascript
+t.tSParenthesizedType(typeAnnotation)
+```
+
+See also `t.isTSParenthesizedType(node, opts)` and `t.assertTSParenthesizedType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `typeAnnotation`: `TSType` (required)
+
+---
+
+### tSPropertySignature
+```javascript
+t.tSPropertySignature(key, typeAnnotation, initializer)
+```
+
+See also `t.isTSPropertySignature(node, opts)` and `t.assertTSPropertySignature(node, opts)`.
+
+Aliases: `TSTypeElement`
+
+ - `key`: `Expression` (required)
+ - `typeAnnotation`: `TSTypeAnnotation` (default: `null`)
+ - `initializer`: `Expression` (default: `null`)
+ - `computed`: `boolean` (default: `null`)
+ - `optional`: `boolean` (default: `null`)
+ - `readonly`: `boolean` (default: `null`)
+
+---
+
+### tSQualifiedName
+```javascript
+t.tSQualifiedName(left, right)
+```
+
+See also `t.isTSQualifiedName(node, opts)` and `t.assertTSQualifiedName(node, opts)`.
+
+Aliases: `TSEntityName`
+
+ - `left`: `TSEntityName` (required)
+ - `right`: `Identifier` (required)
+
+---
+
+### tSStringKeyword
+```javascript
+t.tSStringKeyword()
+```
+
+See also `t.isTSStringKeyword(node, opts)` and `t.assertTSStringKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSSymbolKeyword
+```javascript
+t.tSSymbolKeyword()
+```
+
+See also `t.isTSSymbolKeyword(node, opts)` and `t.assertTSSymbolKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSThisType
+```javascript
+t.tSThisType()
+```
+
+See also `t.isTSThisType(node, opts)` and `t.assertTSThisType(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSTupleType
+```javascript
+t.tSTupleType(elementTypes)
+```
+
+See also `t.isTSTupleType(node, opts)` and `t.assertTSTupleType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `elementTypes`: `Array<TSType>` (required)
+
+---
+
+### tSTypeAliasDeclaration
+```javascript
+t.tSTypeAliasDeclaration(id, typeParameters, typeAnnotation)
+```
+
+See also `t.isTSTypeAliasDeclaration(node, opts)` and `t.assertTSTypeAliasDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `id`: `Identifier` (required)
+ - `typeParameters`: `TSTypeParameterDeclaration` (default: `null`)
+ - `typeAnnotation`: `TSType` (required)
+ - `declare`: `boolean` (default: `null`)
+
+---
+
+### tSTypeAnnotation
+```javascript
+t.tSTypeAnnotation(typeAnnotation)
+```
+
+See also `t.isTSTypeAnnotation(node, opts)` and `t.assertTSTypeAnnotation(node, opts)`.
+
+ - `typeAnnotation`: `TSType` (required)
+
+---
+
+### tSTypeAssertion
+```javascript
+t.tSTypeAssertion(typeAnnotation, expression)
+```
+
+See also `t.isTSTypeAssertion(node, opts)` and `t.assertTSTypeAssertion(node, opts)`.
+
+Aliases: `Expression`
+
+ - `typeAnnotation`: `TSType` (required)
+ - `expression`: `Expression` (required)
+
+---
+
+### tSTypeLiteral
+```javascript
+t.tSTypeLiteral(members)
+```
+
+See also `t.isTSTypeLiteral(node, opts)` and `t.assertTSTypeLiteral(node, opts)`.
+
+Aliases: `TSType`
+
+ - `members`: `Array<TSTypeElement>` (required)
+
+---
+
+### tSTypeOperator
+```javascript
+t.tSTypeOperator(typeAnnotation)
+```
+
+See also `t.isTSTypeOperator(node, opts)` and `t.assertTSTypeOperator(node, opts)`.
+
+Aliases: `TSType`
+
+ - `typeAnnotation`: `TSType` (required)
+ - `operator`: `string` (default: `null`)
+
+---
+
+### tSTypeParameter
+```javascript
+t.tSTypeParameter(constraint, default)
+```
+
+See also `t.isTSTypeParameter(node, opts)` and `t.assertTSTypeParameter(node, opts)`.
+
+ - `constraint`: `TSType` (default: `null`)
+ - `default`: `TSType` (default: `null`)
+ - `name`: `string` (default: `null`)
+
+---
+
+### tSTypeParameterDeclaration
+```javascript
+t.tSTypeParameterDeclaration(params)
+```
+
+See also `t.isTSTypeParameterDeclaration(node, opts)` and `t.assertTSTypeParameterDeclaration(node, opts)`.
+
+ - `params`: `Array<TSTypeParameter>` (required)
+
+---
+
+### tSTypeParameterInstantiation
+```javascript
+t.tSTypeParameterInstantiation(params)
+```
+
+See also `t.isTSTypeParameterInstantiation(node, opts)` and `t.assertTSTypeParameterInstantiation(node, opts)`.
+
+ - `params`: `Array<TSType>` (required)
+
+---
+
+### tSTypePredicate
+```javascript
+t.tSTypePredicate(parameterName, typeAnnotation)
+```
+
+See also `t.isTSTypePredicate(node, opts)` and `t.assertTSTypePredicate(node, opts)`.
+
+Aliases: `TSType`
+
+ - `parameterName`: `Identifier | TSThisType` (required)
+ - `typeAnnotation`: `TSTypeAnnotation` (required)
+
+---
+
+### tSTypeQuery
+```javascript
+t.tSTypeQuery(exprName)
+```
+
+See also `t.isTSTypeQuery(node, opts)` and `t.assertTSTypeQuery(node, opts)`.
+
+Aliases: `TSType`
+
+ - `exprName`: `TSEntityName` (required)
+
+---
+
+### tSTypeReference
+```javascript
+t.tSTypeReference(typeName, typeParameters)
+```
+
+See also `t.isTSTypeReference(node, opts)` and `t.assertTSTypeReference(node, opts)`.
+
+Aliases: `TSType`
+
+ - `typeName`: `TSEntityName` (required)
+ - `typeParameters`: `TSTypeParameterInstantiation` (default: `null`)
+
+---
+
+### tSUndefinedKeyword
+```javascript
+t.tSUndefinedKeyword()
+```
+
+See also `t.isTSUndefinedKeyword(node, opts)` and `t.assertTSUndefinedKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### tSUnionType
+```javascript
+t.tSUnionType(types)
+```
+
+See also `t.isTSUnionType(node, opts)` and `t.assertTSUnionType(node, opts)`.
+
+Aliases: `TSType`
+
+ - `types`: `Array<TSType>` (required)
+
+---
+
+### tSVoidKeyword
+```javascript
+t.tSVoidKeyword()
+```
+
+See also `t.isTSVoidKeyword(node, opts)` and `t.assertTSVoidKeyword(node, opts)`.
+
+Aliases: `TSType`
+
+
+---
+
+### taggedTemplateExpression
+```javascript
+t.taggedTemplateExpression(tag, quasi)
+```
+
+See also `t.isTaggedTemplateExpression(node, opts)` and `t.assertTaggedTemplateExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `tag`: `Expression` (required)
+ - `quasi`: `TemplateLiteral` (required)
+
+---
+
+### templateElement
+```javascript
+t.templateElement(value, tail)
+```
+
+See also `t.isTemplateElement(node, opts)` and `t.assertTemplateElement(node, opts)`.
+
+ - `value` (required)
+ - `tail`: `boolean` (default: `false`)
+
+---
+
+### templateLiteral
+```javascript
+t.templateLiteral(quasis, expressions)
+```
+
+See also `t.isTemplateLiteral(node, opts)` and `t.assertTemplateLiteral(node, opts)`.
+
+Aliases: `Expression`, `Literal`
+
+ - `quasis`: `Array<TemplateElement>` (required)
+ - `expressions`: `Array<Expression>` (required)
+
+---
+
+### thisExpression
+```javascript
+t.thisExpression()
+```
+
+See also `t.isThisExpression(node, opts)` and `t.assertThisExpression(node, opts)`.
+
+Aliases: `Expression`
+
+
+---
+
+### thisTypeAnnotation
+```javascript
+t.thisTypeAnnotation()
+```
+
+See also `t.isThisTypeAnnotation(node, opts)` and `t.assertThisTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### throwStatement
+```javascript
+t.throwStatement(argument)
+```
+
+See also `t.isThrowStatement(node, opts)` and `t.assertThrowStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `argument`: `Expression` (required)
+
+---
+
+### tryStatement
+```javascript
+t.tryStatement(block, handler, finalizer)
+```
+
+See also `t.isTryStatement(node, opts)` and `t.assertTryStatement(node, opts)`.
+
+Aliases: `Statement`
+
+ - `block`: `BlockStatement` (required)
+ - `handler`: `CatchClause` (default: `null`)
+ - `finalizer`: `BlockStatement` (default: `null`)
+
+---
+
+### tupleTypeAnnotation
+```javascript
+t.tupleTypeAnnotation(types)
+```
+
+See also `t.isTupleTypeAnnotation(node, opts)` and `t.assertTupleTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `types` (required)
+
+---
+
+### typeAlias
+```javascript
+t.typeAlias(id, typeParameters, right)
+```
+
+See also `t.isTypeAlias(node, opts)` and `t.assertTypeAlias(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `right` (required)
+
+---
+
+### typeAnnotation
+```javascript
+t.typeAnnotation(typeAnnotation)
+```
+
+See also `t.isTypeAnnotation(node, opts)` and `t.assertTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `typeAnnotation`: `Flow` (required)
+
+---
+
+### typeCastExpression
+```javascript
+t.typeCastExpression(expression, typeAnnotation)
+```
+
+See also `t.isTypeCastExpression(node, opts)` and `t.assertTypeCastExpression(node, opts)`.
+
+Aliases: `Flow`, `ExpressionWrapper`, `Expression`
+
+ - `expression` (required)
+ - `typeAnnotation` (required)
+
+---
+
+### typeParameter
+```javascript
+t.typeParameter(bound, default)
+```
+
+See also `t.isTypeParameter(node, opts)` and `t.assertTypeParameter(node, opts)`.
+
+Aliases: `Flow`
+
+ - `bound`: `TypeAnnotation` (default: `null`)
+ - `default`: `Flow` (default: `null`)
+ - `name`: `string` (default: `null`)
+
+---
+
+### typeParameterDeclaration
+```javascript
+t.typeParameterDeclaration(params)
+```
+
+See also `t.isTypeParameterDeclaration(node, opts)` and `t.assertTypeParameterDeclaration(node, opts)`.
+
+Aliases: `Flow`
+
+ - `params`: `Array<TypeParameter>` (required)
+
+---
+
+### typeParameterInstantiation
+```javascript
+t.typeParameterInstantiation(params)
+```
+
+See also `t.isTypeParameterInstantiation(node, opts)` and `t.assertTypeParameterInstantiation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `params`: `Array<Flow>` (required)
+
+---
+
+### typeofTypeAnnotation
+```javascript
+t.typeofTypeAnnotation(argument)
+```
+
+See also `t.isTypeofTypeAnnotation(node, opts)` and `t.assertTypeofTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `argument` (required)
+
+---
+
+### unaryExpression
+```javascript
+t.unaryExpression(operator, argument, prefix)
+```
+
+See also `t.isUnaryExpression(node, opts)` and `t.assertUnaryExpression(node, opts)`.
+
+Aliases: `UnaryLike`, `Expression`
+
+ - `operator`: `'void' | 'throw' | 'delete' | '!' | '+' | '-' | '~' | 'typeof'` (required)
+ - `argument`: `Expression` (required)
+ - `prefix`: `boolean` (default: `true`)
+
+---
+
+### unionTypeAnnotation
+```javascript
+t.unionTypeAnnotation(types)
+```
+
+See also `t.isUnionTypeAnnotation(node, opts)` and `t.assertUnionTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `types` (required)
+
+---
+
+### updateExpression
+```javascript
+t.updateExpression(operator, argument, prefix)
+```
+
+See also `t.isUpdateExpression(node, opts)` and `t.assertUpdateExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `operator`: `'++' | '--'` (required)
+ - `argument`: `Expression` (required)
+ - `prefix`: `boolean` (default: `false`)
+
+---
+
+### variableDeclaration
+```javascript
+t.variableDeclaration(kind, declarations)
+```
+
+See also `t.isVariableDeclaration(node, opts)` and `t.assertVariableDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `kind`: `"var" | "let" | "const"` (required)
+ - `declarations`: `Array<VariableDeclarator>` (required)
+ - `declare`: `boolean` (default: `null`)
+
+---
+
+### variableDeclarator
+```javascript
+t.variableDeclarator(id, init)
+```
+
+See also `t.isVariableDeclarator(node, opts)` and `t.assertVariableDeclarator(node, opts)`.
+
+ - `id`: `LVal` (required)
+ - `init`: `Expression` (default: `null`)
+
+---
+
+### voidTypeAnnotation
+```javascript
+t.voidTypeAnnotation()
+```
+
+See also `t.isVoidTypeAnnotation(node, opts)` and `t.assertVoidTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+---
+
+### whileStatement
+```javascript
+t.whileStatement(test, body)
+```
+
+See also `t.isWhileStatement(node, opts)` and `t.assertWhileStatement(node, opts)`.
+
+Aliases: `Statement`, `BlockParent`, `Loop`, `While`, `Scopable`
+
+ - `test`: `Expression` (required)
+ - `body`: `BlockStatement | Statement` (required)
+
+---
+
+### withStatement
+```javascript
+t.withStatement(object, body)
+```
+
+See also `t.isWithStatement(node, opts)` and `t.assertWithStatement(node, opts)`.
+
+Aliases: `Statement`
+
+ - `object`: `Expression` (required)
+ - `body`: `BlockStatement | Statement` (required)
+
+---
+
+### yieldExpression
+```javascript
+t.yieldExpression(argument, delegate)
+```
+
+See also `t.isYieldExpression(node, opts)` and `t.assertYieldExpression(node, opts)`.
+
+Aliases: `Expression`, `Terminatorless`
+
+ - `argument`: `Expression` (default: `null`)
+ - `delegate`: `boolean` (default: `false`)
+
+---
+
+
+<!-- end generated section -->
+

+ 15 - 0
node_modules/@babel/types/lib/asserts/assertNode.js

@@ -0,0 +1,15 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = assertNode;
+
+var _isNode = _interopRequireDefault(require("../validators/isNode"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function assertNode(node) {
+  if (!(0, _isNode.default)(node)) {
+    var type = node && node.type || JSON.stringify(node);
+    throw new TypeError("Not a valid node of type \"" + type + "\"");
+  }
+}

+ 2215 - 0
node_modules/@babel/types/lib/asserts/generated/index.js

@@ -0,0 +1,2215 @@
+"use strict";
+
+exports.__esModule = true;
+exports.assertArrayExpression = assertArrayExpression;
+exports.assertAssignmentExpression = assertAssignmentExpression;
+exports.assertBinaryExpression = assertBinaryExpression;
+exports.assertDirective = assertDirective;
+exports.assertDirectiveLiteral = assertDirectiveLiteral;
+exports.assertBlockStatement = assertBlockStatement;
+exports.assertBreakStatement = assertBreakStatement;
+exports.assertCallExpression = assertCallExpression;
+exports.assertCatchClause = assertCatchClause;
+exports.assertConditionalExpression = assertConditionalExpression;
+exports.assertContinueStatement = assertContinueStatement;
+exports.assertDebuggerStatement = assertDebuggerStatement;
+exports.assertDoWhileStatement = assertDoWhileStatement;
+exports.assertEmptyStatement = assertEmptyStatement;
+exports.assertExpressionStatement = assertExpressionStatement;
+exports.assertFile = assertFile;
+exports.assertForInStatement = assertForInStatement;
+exports.assertForStatement = assertForStatement;
+exports.assertFunctionDeclaration = assertFunctionDeclaration;
+exports.assertFunctionExpression = assertFunctionExpression;
+exports.assertIdentifier = assertIdentifier;
+exports.assertIfStatement = assertIfStatement;
+exports.assertLabeledStatement = assertLabeledStatement;
+exports.assertStringLiteral = assertStringLiteral;
+exports.assertNumericLiteral = assertNumericLiteral;
+exports.assertNullLiteral = assertNullLiteral;
+exports.assertBooleanLiteral = assertBooleanLiteral;
+exports.assertRegExpLiteral = assertRegExpLiteral;
+exports.assertLogicalExpression = assertLogicalExpression;
+exports.assertMemberExpression = assertMemberExpression;
+exports.assertNewExpression = assertNewExpression;
+exports.assertProgram = assertProgram;
+exports.assertObjectExpression = assertObjectExpression;
+exports.assertObjectMethod = assertObjectMethod;
+exports.assertObjectProperty = assertObjectProperty;
+exports.assertRestElement = assertRestElement;
+exports.assertReturnStatement = assertReturnStatement;
+exports.assertSequenceExpression = assertSequenceExpression;
+exports.assertSwitchCase = assertSwitchCase;
+exports.assertSwitchStatement = assertSwitchStatement;
+exports.assertThisExpression = assertThisExpression;
+exports.assertThrowStatement = assertThrowStatement;
+exports.assertTryStatement = assertTryStatement;
+exports.assertUnaryExpression = assertUnaryExpression;
+exports.assertUpdateExpression = assertUpdateExpression;
+exports.assertVariableDeclaration = assertVariableDeclaration;
+exports.assertVariableDeclarator = assertVariableDeclarator;
+exports.assertWhileStatement = assertWhileStatement;
+exports.assertWithStatement = assertWithStatement;
+exports.assertAssignmentPattern = assertAssignmentPattern;
+exports.assertArrayPattern = assertArrayPattern;
+exports.assertArrowFunctionExpression = assertArrowFunctionExpression;
+exports.assertClassBody = assertClassBody;
+exports.assertClassDeclaration = assertClassDeclaration;
+exports.assertClassExpression = assertClassExpression;
+exports.assertExportAllDeclaration = assertExportAllDeclaration;
+exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration;
+exports.assertExportNamedDeclaration = assertExportNamedDeclaration;
+exports.assertExportSpecifier = assertExportSpecifier;
+exports.assertForOfStatement = assertForOfStatement;
+exports.assertImportDeclaration = assertImportDeclaration;
+exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier;
+exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier;
+exports.assertImportSpecifier = assertImportSpecifier;
+exports.assertMetaProperty = assertMetaProperty;
+exports.assertClassMethod = assertClassMethod;
+exports.assertObjectPattern = assertObjectPattern;
+exports.assertSpreadElement = assertSpreadElement;
+exports.assertSuper = assertSuper;
+exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression;
+exports.assertTemplateElement = assertTemplateElement;
+exports.assertTemplateLiteral = assertTemplateLiteral;
+exports.assertYieldExpression = assertYieldExpression;
+exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation;
+exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation;
+exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation;
+exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation;
+exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation;
+exports.assertClassImplements = assertClassImplements;
+exports.assertDeclareClass = assertDeclareClass;
+exports.assertDeclareFunction = assertDeclareFunction;
+exports.assertDeclareInterface = assertDeclareInterface;
+exports.assertDeclareModule = assertDeclareModule;
+exports.assertDeclareModuleExports = assertDeclareModuleExports;
+exports.assertDeclareTypeAlias = assertDeclareTypeAlias;
+exports.assertDeclareOpaqueType = assertDeclareOpaqueType;
+exports.assertDeclareVariable = assertDeclareVariable;
+exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration;
+exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration;
+exports.assertDeclaredPredicate = assertDeclaredPredicate;
+exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation;
+exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation;
+exports.assertFunctionTypeParam = assertFunctionTypeParam;
+exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation;
+exports.assertInferredPredicate = assertInferredPredicate;
+exports.assertInterfaceExtends = assertInterfaceExtends;
+exports.assertInterfaceDeclaration = assertInterfaceDeclaration;
+exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation;
+exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation;
+exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation;
+exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation;
+exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation;
+exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation;
+exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation;
+exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty;
+exports.assertObjectTypeIndexer = assertObjectTypeIndexer;
+exports.assertObjectTypeProperty = assertObjectTypeProperty;
+exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty;
+exports.assertOpaqueType = assertOpaqueType;
+exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier;
+exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation;
+exports.assertStringTypeAnnotation = assertStringTypeAnnotation;
+exports.assertThisTypeAnnotation = assertThisTypeAnnotation;
+exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation;
+exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation;
+exports.assertTypeAlias = assertTypeAlias;
+exports.assertTypeAnnotation = assertTypeAnnotation;
+exports.assertTypeCastExpression = assertTypeCastExpression;
+exports.assertTypeParameter = assertTypeParameter;
+exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration;
+exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation;
+exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation;
+exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation;
+exports.assertJSXAttribute = assertJSXAttribute;
+exports.assertJSXClosingElement = assertJSXClosingElement;
+exports.assertJSXElement = assertJSXElement;
+exports.assertJSXEmptyExpression = assertJSXEmptyExpression;
+exports.assertJSXExpressionContainer = assertJSXExpressionContainer;
+exports.assertJSXSpreadChild = assertJSXSpreadChild;
+exports.assertJSXIdentifier = assertJSXIdentifier;
+exports.assertJSXMemberExpression = assertJSXMemberExpression;
+exports.assertJSXNamespacedName = assertJSXNamespacedName;
+exports.assertJSXOpeningElement = assertJSXOpeningElement;
+exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute;
+exports.assertJSXText = assertJSXText;
+exports.assertJSXFragment = assertJSXFragment;
+exports.assertJSXOpeningFragment = assertJSXOpeningFragment;
+exports.assertJSXClosingFragment = assertJSXClosingFragment;
+exports.assertNoop = assertNoop;
+exports.assertParenthesizedExpression = assertParenthesizedExpression;
+exports.assertAwaitExpression = assertAwaitExpression;
+exports.assertBindExpression = assertBindExpression;
+exports.assertClassProperty = assertClassProperty;
+exports.assertImport = assertImport;
+exports.assertDecorator = assertDecorator;
+exports.assertDoExpression = assertDoExpression;
+exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier;
+exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier;
+exports.assertTSParameterProperty = assertTSParameterProperty;
+exports.assertTSDeclareFunction = assertTSDeclareFunction;
+exports.assertTSDeclareMethod = assertTSDeclareMethod;
+exports.assertTSQualifiedName = assertTSQualifiedName;
+exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration;
+exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration;
+exports.assertTSPropertySignature = assertTSPropertySignature;
+exports.assertTSMethodSignature = assertTSMethodSignature;
+exports.assertTSIndexSignature = assertTSIndexSignature;
+exports.assertTSAnyKeyword = assertTSAnyKeyword;
+exports.assertTSNumberKeyword = assertTSNumberKeyword;
+exports.assertTSObjectKeyword = assertTSObjectKeyword;
+exports.assertTSBooleanKeyword = assertTSBooleanKeyword;
+exports.assertTSStringKeyword = assertTSStringKeyword;
+exports.assertTSSymbolKeyword = assertTSSymbolKeyword;
+exports.assertTSVoidKeyword = assertTSVoidKeyword;
+exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword;
+exports.assertTSNullKeyword = assertTSNullKeyword;
+exports.assertTSNeverKeyword = assertTSNeverKeyword;
+exports.assertTSThisType = assertTSThisType;
+exports.assertTSFunctionType = assertTSFunctionType;
+exports.assertTSConstructorType = assertTSConstructorType;
+exports.assertTSTypeReference = assertTSTypeReference;
+exports.assertTSTypePredicate = assertTSTypePredicate;
+exports.assertTSTypeQuery = assertTSTypeQuery;
+exports.assertTSTypeLiteral = assertTSTypeLiteral;
+exports.assertTSArrayType = assertTSArrayType;
+exports.assertTSTupleType = assertTSTupleType;
+exports.assertTSUnionType = assertTSUnionType;
+exports.assertTSIntersectionType = assertTSIntersectionType;
+exports.assertTSParenthesizedType = assertTSParenthesizedType;
+exports.assertTSTypeOperator = assertTSTypeOperator;
+exports.assertTSIndexedAccessType = assertTSIndexedAccessType;
+exports.assertTSMappedType = assertTSMappedType;
+exports.assertTSLiteralType = assertTSLiteralType;
+exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments;
+exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration;
+exports.assertTSInterfaceBody = assertTSInterfaceBody;
+exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration;
+exports.assertTSAsExpression = assertTSAsExpression;
+exports.assertTSTypeAssertion = assertTSTypeAssertion;
+exports.assertTSEnumDeclaration = assertTSEnumDeclaration;
+exports.assertTSEnumMember = assertTSEnumMember;
+exports.assertTSModuleDeclaration = assertTSModuleDeclaration;
+exports.assertTSModuleBlock = assertTSModuleBlock;
+exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration;
+exports.assertTSExternalModuleReference = assertTSExternalModuleReference;
+exports.assertTSNonNullExpression = assertTSNonNullExpression;
+exports.assertTSExportAssignment = assertTSExportAssignment;
+exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration;
+exports.assertTSTypeAnnotation = assertTSTypeAnnotation;
+exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation;
+exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration;
+exports.assertTSTypeParameter = assertTSTypeParameter;
+exports.assertExpression = assertExpression;
+exports.assertBinary = assertBinary;
+exports.assertScopable = assertScopable;
+exports.assertBlockParent = assertBlockParent;
+exports.assertBlock = assertBlock;
+exports.assertStatement = assertStatement;
+exports.assertTerminatorless = assertTerminatorless;
+exports.assertCompletionStatement = assertCompletionStatement;
+exports.assertConditional = assertConditional;
+exports.assertLoop = assertLoop;
+exports.assertWhile = assertWhile;
+exports.assertExpressionWrapper = assertExpressionWrapper;
+exports.assertFor = assertFor;
+exports.assertForXStatement = assertForXStatement;
+exports.assertFunction = assertFunction;
+exports.assertFunctionParent = assertFunctionParent;
+exports.assertPureish = assertPureish;
+exports.assertDeclaration = assertDeclaration;
+exports.assertPatternLike = assertPatternLike;
+exports.assertLVal = assertLVal;
+exports.assertTSEntityName = assertTSEntityName;
+exports.assertLiteral = assertLiteral;
+exports.assertImmutable = assertImmutable;
+exports.assertUserWhitespacable = assertUserWhitespacable;
+exports.assertMethod = assertMethod;
+exports.assertObjectMember = assertObjectMember;
+exports.assertProperty = assertProperty;
+exports.assertUnaryLike = assertUnaryLike;
+exports.assertPattern = assertPattern;
+exports.assertClass = assertClass;
+exports.assertModuleDeclaration = assertModuleDeclaration;
+exports.assertExportDeclaration = assertExportDeclaration;
+exports.assertModuleSpecifier = assertModuleSpecifier;
+exports.assertFlow = assertFlow;
+exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation;
+exports.assertFlowDeclaration = assertFlowDeclaration;
+exports.assertFlowPredicate = assertFlowPredicate;
+exports.assertJSX = assertJSX;
+exports.assertTSTypeElement = assertTSTypeElement;
+exports.assertTSType = assertTSType;
+exports.assertNumberLiteral = assertNumberLiteral;
+exports.assertRegexLiteral = assertRegexLiteral;
+exports.assertRestProperty = assertRestProperty;
+exports.assertSpreadProperty = assertSpreadProperty;
+
+var _is = _interopRequireDefault(require("../../validators/is"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function assert(type, node, opts) {
+  if (!(0, _is.default)(type, node, opts)) {
+    throw new Error("Expected type \"" + type + "\" with option " + JSON.stringify(opts) + ", but instead got \"" + node.type + "\".");
+  }
+}
+
+function assertArrayExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ArrayExpression", node, opts);
+}
+
+function assertAssignmentExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("AssignmentExpression", node, opts);
+}
+
+function assertBinaryExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BinaryExpression", node, opts);
+}
+
+function assertDirective(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Directive", node, opts);
+}
+
+function assertDirectiveLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DirectiveLiteral", node, opts);
+}
+
+function assertBlockStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BlockStatement", node, opts);
+}
+
+function assertBreakStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BreakStatement", node, opts);
+}
+
+function assertCallExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("CallExpression", node, opts);
+}
+
+function assertCatchClause(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("CatchClause", node, opts);
+}
+
+function assertConditionalExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ConditionalExpression", node, opts);
+}
+
+function assertContinueStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ContinueStatement", node, opts);
+}
+
+function assertDebuggerStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DebuggerStatement", node, opts);
+}
+
+function assertDoWhileStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DoWhileStatement", node, opts);
+}
+
+function assertEmptyStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("EmptyStatement", node, opts);
+}
+
+function assertExpressionStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExpressionStatement", node, opts);
+}
+
+function assertFile(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("File", node, opts);
+}
+
+function assertForInStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ForInStatement", node, opts);
+}
+
+function assertForStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ForStatement", node, opts);
+}
+
+function assertFunctionDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FunctionDeclaration", node, opts);
+}
+
+function assertFunctionExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FunctionExpression", node, opts);
+}
+
+function assertIdentifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Identifier", node, opts);
+}
+
+function assertIfStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("IfStatement", node, opts);
+}
+
+function assertLabeledStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("LabeledStatement", node, opts);
+}
+
+function assertStringLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("StringLiteral", node, opts);
+}
+
+function assertNumericLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NumericLiteral", node, opts);
+}
+
+function assertNullLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NullLiteral", node, opts);
+}
+
+function assertBooleanLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BooleanLiteral", node, opts);
+}
+
+function assertRegExpLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("RegExpLiteral", node, opts);
+}
+
+function assertLogicalExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("LogicalExpression", node, opts);
+}
+
+function assertMemberExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("MemberExpression", node, opts);
+}
+
+function assertNewExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NewExpression", node, opts);
+}
+
+function assertProgram(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Program", node, opts);
+}
+
+function assertObjectExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectExpression", node, opts);
+}
+
+function assertObjectMethod(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectMethod", node, opts);
+}
+
+function assertObjectProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectProperty", node, opts);
+}
+
+function assertRestElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("RestElement", node, opts);
+}
+
+function assertReturnStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ReturnStatement", node, opts);
+}
+
+function assertSequenceExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("SequenceExpression", node, opts);
+}
+
+function assertSwitchCase(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("SwitchCase", node, opts);
+}
+
+function assertSwitchStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("SwitchStatement", node, opts);
+}
+
+function assertThisExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ThisExpression", node, opts);
+}
+
+function assertThrowStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ThrowStatement", node, opts);
+}
+
+function assertTryStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TryStatement", node, opts);
+}
+
+function assertUnaryExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("UnaryExpression", node, opts);
+}
+
+function assertUpdateExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("UpdateExpression", node, opts);
+}
+
+function assertVariableDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("VariableDeclaration", node, opts);
+}
+
+function assertVariableDeclarator(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("VariableDeclarator", node, opts);
+}
+
+function assertWhileStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("WhileStatement", node, opts);
+}
+
+function assertWithStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("WithStatement", node, opts);
+}
+
+function assertAssignmentPattern(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("AssignmentPattern", node, opts);
+}
+
+function assertArrayPattern(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ArrayPattern", node, opts);
+}
+
+function assertArrowFunctionExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ArrowFunctionExpression", node, opts);
+}
+
+function assertClassBody(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ClassBody", node, opts);
+}
+
+function assertClassDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ClassDeclaration", node, opts);
+}
+
+function assertClassExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ClassExpression", node, opts);
+}
+
+function assertExportAllDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportAllDeclaration", node, opts);
+}
+
+function assertExportDefaultDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportDefaultDeclaration", node, opts);
+}
+
+function assertExportNamedDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportNamedDeclaration", node, opts);
+}
+
+function assertExportSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportSpecifier", node, opts);
+}
+
+function assertForOfStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ForOfStatement", node, opts);
+}
+
+function assertImportDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ImportDeclaration", node, opts);
+}
+
+function assertImportDefaultSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ImportDefaultSpecifier", node, opts);
+}
+
+function assertImportNamespaceSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ImportNamespaceSpecifier", node, opts);
+}
+
+function assertImportSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ImportSpecifier", node, opts);
+}
+
+function assertMetaProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("MetaProperty", node, opts);
+}
+
+function assertClassMethod(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ClassMethod", node, opts);
+}
+
+function assertObjectPattern(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectPattern", node, opts);
+}
+
+function assertSpreadElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("SpreadElement", node, opts);
+}
+
+function assertSuper(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Super", node, opts);
+}
+
+function assertTaggedTemplateExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TaggedTemplateExpression", node, opts);
+}
+
+function assertTemplateElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TemplateElement", node, opts);
+}
+
+function assertTemplateLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TemplateLiteral", node, opts);
+}
+
+function assertYieldExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("YieldExpression", node, opts);
+}
+
+function assertAnyTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("AnyTypeAnnotation", node, opts);
+}
+
+function assertArrayTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ArrayTypeAnnotation", node, opts);
+}
+
+function assertBooleanTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BooleanTypeAnnotation", node, opts);
+}
+
+function assertBooleanLiteralTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BooleanLiteralTypeAnnotation", node, opts);
+}
+
+function assertNullLiteralTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NullLiteralTypeAnnotation", node, opts);
+}
+
+function assertClassImplements(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ClassImplements", node, opts);
+}
+
+function assertDeclareClass(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareClass", node, opts);
+}
+
+function assertDeclareFunction(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareFunction", node, opts);
+}
+
+function assertDeclareInterface(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareInterface", node, opts);
+}
+
+function assertDeclareModule(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareModule", node, opts);
+}
+
+function assertDeclareModuleExports(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareModuleExports", node, opts);
+}
+
+function assertDeclareTypeAlias(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareTypeAlias", node, opts);
+}
+
+function assertDeclareOpaqueType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareOpaqueType", node, opts);
+}
+
+function assertDeclareVariable(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareVariable", node, opts);
+}
+
+function assertDeclareExportDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareExportDeclaration", node, opts);
+}
+
+function assertDeclareExportAllDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclareExportAllDeclaration", node, opts);
+}
+
+function assertDeclaredPredicate(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DeclaredPredicate", node, opts);
+}
+
+function assertExistsTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExistsTypeAnnotation", node, opts);
+}
+
+function assertFunctionTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FunctionTypeAnnotation", node, opts);
+}
+
+function assertFunctionTypeParam(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FunctionTypeParam", node, opts);
+}
+
+function assertGenericTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("GenericTypeAnnotation", node, opts);
+}
+
+function assertInferredPredicate(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("InferredPredicate", node, opts);
+}
+
+function assertInterfaceExtends(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("InterfaceExtends", node, opts);
+}
+
+function assertInterfaceDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("InterfaceDeclaration", node, opts);
+}
+
+function assertIntersectionTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("IntersectionTypeAnnotation", node, opts);
+}
+
+function assertMixedTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("MixedTypeAnnotation", node, opts);
+}
+
+function assertEmptyTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("EmptyTypeAnnotation", node, opts);
+}
+
+function assertNullableTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NullableTypeAnnotation", node, opts);
+}
+
+function assertNumberLiteralTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NumberLiteralTypeAnnotation", node, opts);
+}
+
+function assertNumberTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("NumberTypeAnnotation", node, opts);
+}
+
+function assertObjectTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectTypeAnnotation", node, opts);
+}
+
+function assertObjectTypeCallProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectTypeCallProperty", node, opts);
+}
+
+function assertObjectTypeIndexer(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectTypeIndexer", node, opts);
+}
+
+function assertObjectTypeProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectTypeProperty", node, opts);
+}
+
+function assertObjectTypeSpreadProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectTypeSpreadProperty", node, opts);
+}
+
+function assertOpaqueType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("OpaqueType", node, opts);
+}
+
+function assertQualifiedTypeIdentifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("QualifiedTypeIdentifier", node, opts);
+}
+
+function assertStringLiteralTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("StringLiteralTypeAnnotation", node, opts);
+}
+
+function assertStringTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("StringTypeAnnotation", node, opts);
+}
+
+function assertThisTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ThisTypeAnnotation", node, opts);
+}
+
+function assertTupleTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TupleTypeAnnotation", node, opts);
+}
+
+function assertTypeofTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeofTypeAnnotation", node, opts);
+}
+
+function assertTypeAlias(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeAlias", node, opts);
+}
+
+function assertTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeAnnotation", node, opts);
+}
+
+function assertTypeCastExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeCastExpression", node, opts);
+}
+
+function assertTypeParameter(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeParameter", node, opts);
+}
+
+function assertTypeParameterDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeParameterDeclaration", node, opts);
+}
+
+function assertTypeParameterInstantiation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TypeParameterInstantiation", node, opts);
+}
+
+function assertUnionTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("UnionTypeAnnotation", node, opts);
+}
+
+function assertVoidTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("VoidTypeAnnotation", node, opts);
+}
+
+function assertJSXAttribute(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXAttribute", node, opts);
+}
+
+function assertJSXClosingElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXClosingElement", node, opts);
+}
+
+function assertJSXElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXElement", node, opts);
+}
+
+function assertJSXEmptyExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXEmptyExpression", node, opts);
+}
+
+function assertJSXExpressionContainer(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXExpressionContainer", node, opts);
+}
+
+function assertJSXSpreadChild(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXSpreadChild", node, opts);
+}
+
+function assertJSXIdentifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXIdentifier", node, opts);
+}
+
+function assertJSXMemberExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXMemberExpression", node, opts);
+}
+
+function assertJSXNamespacedName(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXNamespacedName", node, opts);
+}
+
+function assertJSXOpeningElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXOpeningElement", node, opts);
+}
+
+function assertJSXSpreadAttribute(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXSpreadAttribute", node, opts);
+}
+
+function assertJSXText(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXText", node, opts);
+}
+
+function assertJSXFragment(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXFragment", node, opts);
+}
+
+function assertJSXOpeningFragment(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXOpeningFragment", node, opts);
+}
+
+function assertJSXClosingFragment(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSXClosingFragment", node, opts);
+}
+
+function assertNoop(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Noop", node, opts);
+}
+
+function assertParenthesizedExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ParenthesizedExpression", node, opts);
+}
+
+function assertAwaitExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("AwaitExpression", node, opts);
+}
+
+function assertBindExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BindExpression", node, opts);
+}
+
+function assertClassProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ClassProperty", node, opts);
+}
+
+function assertImport(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Import", node, opts);
+}
+
+function assertDecorator(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Decorator", node, opts);
+}
+
+function assertDoExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("DoExpression", node, opts);
+}
+
+function assertExportDefaultSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportDefaultSpecifier", node, opts);
+}
+
+function assertExportNamespaceSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportNamespaceSpecifier", node, opts);
+}
+
+function assertTSParameterProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSParameterProperty", node, opts);
+}
+
+function assertTSDeclareFunction(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSDeclareFunction", node, opts);
+}
+
+function assertTSDeclareMethod(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSDeclareMethod", node, opts);
+}
+
+function assertTSQualifiedName(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSQualifiedName", node, opts);
+}
+
+function assertTSCallSignatureDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSCallSignatureDeclaration", node, opts);
+}
+
+function assertTSConstructSignatureDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSConstructSignatureDeclaration", node, opts);
+}
+
+function assertTSPropertySignature(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSPropertySignature", node, opts);
+}
+
+function assertTSMethodSignature(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSMethodSignature", node, opts);
+}
+
+function assertTSIndexSignature(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSIndexSignature", node, opts);
+}
+
+function assertTSAnyKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSAnyKeyword", node, opts);
+}
+
+function assertTSNumberKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSNumberKeyword", node, opts);
+}
+
+function assertTSObjectKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSObjectKeyword", node, opts);
+}
+
+function assertTSBooleanKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSBooleanKeyword", node, opts);
+}
+
+function assertTSStringKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSStringKeyword", node, opts);
+}
+
+function assertTSSymbolKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSSymbolKeyword", node, opts);
+}
+
+function assertTSVoidKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSVoidKeyword", node, opts);
+}
+
+function assertTSUndefinedKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSUndefinedKeyword", node, opts);
+}
+
+function assertTSNullKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSNullKeyword", node, opts);
+}
+
+function assertTSNeverKeyword(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSNeverKeyword", node, opts);
+}
+
+function assertTSThisType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSThisType", node, opts);
+}
+
+function assertTSFunctionType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSFunctionType", node, opts);
+}
+
+function assertTSConstructorType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSConstructorType", node, opts);
+}
+
+function assertTSTypeReference(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeReference", node, opts);
+}
+
+function assertTSTypePredicate(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypePredicate", node, opts);
+}
+
+function assertTSTypeQuery(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeQuery", node, opts);
+}
+
+function assertTSTypeLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeLiteral", node, opts);
+}
+
+function assertTSArrayType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSArrayType", node, opts);
+}
+
+function assertTSTupleType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTupleType", node, opts);
+}
+
+function assertTSUnionType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSUnionType", node, opts);
+}
+
+function assertTSIntersectionType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSIntersectionType", node, opts);
+}
+
+function assertTSParenthesizedType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSParenthesizedType", node, opts);
+}
+
+function assertTSTypeOperator(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeOperator", node, opts);
+}
+
+function assertTSIndexedAccessType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSIndexedAccessType", node, opts);
+}
+
+function assertTSMappedType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSMappedType", node, opts);
+}
+
+function assertTSLiteralType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSLiteralType", node, opts);
+}
+
+function assertTSExpressionWithTypeArguments(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSExpressionWithTypeArguments", node, opts);
+}
+
+function assertTSInterfaceDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSInterfaceDeclaration", node, opts);
+}
+
+function assertTSInterfaceBody(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSInterfaceBody", node, opts);
+}
+
+function assertTSTypeAliasDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeAliasDeclaration", node, opts);
+}
+
+function assertTSAsExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSAsExpression", node, opts);
+}
+
+function assertTSTypeAssertion(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeAssertion", node, opts);
+}
+
+function assertTSEnumDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSEnumDeclaration", node, opts);
+}
+
+function assertTSEnumMember(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSEnumMember", node, opts);
+}
+
+function assertTSModuleDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSModuleDeclaration", node, opts);
+}
+
+function assertTSModuleBlock(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSModuleBlock", node, opts);
+}
+
+function assertTSImportEqualsDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSImportEqualsDeclaration", node, opts);
+}
+
+function assertTSExternalModuleReference(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSExternalModuleReference", node, opts);
+}
+
+function assertTSNonNullExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSNonNullExpression", node, opts);
+}
+
+function assertTSExportAssignment(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSExportAssignment", node, opts);
+}
+
+function assertTSNamespaceExportDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSNamespaceExportDeclaration", node, opts);
+}
+
+function assertTSTypeAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeAnnotation", node, opts);
+}
+
+function assertTSTypeParameterInstantiation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeParameterInstantiation", node, opts);
+}
+
+function assertTSTypeParameterDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeParameterDeclaration", node, opts);
+}
+
+function assertTSTypeParameter(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeParameter", node, opts);
+}
+
+function assertExpression(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Expression", node, opts);
+}
+
+function assertBinary(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Binary", node, opts);
+}
+
+function assertScopable(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Scopable", node, opts);
+}
+
+function assertBlockParent(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("BlockParent", node, opts);
+}
+
+function assertBlock(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Block", node, opts);
+}
+
+function assertStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Statement", node, opts);
+}
+
+function assertTerminatorless(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Terminatorless", node, opts);
+}
+
+function assertCompletionStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("CompletionStatement", node, opts);
+}
+
+function assertConditional(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Conditional", node, opts);
+}
+
+function assertLoop(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Loop", node, opts);
+}
+
+function assertWhile(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("While", node, opts);
+}
+
+function assertExpressionWrapper(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExpressionWrapper", node, opts);
+}
+
+function assertFor(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("For", node, opts);
+}
+
+function assertForXStatement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ForXStatement", node, opts);
+}
+
+function assertFunction(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Function", node, opts);
+}
+
+function assertFunctionParent(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FunctionParent", node, opts);
+}
+
+function assertPureish(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Pureish", node, opts);
+}
+
+function assertDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Declaration", node, opts);
+}
+
+function assertPatternLike(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("PatternLike", node, opts);
+}
+
+function assertLVal(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("LVal", node, opts);
+}
+
+function assertTSEntityName(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSEntityName", node, opts);
+}
+
+function assertLiteral(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Literal", node, opts);
+}
+
+function assertImmutable(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Immutable", node, opts);
+}
+
+function assertUserWhitespacable(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("UserWhitespacable", node, opts);
+}
+
+function assertMethod(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Method", node, opts);
+}
+
+function assertObjectMember(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ObjectMember", node, opts);
+}
+
+function assertProperty(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Property", node, opts);
+}
+
+function assertUnaryLike(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("UnaryLike", node, opts);
+}
+
+function assertPattern(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Pattern", node, opts);
+}
+
+function assertClass(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Class", node, opts);
+}
+
+function assertModuleDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ModuleDeclaration", node, opts);
+}
+
+function assertExportDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ExportDeclaration", node, opts);
+}
+
+function assertModuleSpecifier(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("ModuleSpecifier", node, opts);
+}
+
+function assertFlow(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("Flow", node, opts);
+}
+
+function assertFlowBaseAnnotation(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FlowBaseAnnotation", node, opts);
+}
+
+function assertFlowDeclaration(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FlowDeclaration", node, opts);
+}
+
+function assertFlowPredicate(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("FlowPredicate", node, opts);
+}
+
+function assertJSX(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("JSX", node, opts);
+}
+
+function assertTSTypeElement(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSTypeElement", node, opts);
+}
+
+function assertTSType(node, opts) {
+  if (opts === void 0) {
+    opts = {};
+  }
+
+  assert("TSType", node, opts);
+}
+
+function assertNumberLiteral(node, opts) {
+  console.trace("The node type NumberLiteral has been renamed to NumericLiteral");
+  assert("NumberLiteral", node, opts);
+}
+
+function assertRegexLiteral(node, opts) {
+  console.trace("The node type RegexLiteral has been renamed to RegExpLiteral");
+  assert("RegexLiteral", node, opts);
+}
+
+function assertRestProperty(node, opts) {
+  console.trace("The node type RestProperty has been renamed to RestElement");
+  assert("RestProperty", node, opts);
+}
+
+function assertSpreadProperty(node, opts) {
+  console.trace("The node type SpreadProperty has been renamed to SpreadElement");
+  assert("SpreadProperty", node, opts);
+}

+ 44 - 0
node_modules/@babel/types/lib/builders/builder.js

@@ -0,0 +1,44 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = builder;
+
+var _clone = _interopRequireDefault(require("lodash/clone"));
+
+var _definitions = require("../definitions");
+
+var _validate = _interopRequireDefault(require("../validators/validate"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function builder(type) {
+  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+    args[_key - 1] = arguments[_key];
+  }
+
+  var keys = _definitions.BUILDER_KEYS[type];
+  var countArgs = args.length;
+
+  if (countArgs > keys.length) {
+    throw new Error(type + ": Too many arguments passed. Received " + countArgs + " but can receive no more than " + keys.length);
+  }
+
+  var node = {
+    type: type
+  };
+  var i = 0;
+  keys.forEach(function (key) {
+    var field = _definitions.NODE_FIELDS[type][key];
+    var arg;
+    if (i < countArgs) arg = args[i];
+    if (arg === undefined) arg = (0, _clone.default)(field.default);
+    node[key] = arg;
+    i++;
+  });
+
+  for (var key in node) {
+    (0, _validate.default)(node, key, node[key]);
+  }
+
+  return node;
+}

+ 26 - 0
node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js

@@ -0,0 +1,26 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = createTypeAnnotationBasedOnTypeof;
+
+var _generated = require("../generated");
+
+function createTypeAnnotationBasedOnTypeof(type) {
+  if (type === "string") {
+    return (0, _generated.stringTypeAnnotation)();
+  } else if (type === "number") {
+    return (0, _generated.numberTypeAnnotation)();
+  } else if (type === "undefined") {
+    return (0, _generated.voidTypeAnnotation)();
+  } else if (type === "boolean") {
+    return (0, _generated.booleanTypeAnnotation)();
+  } else if (type === "function") {
+    return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Function"));
+  } else if (type === "object") {
+    return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Object"));
+  } else if (type === "symbol") {
+    return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol"));
+  } else {
+    throw new Error("Invalid typeof value");
+  }
+}

+ 20 - 0
node_modules/@babel/types/lib/builders/flow/createUnionTypeAnnotation.js

@@ -0,0 +1,20 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = createUnionTypeAnnotation;
+
+var _generated = require("../generated");
+
+var _removeTypeDuplicates = _interopRequireDefault(require("../../modifications/flow/removeTypeDuplicates"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function createUnionTypeAnnotation(types) {
+  var flattened = (0, _removeTypeDuplicates.default)(types);
+
+  if (flattened.length === 1) {
+    return flattened[0];
+  } else {
+    return (0, _generated.unionTypeAnnotation)(flattened);
+  }
+}

+ 1869 - 0
node_modules/@babel/types/lib/builders/generated/index.js

@@ -0,0 +1,1869 @@
+"use strict";
+
+exports.__esModule = true;
+exports.arrayExpression = exports.ArrayExpression = ArrayExpression;
+exports.assignmentExpression = exports.AssignmentExpression = AssignmentExpression;
+exports.binaryExpression = exports.BinaryExpression = BinaryExpression;
+exports.directive = exports.Directive = Directive;
+exports.directiveLiteral = exports.DirectiveLiteral = DirectiveLiteral;
+exports.blockStatement = exports.BlockStatement = BlockStatement;
+exports.breakStatement = exports.BreakStatement = BreakStatement;
+exports.callExpression = exports.CallExpression = CallExpression;
+exports.catchClause = exports.CatchClause = CatchClause;
+exports.conditionalExpression = exports.ConditionalExpression = ConditionalExpression;
+exports.continueStatement = exports.ContinueStatement = ContinueStatement;
+exports.debuggerStatement = exports.DebuggerStatement = DebuggerStatement;
+exports.doWhileStatement = exports.DoWhileStatement = DoWhileStatement;
+exports.emptyStatement = exports.EmptyStatement = EmptyStatement;
+exports.expressionStatement = exports.ExpressionStatement = ExpressionStatement;
+exports.file = exports.File = File;
+exports.forInStatement = exports.ForInStatement = ForInStatement;
+exports.forStatement = exports.ForStatement = ForStatement;
+exports.functionDeclaration = exports.FunctionDeclaration = FunctionDeclaration;
+exports.functionExpression = exports.FunctionExpression = FunctionExpression;
+exports.identifier = exports.Identifier = Identifier;
+exports.ifStatement = exports.IfStatement = IfStatement;
+exports.labeledStatement = exports.LabeledStatement = LabeledStatement;
+exports.stringLiteral = exports.StringLiteral = StringLiteral;
+exports.numericLiteral = exports.NumericLiteral = NumericLiteral;
+exports.nullLiteral = exports.NullLiteral = NullLiteral;
+exports.booleanLiteral = exports.BooleanLiteral = BooleanLiteral;
+exports.regExpLiteral = exports.RegExpLiteral = RegExpLiteral;
+exports.logicalExpression = exports.LogicalExpression = LogicalExpression;
+exports.memberExpression = exports.MemberExpression = MemberExpression;
+exports.newExpression = exports.NewExpression = NewExpression;
+exports.program = exports.Program = Program;
+exports.objectExpression = exports.ObjectExpression = ObjectExpression;
+exports.objectMethod = exports.ObjectMethod = ObjectMethod;
+exports.objectProperty = exports.ObjectProperty = ObjectProperty;
+exports.restElement = exports.RestElement = RestElement;
+exports.returnStatement = exports.ReturnStatement = ReturnStatement;
+exports.sequenceExpression = exports.SequenceExpression = SequenceExpression;
+exports.switchCase = exports.SwitchCase = SwitchCase;
+exports.switchStatement = exports.SwitchStatement = SwitchStatement;
+exports.thisExpression = exports.ThisExpression = ThisExpression;
+exports.throwStatement = exports.ThrowStatement = ThrowStatement;
+exports.tryStatement = exports.TryStatement = TryStatement;
+exports.unaryExpression = exports.UnaryExpression = UnaryExpression;
+exports.updateExpression = exports.UpdateExpression = UpdateExpression;
+exports.variableDeclaration = exports.VariableDeclaration = VariableDeclaration;
+exports.variableDeclarator = exports.VariableDeclarator = VariableDeclarator;
+exports.whileStatement = exports.WhileStatement = WhileStatement;
+exports.withStatement = exports.WithStatement = WithStatement;
+exports.assignmentPattern = exports.AssignmentPattern = AssignmentPattern;
+exports.arrayPattern = exports.ArrayPattern = ArrayPattern;
+exports.arrowFunctionExpression = exports.ArrowFunctionExpression = ArrowFunctionExpression;
+exports.classBody = exports.ClassBody = ClassBody;
+exports.classDeclaration = exports.ClassDeclaration = ClassDeclaration;
+exports.classExpression = exports.ClassExpression = ClassExpression;
+exports.exportAllDeclaration = exports.ExportAllDeclaration = ExportAllDeclaration;
+exports.exportDefaultDeclaration = exports.ExportDefaultDeclaration = ExportDefaultDeclaration;
+exports.exportNamedDeclaration = exports.ExportNamedDeclaration = ExportNamedDeclaration;
+exports.exportSpecifier = exports.ExportSpecifier = ExportSpecifier;
+exports.forOfStatement = exports.ForOfStatement = ForOfStatement;
+exports.importDeclaration = exports.ImportDeclaration = ImportDeclaration;
+exports.importDefaultSpecifier = exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
+exports.importNamespaceSpecifier = exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
+exports.importSpecifier = exports.ImportSpecifier = ImportSpecifier;
+exports.metaProperty = exports.MetaProperty = MetaProperty;
+exports.classMethod = exports.ClassMethod = ClassMethod;
+exports.objectPattern = exports.ObjectPattern = ObjectPattern;
+exports.spreadElement = exports.SpreadElement = SpreadElement;
+exports.super = exports.Super = Super;
+exports.taggedTemplateExpression = exports.TaggedTemplateExpression = TaggedTemplateExpression;
+exports.templateElement = exports.TemplateElement = TemplateElement;
+exports.templateLiteral = exports.TemplateLiteral = TemplateLiteral;
+exports.yieldExpression = exports.YieldExpression = YieldExpression;
+exports.anyTypeAnnotation = exports.AnyTypeAnnotation = AnyTypeAnnotation;
+exports.arrayTypeAnnotation = exports.ArrayTypeAnnotation = ArrayTypeAnnotation;
+exports.booleanTypeAnnotation = exports.BooleanTypeAnnotation = BooleanTypeAnnotation;
+exports.booleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation;
+exports.nullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation;
+exports.classImplements = exports.ClassImplements = ClassImplements;
+exports.declareClass = exports.DeclareClass = DeclareClass;
+exports.declareFunction = exports.DeclareFunction = DeclareFunction;
+exports.declareInterface = exports.DeclareInterface = DeclareInterface;
+exports.declareModule = exports.DeclareModule = DeclareModule;
+exports.declareModuleExports = exports.DeclareModuleExports = DeclareModuleExports;
+exports.declareTypeAlias = exports.DeclareTypeAlias = DeclareTypeAlias;
+exports.declareOpaqueType = exports.DeclareOpaqueType = DeclareOpaqueType;
+exports.declareVariable = exports.DeclareVariable = DeclareVariable;
+exports.declareExportDeclaration = exports.DeclareExportDeclaration = DeclareExportDeclaration;
+exports.declareExportAllDeclaration = exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration;
+exports.declaredPredicate = exports.DeclaredPredicate = DeclaredPredicate;
+exports.existsTypeAnnotation = exports.ExistsTypeAnnotation = ExistsTypeAnnotation;
+exports.functionTypeAnnotation = exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
+exports.functionTypeParam = exports.FunctionTypeParam = FunctionTypeParam;
+exports.genericTypeAnnotation = exports.GenericTypeAnnotation = GenericTypeAnnotation;
+exports.inferredPredicate = exports.InferredPredicate = InferredPredicate;
+exports.interfaceExtends = exports.InterfaceExtends = InterfaceExtends;
+exports.interfaceDeclaration = exports.InterfaceDeclaration = InterfaceDeclaration;
+exports.intersectionTypeAnnotation = exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation;
+exports.mixedTypeAnnotation = exports.MixedTypeAnnotation = MixedTypeAnnotation;
+exports.emptyTypeAnnotation = exports.EmptyTypeAnnotation = EmptyTypeAnnotation;
+exports.nullableTypeAnnotation = exports.NullableTypeAnnotation = NullableTypeAnnotation;
+exports.numberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = NumberLiteralTypeAnnotation;
+exports.numberTypeAnnotation = exports.NumberTypeAnnotation = NumberTypeAnnotation;
+exports.objectTypeAnnotation = exports.ObjectTypeAnnotation = ObjectTypeAnnotation;
+exports.objectTypeCallProperty = exports.ObjectTypeCallProperty = ObjectTypeCallProperty;
+exports.objectTypeIndexer = exports.ObjectTypeIndexer = ObjectTypeIndexer;
+exports.objectTypeProperty = exports.ObjectTypeProperty = ObjectTypeProperty;
+exports.objectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty;
+exports.opaqueType = exports.OpaqueType = OpaqueType;
+exports.qualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier;
+exports.stringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = StringLiteralTypeAnnotation;
+exports.stringTypeAnnotation = exports.StringTypeAnnotation = StringTypeAnnotation;
+exports.thisTypeAnnotation = exports.ThisTypeAnnotation = ThisTypeAnnotation;
+exports.tupleTypeAnnotation = exports.TupleTypeAnnotation = TupleTypeAnnotation;
+exports.typeofTypeAnnotation = exports.TypeofTypeAnnotation = TypeofTypeAnnotation;
+exports.typeAlias = exports.TypeAlias = TypeAlias;
+exports.typeAnnotation = exports.TypeAnnotation = TypeAnnotation;
+exports.typeCastExpression = exports.TypeCastExpression = TypeCastExpression;
+exports.typeParameter = exports.TypeParameter = TypeParameter;
+exports.typeParameterDeclaration = exports.TypeParameterDeclaration = TypeParameterDeclaration;
+exports.typeParameterInstantiation = exports.TypeParameterInstantiation = TypeParameterInstantiation;
+exports.unionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
+exports.voidTypeAnnotation = exports.VoidTypeAnnotation = VoidTypeAnnotation;
+exports.jSXAttribute = exports.jsxAttribute = exports.JSXAttribute = JSXAttribute;
+exports.jSXClosingElement = exports.jsxClosingElement = exports.JSXClosingElement = JSXClosingElement;
+exports.jSXElement = exports.jsxElement = exports.JSXElement = JSXElement;
+exports.jSXEmptyExpression = exports.jsxEmptyExpression = exports.JSXEmptyExpression = JSXEmptyExpression;
+exports.jSXExpressionContainer = exports.jsxExpressionContainer = exports.JSXExpressionContainer = JSXExpressionContainer;
+exports.jSXSpreadChild = exports.jsxSpreadChild = exports.JSXSpreadChild = JSXSpreadChild;
+exports.jSXIdentifier = exports.jsxIdentifier = exports.JSXIdentifier = JSXIdentifier;
+exports.jSXMemberExpression = exports.jsxMemberExpression = exports.JSXMemberExpression = JSXMemberExpression;
+exports.jSXNamespacedName = exports.jsxNamespacedName = exports.JSXNamespacedName = JSXNamespacedName;
+exports.jSXOpeningElement = exports.jsxOpeningElement = exports.JSXOpeningElement = JSXOpeningElement;
+exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = exports.JSXSpreadAttribute = JSXSpreadAttribute;
+exports.jSXText = exports.jsxText = exports.JSXText = JSXText;
+exports.jSXFragment = exports.jsxFragment = exports.JSXFragment = JSXFragment;
+exports.jSXOpeningFragment = exports.jsxOpeningFragment = exports.JSXOpeningFragment = JSXOpeningFragment;
+exports.jSXClosingFragment = exports.jsxClosingFragment = exports.JSXClosingFragment = JSXClosingFragment;
+exports.noop = exports.Noop = Noop;
+exports.parenthesizedExpression = exports.ParenthesizedExpression = ParenthesizedExpression;
+exports.awaitExpression = exports.AwaitExpression = AwaitExpression;
+exports.bindExpression = exports.BindExpression = BindExpression;
+exports.classProperty = exports.ClassProperty = ClassProperty;
+exports.import = exports.Import = Import;
+exports.decorator = exports.Decorator = Decorator;
+exports.doExpression = exports.DoExpression = DoExpression;
+exports.exportDefaultSpecifier = exports.ExportDefaultSpecifier = ExportDefaultSpecifier;
+exports.exportNamespaceSpecifier = exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier;
+exports.tSParameterProperty = exports.tsParameterProperty = exports.TSParameterProperty = TSParameterProperty;
+exports.tSDeclareFunction = exports.tsDeclareFunction = exports.TSDeclareFunction = TSDeclareFunction;
+exports.tSDeclareMethod = exports.tsDeclareMethod = exports.TSDeclareMethod = TSDeclareMethod;
+exports.tSQualifiedName = exports.tsQualifiedName = exports.TSQualifiedName = TSQualifiedName;
+exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration;
+exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration;
+exports.tSPropertySignature = exports.tsPropertySignature = exports.TSPropertySignature = TSPropertySignature;
+exports.tSMethodSignature = exports.tsMethodSignature = exports.TSMethodSignature = TSMethodSignature;
+exports.tSIndexSignature = exports.tsIndexSignature = exports.TSIndexSignature = TSIndexSignature;
+exports.tSAnyKeyword = exports.tsAnyKeyword = exports.TSAnyKeyword = TSAnyKeyword;
+exports.tSNumberKeyword = exports.tsNumberKeyword = exports.TSNumberKeyword = TSNumberKeyword;
+exports.tSObjectKeyword = exports.tsObjectKeyword = exports.TSObjectKeyword = TSObjectKeyword;
+exports.tSBooleanKeyword = exports.tsBooleanKeyword = exports.TSBooleanKeyword = TSBooleanKeyword;
+exports.tSStringKeyword = exports.tsStringKeyword = exports.TSStringKeyword = TSStringKeyword;
+exports.tSSymbolKeyword = exports.tsSymbolKeyword = exports.TSSymbolKeyword = TSSymbolKeyword;
+exports.tSVoidKeyword = exports.tsVoidKeyword = exports.TSVoidKeyword = TSVoidKeyword;
+exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = exports.TSUndefinedKeyword = TSUndefinedKeyword;
+exports.tSNullKeyword = exports.tsNullKeyword = exports.TSNullKeyword = TSNullKeyword;
+exports.tSNeverKeyword = exports.tsNeverKeyword = exports.TSNeverKeyword = TSNeverKeyword;
+exports.tSThisType = exports.tsThisType = exports.TSThisType = TSThisType;
+exports.tSFunctionType = exports.tsFunctionType = exports.TSFunctionType = TSFunctionType;
+exports.tSConstructorType = exports.tsConstructorType = exports.TSConstructorType = TSConstructorType;
+exports.tSTypeReference = exports.tsTypeReference = exports.TSTypeReference = TSTypeReference;
+exports.tSTypePredicate = exports.tsTypePredicate = exports.TSTypePredicate = TSTypePredicate;
+exports.tSTypeQuery = exports.tsTypeQuery = exports.TSTypeQuery = TSTypeQuery;
+exports.tSTypeLiteral = exports.tsTypeLiteral = exports.TSTypeLiteral = TSTypeLiteral;
+exports.tSArrayType = exports.tsArrayType = exports.TSArrayType = TSArrayType;
+exports.tSTupleType = exports.tsTupleType = exports.TSTupleType = TSTupleType;
+exports.tSUnionType = exports.tsUnionType = exports.TSUnionType = TSUnionType;
+exports.tSIntersectionType = exports.tsIntersectionType = exports.TSIntersectionType = TSIntersectionType;
+exports.tSParenthesizedType = exports.tsParenthesizedType = exports.TSParenthesizedType = TSParenthesizedType;
+exports.tSTypeOperator = exports.tsTypeOperator = exports.TSTypeOperator = TSTypeOperator;
+exports.tSIndexedAccessType = exports.tsIndexedAccessType = exports.TSIndexedAccessType = TSIndexedAccessType;
+exports.tSMappedType = exports.tsMappedType = exports.TSMappedType = TSMappedType;
+exports.tSLiteralType = exports.tsLiteralType = exports.TSLiteralType = TSLiteralType;
+exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments;
+exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = exports.TSInterfaceDeclaration = TSInterfaceDeclaration;
+exports.tSInterfaceBody = exports.tsInterfaceBody = exports.TSInterfaceBody = TSInterfaceBody;
+exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration;
+exports.tSAsExpression = exports.tsAsExpression = exports.TSAsExpression = TSAsExpression;
+exports.tSTypeAssertion = exports.tsTypeAssertion = exports.TSTypeAssertion = TSTypeAssertion;
+exports.tSEnumDeclaration = exports.tsEnumDeclaration = exports.TSEnumDeclaration = TSEnumDeclaration;
+exports.tSEnumMember = exports.tsEnumMember = exports.TSEnumMember = TSEnumMember;
+exports.tSModuleDeclaration = exports.tsModuleDeclaration = exports.TSModuleDeclaration = TSModuleDeclaration;
+exports.tSModuleBlock = exports.tsModuleBlock = exports.TSModuleBlock = TSModuleBlock;
+exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration;
+exports.tSExternalModuleReference = exports.tsExternalModuleReference = exports.TSExternalModuleReference = TSExternalModuleReference;
+exports.tSNonNullExpression = exports.tsNonNullExpression = exports.TSNonNullExpression = TSNonNullExpression;
+exports.tSExportAssignment = exports.tsExportAssignment = exports.TSExportAssignment = TSExportAssignment;
+exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration;
+exports.tSTypeAnnotation = exports.tsTypeAnnotation = exports.TSTypeAnnotation = TSTypeAnnotation;
+exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
+exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = exports.TSTypeParameterDeclaration = TSTypeParameterDeclaration;
+exports.tSTypeParameter = exports.tsTypeParameter = exports.TSTypeParameter = TSTypeParameter;
+exports.numberLiteral = exports.NumberLiteral = NumberLiteral;
+exports.regexLiteral = exports.RegexLiteral = RegexLiteral;
+exports.restProperty = exports.RestProperty = RestProperty;
+exports.spreadProperty = exports.SpreadProperty = SpreadProperty;
+
+var _builder = _interopRequireDefault(require("../builder"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function ArrayExpression() {
+  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+    args[_key] = arguments[_key];
+  }
+
+  return _builder.default.apply(void 0, ["ArrayExpression"].concat(args));
+}
+
+function AssignmentExpression() {
+  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+    args[_key2] = arguments[_key2];
+  }
+
+  return _builder.default.apply(void 0, ["AssignmentExpression"].concat(args));
+}
+
+function BinaryExpression() {
+  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+    args[_key3] = arguments[_key3];
+  }
+
+  return _builder.default.apply(void 0, ["BinaryExpression"].concat(args));
+}
+
+function Directive() {
+  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+    args[_key4] = arguments[_key4];
+  }
+
+  return _builder.default.apply(void 0, ["Directive"].concat(args));
+}
+
+function DirectiveLiteral() {
+  for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+    args[_key5] = arguments[_key5];
+  }
+
+  return _builder.default.apply(void 0, ["DirectiveLiteral"].concat(args));
+}
+
+function BlockStatement() {
+  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
+    args[_key6] = arguments[_key6];
+  }
+
+  return _builder.default.apply(void 0, ["BlockStatement"].concat(args));
+}
+
+function BreakStatement() {
+  for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
+    args[_key7] = arguments[_key7];
+  }
+
+  return _builder.default.apply(void 0, ["BreakStatement"].concat(args));
+}
+
+function CallExpression() {
+  for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
+    args[_key8] = arguments[_key8];
+  }
+
+  return _builder.default.apply(void 0, ["CallExpression"].concat(args));
+}
+
+function CatchClause() {
+  for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
+    args[_key9] = arguments[_key9];
+  }
+
+  return _builder.default.apply(void 0, ["CatchClause"].concat(args));
+}
+
+function ConditionalExpression() {
+  for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
+    args[_key10] = arguments[_key10];
+  }
+
+  return _builder.default.apply(void 0, ["ConditionalExpression"].concat(args));
+}
+
+function ContinueStatement() {
+  for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
+    args[_key11] = arguments[_key11];
+  }
+
+  return _builder.default.apply(void 0, ["ContinueStatement"].concat(args));
+}
+
+function DebuggerStatement() {
+  for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
+    args[_key12] = arguments[_key12];
+  }
+
+  return _builder.default.apply(void 0, ["DebuggerStatement"].concat(args));
+}
+
+function DoWhileStatement() {
+  for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
+    args[_key13] = arguments[_key13];
+  }
+
+  return _builder.default.apply(void 0, ["DoWhileStatement"].concat(args));
+}
+
+function EmptyStatement() {
+  for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
+    args[_key14] = arguments[_key14];
+  }
+
+  return _builder.default.apply(void 0, ["EmptyStatement"].concat(args));
+}
+
+function ExpressionStatement() {
+  for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
+    args[_key15] = arguments[_key15];
+  }
+
+  return _builder.default.apply(void 0, ["ExpressionStatement"].concat(args));
+}
+
+function File() {
+  for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
+    args[_key16] = arguments[_key16];
+  }
+
+  return _builder.default.apply(void 0, ["File"].concat(args));
+}
+
+function ForInStatement() {
+  for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
+    args[_key17] = arguments[_key17];
+  }
+
+  return _builder.default.apply(void 0, ["ForInStatement"].concat(args));
+}
+
+function ForStatement() {
+  for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
+    args[_key18] = arguments[_key18];
+  }
+
+  return _builder.default.apply(void 0, ["ForStatement"].concat(args));
+}
+
+function FunctionDeclaration() {
+  for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
+    args[_key19] = arguments[_key19];
+  }
+
+  return _builder.default.apply(void 0, ["FunctionDeclaration"].concat(args));
+}
+
+function FunctionExpression() {
+  for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
+    args[_key20] = arguments[_key20];
+  }
+
+  return _builder.default.apply(void 0, ["FunctionExpression"].concat(args));
+}
+
+function Identifier() {
+  for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
+    args[_key21] = arguments[_key21];
+  }
+
+  return _builder.default.apply(void 0, ["Identifier"].concat(args));
+}
+
+function IfStatement() {
+  for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
+    args[_key22] = arguments[_key22];
+  }
+
+  return _builder.default.apply(void 0, ["IfStatement"].concat(args));
+}
+
+function LabeledStatement() {
+  for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
+    args[_key23] = arguments[_key23];
+  }
+
+  return _builder.default.apply(void 0, ["LabeledStatement"].concat(args));
+}
+
+function StringLiteral() {
+  for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
+    args[_key24] = arguments[_key24];
+  }
+
+  return _builder.default.apply(void 0, ["StringLiteral"].concat(args));
+}
+
+function NumericLiteral() {
+  for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
+    args[_key25] = arguments[_key25];
+  }
+
+  return _builder.default.apply(void 0, ["NumericLiteral"].concat(args));
+}
+
+function NullLiteral() {
+  for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
+    args[_key26] = arguments[_key26];
+  }
+
+  return _builder.default.apply(void 0, ["NullLiteral"].concat(args));
+}
+
+function BooleanLiteral() {
+  for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
+    args[_key27] = arguments[_key27];
+  }
+
+  return _builder.default.apply(void 0, ["BooleanLiteral"].concat(args));
+}
+
+function RegExpLiteral() {
+  for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
+    args[_key28] = arguments[_key28];
+  }
+
+  return _builder.default.apply(void 0, ["RegExpLiteral"].concat(args));
+}
+
+function LogicalExpression() {
+  for (var _len29 = arguments.length, args = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {
+    args[_key29] = arguments[_key29];
+  }
+
+  return _builder.default.apply(void 0, ["LogicalExpression"].concat(args));
+}
+
+function MemberExpression() {
+  for (var _len30 = arguments.length, args = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {
+    args[_key30] = arguments[_key30];
+  }
+
+  return _builder.default.apply(void 0, ["MemberExpression"].concat(args));
+}
+
+function NewExpression() {
+  for (var _len31 = arguments.length, args = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {
+    args[_key31] = arguments[_key31];
+  }
+
+  return _builder.default.apply(void 0, ["NewExpression"].concat(args));
+}
+
+function Program() {
+  for (var _len32 = arguments.length, args = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {
+    args[_key32] = arguments[_key32];
+  }
+
+  return _builder.default.apply(void 0, ["Program"].concat(args));
+}
+
+function ObjectExpression() {
+  for (var _len33 = arguments.length, args = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {
+    args[_key33] = arguments[_key33];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectExpression"].concat(args));
+}
+
+function ObjectMethod() {
+  for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {
+    args[_key34] = arguments[_key34];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectMethod"].concat(args));
+}
+
+function ObjectProperty() {
+  for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {
+    args[_key35] = arguments[_key35];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectProperty"].concat(args));
+}
+
+function RestElement() {
+  for (var _len36 = arguments.length, args = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {
+    args[_key36] = arguments[_key36];
+  }
+
+  return _builder.default.apply(void 0, ["RestElement"].concat(args));
+}
+
+function ReturnStatement() {
+  for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {
+    args[_key37] = arguments[_key37];
+  }
+
+  return _builder.default.apply(void 0, ["ReturnStatement"].concat(args));
+}
+
+function SequenceExpression() {
+  for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {
+    args[_key38] = arguments[_key38];
+  }
+
+  return _builder.default.apply(void 0, ["SequenceExpression"].concat(args));
+}
+
+function SwitchCase() {
+  for (var _len39 = arguments.length, args = new Array(_len39), _key39 = 0; _key39 < _len39; _key39++) {
+    args[_key39] = arguments[_key39];
+  }
+
+  return _builder.default.apply(void 0, ["SwitchCase"].concat(args));
+}
+
+function SwitchStatement() {
+  for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {
+    args[_key40] = arguments[_key40];
+  }
+
+  return _builder.default.apply(void 0, ["SwitchStatement"].concat(args));
+}
+
+function ThisExpression() {
+  for (var _len41 = arguments.length, args = new Array(_len41), _key41 = 0; _key41 < _len41; _key41++) {
+    args[_key41] = arguments[_key41];
+  }
+
+  return _builder.default.apply(void 0, ["ThisExpression"].concat(args));
+}
+
+function ThrowStatement() {
+  for (var _len42 = arguments.length, args = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {
+    args[_key42] = arguments[_key42];
+  }
+
+  return _builder.default.apply(void 0, ["ThrowStatement"].concat(args));
+}
+
+function TryStatement() {
+  for (var _len43 = arguments.length, args = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {
+    args[_key43] = arguments[_key43];
+  }
+
+  return _builder.default.apply(void 0, ["TryStatement"].concat(args));
+}
+
+function UnaryExpression() {
+  for (var _len44 = arguments.length, args = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {
+    args[_key44] = arguments[_key44];
+  }
+
+  return _builder.default.apply(void 0, ["UnaryExpression"].concat(args));
+}
+
+function UpdateExpression() {
+  for (var _len45 = arguments.length, args = new Array(_len45), _key45 = 0; _key45 < _len45; _key45++) {
+    args[_key45] = arguments[_key45];
+  }
+
+  return _builder.default.apply(void 0, ["UpdateExpression"].concat(args));
+}
+
+function VariableDeclaration() {
+  for (var _len46 = arguments.length, args = new Array(_len46), _key46 = 0; _key46 < _len46; _key46++) {
+    args[_key46] = arguments[_key46];
+  }
+
+  return _builder.default.apply(void 0, ["VariableDeclaration"].concat(args));
+}
+
+function VariableDeclarator() {
+  for (var _len47 = arguments.length, args = new Array(_len47), _key47 = 0; _key47 < _len47; _key47++) {
+    args[_key47] = arguments[_key47];
+  }
+
+  return _builder.default.apply(void 0, ["VariableDeclarator"].concat(args));
+}
+
+function WhileStatement() {
+  for (var _len48 = arguments.length, args = new Array(_len48), _key48 = 0; _key48 < _len48; _key48++) {
+    args[_key48] = arguments[_key48];
+  }
+
+  return _builder.default.apply(void 0, ["WhileStatement"].concat(args));
+}
+
+function WithStatement() {
+  for (var _len49 = arguments.length, args = new Array(_len49), _key49 = 0; _key49 < _len49; _key49++) {
+    args[_key49] = arguments[_key49];
+  }
+
+  return _builder.default.apply(void 0, ["WithStatement"].concat(args));
+}
+
+function AssignmentPattern() {
+  for (var _len50 = arguments.length, args = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {
+    args[_key50] = arguments[_key50];
+  }
+
+  return _builder.default.apply(void 0, ["AssignmentPattern"].concat(args));
+}
+
+function ArrayPattern() {
+  for (var _len51 = arguments.length, args = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {
+    args[_key51] = arguments[_key51];
+  }
+
+  return _builder.default.apply(void 0, ["ArrayPattern"].concat(args));
+}
+
+function ArrowFunctionExpression() {
+  for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {
+    args[_key52] = arguments[_key52];
+  }
+
+  return _builder.default.apply(void 0, ["ArrowFunctionExpression"].concat(args));
+}
+
+function ClassBody() {
+  for (var _len53 = arguments.length, args = new Array(_len53), _key53 = 0; _key53 < _len53; _key53++) {
+    args[_key53] = arguments[_key53];
+  }
+
+  return _builder.default.apply(void 0, ["ClassBody"].concat(args));
+}
+
+function ClassDeclaration() {
+  for (var _len54 = arguments.length, args = new Array(_len54), _key54 = 0; _key54 < _len54; _key54++) {
+    args[_key54] = arguments[_key54];
+  }
+
+  return _builder.default.apply(void 0, ["ClassDeclaration"].concat(args));
+}
+
+function ClassExpression() {
+  for (var _len55 = arguments.length, args = new Array(_len55), _key55 = 0; _key55 < _len55; _key55++) {
+    args[_key55] = arguments[_key55];
+  }
+
+  return _builder.default.apply(void 0, ["ClassExpression"].concat(args));
+}
+
+function ExportAllDeclaration() {
+  for (var _len56 = arguments.length, args = new Array(_len56), _key56 = 0; _key56 < _len56; _key56++) {
+    args[_key56] = arguments[_key56];
+  }
+
+  return _builder.default.apply(void 0, ["ExportAllDeclaration"].concat(args));
+}
+
+function ExportDefaultDeclaration() {
+  for (var _len57 = arguments.length, args = new Array(_len57), _key57 = 0; _key57 < _len57; _key57++) {
+    args[_key57] = arguments[_key57];
+  }
+
+  return _builder.default.apply(void 0, ["ExportDefaultDeclaration"].concat(args));
+}
+
+function ExportNamedDeclaration() {
+  for (var _len58 = arguments.length, args = new Array(_len58), _key58 = 0; _key58 < _len58; _key58++) {
+    args[_key58] = arguments[_key58];
+  }
+
+  return _builder.default.apply(void 0, ["ExportNamedDeclaration"].concat(args));
+}
+
+function ExportSpecifier() {
+  for (var _len59 = arguments.length, args = new Array(_len59), _key59 = 0; _key59 < _len59; _key59++) {
+    args[_key59] = arguments[_key59];
+  }
+
+  return _builder.default.apply(void 0, ["ExportSpecifier"].concat(args));
+}
+
+function ForOfStatement() {
+  for (var _len60 = arguments.length, args = new Array(_len60), _key60 = 0; _key60 < _len60; _key60++) {
+    args[_key60] = arguments[_key60];
+  }
+
+  return _builder.default.apply(void 0, ["ForOfStatement"].concat(args));
+}
+
+function ImportDeclaration() {
+  for (var _len61 = arguments.length, args = new Array(_len61), _key61 = 0; _key61 < _len61; _key61++) {
+    args[_key61] = arguments[_key61];
+  }
+
+  return _builder.default.apply(void 0, ["ImportDeclaration"].concat(args));
+}
+
+function ImportDefaultSpecifier() {
+  for (var _len62 = arguments.length, args = new Array(_len62), _key62 = 0; _key62 < _len62; _key62++) {
+    args[_key62] = arguments[_key62];
+  }
+
+  return _builder.default.apply(void 0, ["ImportDefaultSpecifier"].concat(args));
+}
+
+function ImportNamespaceSpecifier() {
+  for (var _len63 = arguments.length, args = new Array(_len63), _key63 = 0; _key63 < _len63; _key63++) {
+    args[_key63] = arguments[_key63];
+  }
+
+  return _builder.default.apply(void 0, ["ImportNamespaceSpecifier"].concat(args));
+}
+
+function ImportSpecifier() {
+  for (var _len64 = arguments.length, args = new Array(_len64), _key64 = 0; _key64 < _len64; _key64++) {
+    args[_key64] = arguments[_key64];
+  }
+
+  return _builder.default.apply(void 0, ["ImportSpecifier"].concat(args));
+}
+
+function MetaProperty() {
+  for (var _len65 = arguments.length, args = new Array(_len65), _key65 = 0; _key65 < _len65; _key65++) {
+    args[_key65] = arguments[_key65];
+  }
+
+  return _builder.default.apply(void 0, ["MetaProperty"].concat(args));
+}
+
+function ClassMethod() {
+  for (var _len66 = arguments.length, args = new Array(_len66), _key66 = 0; _key66 < _len66; _key66++) {
+    args[_key66] = arguments[_key66];
+  }
+
+  return _builder.default.apply(void 0, ["ClassMethod"].concat(args));
+}
+
+function ObjectPattern() {
+  for (var _len67 = arguments.length, args = new Array(_len67), _key67 = 0; _key67 < _len67; _key67++) {
+    args[_key67] = arguments[_key67];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectPattern"].concat(args));
+}
+
+function SpreadElement() {
+  for (var _len68 = arguments.length, args = new Array(_len68), _key68 = 0; _key68 < _len68; _key68++) {
+    args[_key68] = arguments[_key68];
+  }
+
+  return _builder.default.apply(void 0, ["SpreadElement"].concat(args));
+}
+
+function Super() {
+  for (var _len69 = arguments.length, args = new Array(_len69), _key69 = 0; _key69 < _len69; _key69++) {
+    args[_key69] = arguments[_key69];
+  }
+
+  return _builder.default.apply(void 0, ["Super"].concat(args));
+}
+
+function TaggedTemplateExpression() {
+  for (var _len70 = arguments.length, args = new Array(_len70), _key70 = 0; _key70 < _len70; _key70++) {
+    args[_key70] = arguments[_key70];
+  }
+
+  return _builder.default.apply(void 0, ["TaggedTemplateExpression"].concat(args));
+}
+
+function TemplateElement() {
+  for (var _len71 = arguments.length, args = new Array(_len71), _key71 = 0; _key71 < _len71; _key71++) {
+    args[_key71] = arguments[_key71];
+  }
+
+  return _builder.default.apply(void 0, ["TemplateElement"].concat(args));
+}
+
+function TemplateLiteral() {
+  for (var _len72 = arguments.length, args = new Array(_len72), _key72 = 0; _key72 < _len72; _key72++) {
+    args[_key72] = arguments[_key72];
+  }
+
+  return _builder.default.apply(void 0, ["TemplateLiteral"].concat(args));
+}
+
+function YieldExpression() {
+  for (var _len73 = arguments.length, args = new Array(_len73), _key73 = 0; _key73 < _len73; _key73++) {
+    args[_key73] = arguments[_key73];
+  }
+
+  return _builder.default.apply(void 0, ["YieldExpression"].concat(args));
+}
+
+function AnyTypeAnnotation() {
+  for (var _len74 = arguments.length, args = new Array(_len74), _key74 = 0; _key74 < _len74; _key74++) {
+    args[_key74] = arguments[_key74];
+  }
+
+  return _builder.default.apply(void 0, ["AnyTypeAnnotation"].concat(args));
+}
+
+function ArrayTypeAnnotation() {
+  for (var _len75 = arguments.length, args = new Array(_len75), _key75 = 0; _key75 < _len75; _key75++) {
+    args[_key75] = arguments[_key75];
+  }
+
+  return _builder.default.apply(void 0, ["ArrayTypeAnnotation"].concat(args));
+}
+
+function BooleanTypeAnnotation() {
+  for (var _len76 = arguments.length, args = new Array(_len76), _key76 = 0; _key76 < _len76; _key76++) {
+    args[_key76] = arguments[_key76];
+  }
+
+  return _builder.default.apply(void 0, ["BooleanTypeAnnotation"].concat(args));
+}
+
+function BooleanLiteralTypeAnnotation() {
+  for (var _len77 = arguments.length, args = new Array(_len77), _key77 = 0; _key77 < _len77; _key77++) {
+    args[_key77] = arguments[_key77];
+  }
+
+  return _builder.default.apply(void 0, ["BooleanLiteralTypeAnnotation"].concat(args));
+}
+
+function NullLiteralTypeAnnotation() {
+  for (var _len78 = arguments.length, args = new Array(_len78), _key78 = 0; _key78 < _len78; _key78++) {
+    args[_key78] = arguments[_key78];
+  }
+
+  return _builder.default.apply(void 0, ["NullLiteralTypeAnnotation"].concat(args));
+}
+
+function ClassImplements() {
+  for (var _len79 = arguments.length, args = new Array(_len79), _key79 = 0; _key79 < _len79; _key79++) {
+    args[_key79] = arguments[_key79];
+  }
+
+  return _builder.default.apply(void 0, ["ClassImplements"].concat(args));
+}
+
+function DeclareClass() {
+  for (var _len80 = arguments.length, args = new Array(_len80), _key80 = 0; _key80 < _len80; _key80++) {
+    args[_key80] = arguments[_key80];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareClass"].concat(args));
+}
+
+function DeclareFunction() {
+  for (var _len81 = arguments.length, args = new Array(_len81), _key81 = 0; _key81 < _len81; _key81++) {
+    args[_key81] = arguments[_key81];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareFunction"].concat(args));
+}
+
+function DeclareInterface() {
+  for (var _len82 = arguments.length, args = new Array(_len82), _key82 = 0; _key82 < _len82; _key82++) {
+    args[_key82] = arguments[_key82];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareInterface"].concat(args));
+}
+
+function DeclareModule() {
+  for (var _len83 = arguments.length, args = new Array(_len83), _key83 = 0; _key83 < _len83; _key83++) {
+    args[_key83] = arguments[_key83];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareModule"].concat(args));
+}
+
+function DeclareModuleExports() {
+  for (var _len84 = arguments.length, args = new Array(_len84), _key84 = 0; _key84 < _len84; _key84++) {
+    args[_key84] = arguments[_key84];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareModuleExports"].concat(args));
+}
+
+function DeclareTypeAlias() {
+  for (var _len85 = arguments.length, args = new Array(_len85), _key85 = 0; _key85 < _len85; _key85++) {
+    args[_key85] = arguments[_key85];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareTypeAlias"].concat(args));
+}
+
+function DeclareOpaqueType() {
+  for (var _len86 = arguments.length, args = new Array(_len86), _key86 = 0; _key86 < _len86; _key86++) {
+    args[_key86] = arguments[_key86];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareOpaqueType"].concat(args));
+}
+
+function DeclareVariable() {
+  for (var _len87 = arguments.length, args = new Array(_len87), _key87 = 0; _key87 < _len87; _key87++) {
+    args[_key87] = arguments[_key87];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareVariable"].concat(args));
+}
+
+function DeclareExportDeclaration() {
+  for (var _len88 = arguments.length, args = new Array(_len88), _key88 = 0; _key88 < _len88; _key88++) {
+    args[_key88] = arguments[_key88];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareExportDeclaration"].concat(args));
+}
+
+function DeclareExportAllDeclaration() {
+  for (var _len89 = arguments.length, args = new Array(_len89), _key89 = 0; _key89 < _len89; _key89++) {
+    args[_key89] = arguments[_key89];
+  }
+
+  return _builder.default.apply(void 0, ["DeclareExportAllDeclaration"].concat(args));
+}
+
+function DeclaredPredicate() {
+  for (var _len90 = arguments.length, args = new Array(_len90), _key90 = 0; _key90 < _len90; _key90++) {
+    args[_key90] = arguments[_key90];
+  }
+
+  return _builder.default.apply(void 0, ["DeclaredPredicate"].concat(args));
+}
+
+function ExistsTypeAnnotation() {
+  for (var _len91 = arguments.length, args = new Array(_len91), _key91 = 0; _key91 < _len91; _key91++) {
+    args[_key91] = arguments[_key91];
+  }
+
+  return _builder.default.apply(void 0, ["ExistsTypeAnnotation"].concat(args));
+}
+
+function FunctionTypeAnnotation() {
+  for (var _len92 = arguments.length, args = new Array(_len92), _key92 = 0; _key92 < _len92; _key92++) {
+    args[_key92] = arguments[_key92];
+  }
+
+  return _builder.default.apply(void 0, ["FunctionTypeAnnotation"].concat(args));
+}
+
+function FunctionTypeParam() {
+  for (var _len93 = arguments.length, args = new Array(_len93), _key93 = 0; _key93 < _len93; _key93++) {
+    args[_key93] = arguments[_key93];
+  }
+
+  return _builder.default.apply(void 0, ["FunctionTypeParam"].concat(args));
+}
+
+function GenericTypeAnnotation() {
+  for (var _len94 = arguments.length, args = new Array(_len94), _key94 = 0; _key94 < _len94; _key94++) {
+    args[_key94] = arguments[_key94];
+  }
+
+  return _builder.default.apply(void 0, ["GenericTypeAnnotation"].concat(args));
+}
+
+function InferredPredicate() {
+  for (var _len95 = arguments.length, args = new Array(_len95), _key95 = 0; _key95 < _len95; _key95++) {
+    args[_key95] = arguments[_key95];
+  }
+
+  return _builder.default.apply(void 0, ["InferredPredicate"].concat(args));
+}
+
+function InterfaceExtends() {
+  for (var _len96 = arguments.length, args = new Array(_len96), _key96 = 0; _key96 < _len96; _key96++) {
+    args[_key96] = arguments[_key96];
+  }
+
+  return _builder.default.apply(void 0, ["InterfaceExtends"].concat(args));
+}
+
+function InterfaceDeclaration() {
+  for (var _len97 = arguments.length, args = new Array(_len97), _key97 = 0; _key97 < _len97; _key97++) {
+    args[_key97] = arguments[_key97];
+  }
+
+  return _builder.default.apply(void 0, ["InterfaceDeclaration"].concat(args));
+}
+
+function IntersectionTypeAnnotation() {
+  for (var _len98 = arguments.length, args = new Array(_len98), _key98 = 0; _key98 < _len98; _key98++) {
+    args[_key98] = arguments[_key98];
+  }
+
+  return _builder.default.apply(void 0, ["IntersectionTypeAnnotation"].concat(args));
+}
+
+function MixedTypeAnnotation() {
+  for (var _len99 = arguments.length, args = new Array(_len99), _key99 = 0; _key99 < _len99; _key99++) {
+    args[_key99] = arguments[_key99];
+  }
+
+  return _builder.default.apply(void 0, ["MixedTypeAnnotation"].concat(args));
+}
+
+function EmptyTypeAnnotation() {
+  for (var _len100 = arguments.length, args = new Array(_len100), _key100 = 0; _key100 < _len100; _key100++) {
+    args[_key100] = arguments[_key100];
+  }
+
+  return _builder.default.apply(void 0, ["EmptyTypeAnnotation"].concat(args));
+}
+
+function NullableTypeAnnotation() {
+  for (var _len101 = arguments.length, args = new Array(_len101), _key101 = 0; _key101 < _len101; _key101++) {
+    args[_key101] = arguments[_key101];
+  }
+
+  return _builder.default.apply(void 0, ["NullableTypeAnnotation"].concat(args));
+}
+
+function NumberLiteralTypeAnnotation() {
+  for (var _len102 = arguments.length, args = new Array(_len102), _key102 = 0; _key102 < _len102; _key102++) {
+    args[_key102] = arguments[_key102];
+  }
+
+  return _builder.default.apply(void 0, ["NumberLiteralTypeAnnotation"].concat(args));
+}
+
+function NumberTypeAnnotation() {
+  for (var _len103 = arguments.length, args = new Array(_len103), _key103 = 0; _key103 < _len103; _key103++) {
+    args[_key103] = arguments[_key103];
+  }
+
+  return _builder.default.apply(void 0, ["NumberTypeAnnotation"].concat(args));
+}
+
+function ObjectTypeAnnotation() {
+  for (var _len104 = arguments.length, args = new Array(_len104), _key104 = 0; _key104 < _len104; _key104++) {
+    args[_key104] = arguments[_key104];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectTypeAnnotation"].concat(args));
+}
+
+function ObjectTypeCallProperty() {
+  for (var _len105 = arguments.length, args = new Array(_len105), _key105 = 0; _key105 < _len105; _key105++) {
+    args[_key105] = arguments[_key105];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectTypeCallProperty"].concat(args));
+}
+
+function ObjectTypeIndexer() {
+  for (var _len106 = arguments.length, args = new Array(_len106), _key106 = 0; _key106 < _len106; _key106++) {
+    args[_key106] = arguments[_key106];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectTypeIndexer"].concat(args));
+}
+
+function ObjectTypeProperty() {
+  for (var _len107 = arguments.length, args = new Array(_len107), _key107 = 0; _key107 < _len107; _key107++) {
+    args[_key107] = arguments[_key107];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectTypeProperty"].concat(args));
+}
+
+function ObjectTypeSpreadProperty() {
+  for (var _len108 = arguments.length, args = new Array(_len108), _key108 = 0; _key108 < _len108; _key108++) {
+    args[_key108] = arguments[_key108];
+  }
+
+  return _builder.default.apply(void 0, ["ObjectTypeSpreadProperty"].concat(args));
+}
+
+function OpaqueType() {
+  for (var _len109 = arguments.length, args = new Array(_len109), _key109 = 0; _key109 < _len109; _key109++) {
+    args[_key109] = arguments[_key109];
+  }
+
+  return _builder.default.apply(void 0, ["OpaqueType"].concat(args));
+}
+
+function QualifiedTypeIdentifier() {
+  for (var _len110 = arguments.length, args = new Array(_len110), _key110 = 0; _key110 < _len110; _key110++) {
+    args[_key110] = arguments[_key110];
+  }
+
+  return _builder.default.apply(void 0, ["QualifiedTypeIdentifier"].concat(args));
+}
+
+function StringLiteralTypeAnnotation() {
+  for (var _len111 = arguments.length, args = new Array(_len111), _key111 = 0; _key111 < _len111; _key111++) {
+    args[_key111] = arguments[_key111];
+  }
+
+  return _builder.default.apply(void 0, ["StringLiteralTypeAnnotation"].concat(args));
+}
+
+function StringTypeAnnotation() {
+  for (var _len112 = arguments.length, args = new Array(_len112), _key112 = 0; _key112 < _len112; _key112++) {
+    args[_key112] = arguments[_key112];
+  }
+
+  return _builder.default.apply(void 0, ["StringTypeAnnotation"].concat(args));
+}
+
+function ThisTypeAnnotation() {
+  for (var _len113 = arguments.length, args = new Array(_len113), _key113 = 0; _key113 < _len113; _key113++) {
+    args[_key113] = arguments[_key113];
+  }
+
+  return _builder.default.apply(void 0, ["ThisTypeAnnotation"].concat(args));
+}
+
+function TupleTypeAnnotation() {
+  for (var _len114 = arguments.length, args = new Array(_len114), _key114 = 0; _key114 < _len114; _key114++) {
+    args[_key114] = arguments[_key114];
+  }
+
+  return _builder.default.apply(void 0, ["TupleTypeAnnotation"].concat(args));
+}
+
+function TypeofTypeAnnotation() {
+  for (var _len115 = arguments.length, args = new Array(_len115), _key115 = 0; _key115 < _len115; _key115++) {
+    args[_key115] = arguments[_key115];
+  }
+
+  return _builder.default.apply(void 0, ["TypeofTypeAnnotation"].concat(args));
+}
+
+function TypeAlias() {
+  for (var _len116 = arguments.length, args = new Array(_len116), _key116 = 0; _key116 < _len116; _key116++) {
+    args[_key116] = arguments[_key116];
+  }
+
+  return _builder.default.apply(void 0, ["TypeAlias"].concat(args));
+}
+
+function TypeAnnotation() {
+  for (var _len117 = arguments.length, args = new Array(_len117), _key117 = 0; _key117 < _len117; _key117++) {
+    args[_key117] = arguments[_key117];
+  }
+
+  return _builder.default.apply(void 0, ["TypeAnnotation"].concat(args));
+}
+
+function TypeCastExpression() {
+  for (var _len118 = arguments.length, args = new Array(_len118), _key118 = 0; _key118 < _len118; _key118++) {
+    args[_key118] = arguments[_key118];
+  }
+
+  return _builder.default.apply(void 0, ["TypeCastExpression"].concat(args));
+}
+
+function TypeParameter() {
+  for (var _len119 = arguments.length, args = new Array(_len119), _key119 = 0; _key119 < _len119; _key119++) {
+    args[_key119] = arguments[_key119];
+  }
+
+  return _builder.default.apply(void 0, ["TypeParameter"].concat(args));
+}
+
+function TypeParameterDeclaration() {
+  for (var _len120 = arguments.length, args = new Array(_len120), _key120 = 0; _key120 < _len120; _key120++) {
+    args[_key120] = arguments[_key120];
+  }
+
+  return _builder.default.apply(void 0, ["TypeParameterDeclaration"].concat(args));
+}
+
+function TypeParameterInstantiation() {
+  for (var _len121 = arguments.length, args = new Array(_len121), _key121 = 0; _key121 < _len121; _key121++) {
+    args[_key121] = arguments[_key121];
+  }
+
+  return _builder.default.apply(void 0, ["TypeParameterInstantiation"].concat(args));
+}
+
+function UnionTypeAnnotation() {
+  for (var _len122 = arguments.length, args = new Array(_len122), _key122 = 0; _key122 < _len122; _key122++) {
+    args[_key122] = arguments[_key122];
+  }
+
+  return _builder.default.apply(void 0, ["UnionTypeAnnotation"].concat(args));
+}
+
+function VoidTypeAnnotation() {
+  for (var _len123 = arguments.length, args = new Array(_len123), _key123 = 0; _key123 < _len123; _key123++) {
+    args[_key123] = arguments[_key123];
+  }
+
+  return _builder.default.apply(void 0, ["VoidTypeAnnotation"].concat(args));
+}
+
+function JSXAttribute() {
+  for (var _len124 = arguments.length, args = new Array(_len124), _key124 = 0; _key124 < _len124; _key124++) {
+    args[_key124] = arguments[_key124];
+  }
+
+  return _builder.default.apply(void 0, ["JSXAttribute"].concat(args));
+}
+
+function JSXClosingElement() {
+  for (var _len125 = arguments.length, args = new Array(_len125), _key125 = 0; _key125 < _len125; _key125++) {
+    args[_key125] = arguments[_key125];
+  }
+
+  return _builder.default.apply(void 0, ["JSXClosingElement"].concat(args));
+}
+
+function JSXElement() {
+  for (var _len126 = arguments.length, args = new Array(_len126), _key126 = 0; _key126 < _len126; _key126++) {
+    args[_key126] = arguments[_key126];
+  }
+
+  return _builder.default.apply(void 0, ["JSXElement"].concat(args));
+}
+
+function JSXEmptyExpression() {
+  for (var _len127 = arguments.length, args = new Array(_len127), _key127 = 0; _key127 < _len127; _key127++) {
+    args[_key127] = arguments[_key127];
+  }
+
+  return _builder.default.apply(void 0, ["JSXEmptyExpression"].concat(args));
+}
+
+function JSXExpressionContainer() {
+  for (var _len128 = arguments.length, args = new Array(_len128), _key128 = 0; _key128 < _len128; _key128++) {
+    args[_key128] = arguments[_key128];
+  }
+
+  return _builder.default.apply(void 0, ["JSXExpressionContainer"].concat(args));
+}
+
+function JSXSpreadChild() {
+  for (var _len129 = arguments.length, args = new Array(_len129), _key129 = 0; _key129 < _len129; _key129++) {
+    args[_key129] = arguments[_key129];
+  }
+
+  return _builder.default.apply(void 0, ["JSXSpreadChild"].concat(args));
+}
+
+function JSXIdentifier() {
+  for (var _len130 = arguments.length, args = new Array(_len130), _key130 = 0; _key130 < _len130; _key130++) {
+    args[_key130] = arguments[_key130];
+  }
+
+  return _builder.default.apply(void 0, ["JSXIdentifier"].concat(args));
+}
+
+function JSXMemberExpression() {
+  for (var _len131 = arguments.length, args = new Array(_len131), _key131 = 0; _key131 < _len131; _key131++) {
+    args[_key131] = arguments[_key131];
+  }
+
+  return _builder.default.apply(void 0, ["JSXMemberExpression"].concat(args));
+}
+
+function JSXNamespacedName() {
+  for (var _len132 = arguments.length, args = new Array(_len132), _key132 = 0; _key132 < _len132; _key132++) {
+    args[_key132] = arguments[_key132];
+  }
+
+  return _builder.default.apply(void 0, ["JSXNamespacedName"].concat(args));
+}
+
+function JSXOpeningElement() {
+  for (var _len133 = arguments.length, args = new Array(_len133), _key133 = 0; _key133 < _len133; _key133++) {
+    args[_key133] = arguments[_key133];
+  }
+
+  return _builder.default.apply(void 0, ["JSXOpeningElement"].concat(args));
+}
+
+function JSXSpreadAttribute() {
+  for (var _len134 = arguments.length, args = new Array(_len134), _key134 = 0; _key134 < _len134; _key134++) {
+    args[_key134] = arguments[_key134];
+  }
+
+  return _builder.default.apply(void 0, ["JSXSpreadAttribute"].concat(args));
+}
+
+function JSXText() {
+  for (var _len135 = arguments.length, args = new Array(_len135), _key135 = 0; _key135 < _len135; _key135++) {
+    args[_key135] = arguments[_key135];
+  }
+
+  return _builder.default.apply(void 0, ["JSXText"].concat(args));
+}
+
+function JSXFragment() {
+  for (var _len136 = arguments.length, args = new Array(_len136), _key136 = 0; _key136 < _len136; _key136++) {
+    args[_key136] = arguments[_key136];
+  }
+
+  return _builder.default.apply(void 0, ["JSXFragment"].concat(args));
+}
+
+function JSXOpeningFragment() {
+  for (var _len137 = arguments.length, args = new Array(_len137), _key137 = 0; _key137 < _len137; _key137++) {
+    args[_key137] = arguments[_key137];
+  }
+
+  return _builder.default.apply(void 0, ["JSXOpeningFragment"].concat(args));
+}
+
+function JSXClosingFragment() {
+  for (var _len138 = arguments.length, args = new Array(_len138), _key138 = 0; _key138 < _len138; _key138++) {
+    args[_key138] = arguments[_key138];
+  }
+
+  return _builder.default.apply(void 0, ["JSXClosingFragment"].concat(args));
+}
+
+function Noop() {
+  for (var _len139 = arguments.length, args = new Array(_len139), _key139 = 0; _key139 < _len139; _key139++) {
+    args[_key139] = arguments[_key139];
+  }
+
+  return _builder.default.apply(void 0, ["Noop"].concat(args));
+}
+
+function ParenthesizedExpression() {
+  for (var _len140 = arguments.length, args = new Array(_len140), _key140 = 0; _key140 < _len140; _key140++) {
+    args[_key140] = arguments[_key140];
+  }
+
+  return _builder.default.apply(void 0, ["ParenthesizedExpression"].concat(args));
+}
+
+function AwaitExpression() {
+  for (var _len141 = arguments.length, args = new Array(_len141), _key141 = 0; _key141 < _len141; _key141++) {
+    args[_key141] = arguments[_key141];
+  }
+
+  return _builder.default.apply(void 0, ["AwaitExpression"].concat(args));
+}
+
+function BindExpression() {
+  for (var _len142 = arguments.length, args = new Array(_len142), _key142 = 0; _key142 < _len142; _key142++) {
+    args[_key142] = arguments[_key142];
+  }
+
+  return _builder.default.apply(void 0, ["BindExpression"].concat(args));
+}
+
+function ClassProperty() {
+  for (var _len143 = arguments.length, args = new Array(_len143), _key143 = 0; _key143 < _len143; _key143++) {
+    args[_key143] = arguments[_key143];
+  }
+
+  return _builder.default.apply(void 0, ["ClassProperty"].concat(args));
+}
+
+function Import() {
+  for (var _len144 = arguments.length, args = new Array(_len144), _key144 = 0; _key144 < _len144; _key144++) {
+    args[_key144] = arguments[_key144];
+  }
+
+  return _builder.default.apply(void 0, ["Import"].concat(args));
+}
+
+function Decorator() {
+  for (var _len145 = arguments.length, args = new Array(_len145), _key145 = 0; _key145 < _len145; _key145++) {
+    args[_key145] = arguments[_key145];
+  }
+
+  return _builder.default.apply(void 0, ["Decorator"].concat(args));
+}
+
+function DoExpression() {
+  for (var _len146 = arguments.length, args = new Array(_len146), _key146 = 0; _key146 < _len146; _key146++) {
+    args[_key146] = arguments[_key146];
+  }
+
+  return _builder.default.apply(void 0, ["DoExpression"].concat(args));
+}
+
+function ExportDefaultSpecifier() {
+  for (var _len147 = arguments.length, args = new Array(_len147), _key147 = 0; _key147 < _len147; _key147++) {
+    args[_key147] = arguments[_key147];
+  }
+
+  return _builder.default.apply(void 0, ["ExportDefaultSpecifier"].concat(args));
+}
+
+function ExportNamespaceSpecifier() {
+  for (var _len148 = arguments.length, args = new Array(_len148), _key148 = 0; _key148 < _len148; _key148++) {
+    args[_key148] = arguments[_key148];
+  }
+
+  return _builder.default.apply(void 0, ["ExportNamespaceSpecifier"].concat(args));
+}
+
+function TSParameterProperty() {
+  for (var _len149 = arguments.length, args = new Array(_len149), _key149 = 0; _key149 < _len149; _key149++) {
+    args[_key149] = arguments[_key149];
+  }
+
+  return _builder.default.apply(void 0, ["TSParameterProperty"].concat(args));
+}
+
+function TSDeclareFunction() {
+  for (var _len150 = arguments.length, args = new Array(_len150), _key150 = 0; _key150 < _len150; _key150++) {
+    args[_key150] = arguments[_key150];
+  }
+
+  return _builder.default.apply(void 0, ["TSDeclareFunction"].concat(args));
+}
+
+function TSDeclareMethod() {
+  for (var _len151 = arguments.length, args = new Array(_len151), _key151 = 0; _key151 < _len151; _key151++) {
+    args[_key151] = arguments[_key151];
+  }
+
+  return _builder.default.apply(void 0, ["TSDeclareMethod"].concat(args));
+}
+
+function TSQualifiedName() {
+  for (var _len152 = arguments.length, args = new Array(_len152), _key152 = 0; _key152 < _len152; _key152++) {
+    args[_key152] = arguments[_key152];
+  }
+
+  return _builder.default.apply(void 0, ["TSQualifiedName"].concat(args));
+}
+
+function TSCallSignatureDeclaration() {
+  for (var _len153 = arguments.length, args = new Array(_len153), _key153 = 0; _key153 < _len153; _key153++) {
+    args[_key153] = arguments[_key153];
+  }
+
+  return _builder.default.apply(void 0, ["TSCallSignatureDeclaration"].concat(args));
+}
+
+function TSConstructSignatureDeclaration() {
+  for (var _len154 = arguments.length, args = new Array(_len154), _key154 = 0; _key154 < _len154; _key154++) {
+    args[_key154] = arguments[_key154];
+  }
+
+  return _builder.default.apply(void 0, ["TSConstructSignatureDeclaration"].concat(args));
+}
+
+function TSPropertySignature() {
+  for (var _len155 = arguments.length, args = new Array(_len155), _key155 = 0; _key155 < _len155; _key155++) {
+    args[_key155] = arguments[_key155];
+  }
+
+  return _builder.default.apply(void 0, ["TSPropertySignature"].concat(args));
+}
+
+function TSMethodSignature() {
+  for (var _len156 = arguments.length, args = new Array(_len156), _key156 = 0; _key156 < _len156; _key156++) {
+    args[_key156] = arguments[_key156];
+  }
+
+  return _builder.default.apply(void 0, ["TSMethodSignature"].concat(args));
+}
+
+function TSIndexSignature() {
+  for (var _len157 = arguments.length, args = new Array(_len157), _key157 = 0; _key157 < _len157; _key157++) {
+    args[_key157] = arguments[_key157];
+  }
+
+  return _builder.default.apply(void 0, ["TSIndexSignature"].concat(args));
+}
+
+function TSAnyKeyword() {
+  for (var _len158 = arguments.length, args = new Array(_len158), _key158 = 0; _key158 < _len158; _key158++) {
+    args[_key158] = arguments[_key158];
+  }
+
+  return _builder.default.apply(void 0, ["TSAnyKeyword"].concat(args));
+}
+
+function TSNumberKeyword() {
+  for (var _len159 = arguments.length, args = new Array(_len159), _key159 = 0; _key159 < _len159; _key159++) {
+    args[_key159] = arguments[_key159];
+  }
+
+  return _builder.default.apply(void 0, ["TSNumberKeyword"].concat(args));
+}
+
+function TSObjectKeyword() {
+  for (var _len160 = arguments.length, args = new Array(_len160), _key160 = 0; _key160 < _len160; _key160++) {
+    args[_key160] = arguments[_key160];
+  }
+
+  return _builder.default.apply(void 0, ["TSObjectKeyword"].concat(args));
+}
+
+function TSBooleanKeyword() {
+  for (var _len161 = arguments.length, args = new Array(_len161), _key161 = 0; _key161 < _len161; _key161++) {
+    args[_key161] = arguments[_key161];
+  }
+
+  return _builder.default.apply(void 0, ["TSBooleanKeyword"].concat(args));
+}
+
+function TSStringKeyword() {
+  for (var _len162 = arguments.length, args = new Array(_len162), _key162 = 0; _key162 < _len162; _key162++) {
+    args[_key162] = arguments[_key162];
+  }
+
+  return _builder.default.apply(void 0, ["TSStringKeyword"].concat(args));
+}
+
+function TSSymbolKeyword() {
+  for (var _len163 = arguments.length, args = new Array(_len163), _key163 = 0; _key163 < _len163; _key163++) {
+    args[_key163] = arguments[_key163];
+  }
+
+  return _builder.default.apply(void 0, ["TSSymbolKeyword"].concat(args));
+}
+
+function TSVoidKeyword() {
+  for (var _len164 = arguments.length, args = new Array(_len164), _key164 = 0; _key164 < _len164; _key164++) {
+    args[_key164] = arguments[_key164];
+  }
+
+  return _builder.default.apply(void 0, ["TSVoidKeyword"].concat(args));
+}
+
+function TSUndefinedKeyword() {
+  for (var _len165 = arguments.length, args = new Array(_len165), _key165 = 0; _key165 < _len165; _key165++) {
+    args[_key165] = arguments[_key165];
+  }
+
+  return _builder.default.apply(void 0, ["TSUndefinedKeyword"].concat(args));
+}
+
+function TSNullKeyword() {
+  for (var _len166 = arguments.length, args = new Array(_len166), _key166 = 0; _key166 < _len166; _key166++) {
+    args[_key166] = arguments[_key166];
+  }
+
+  return _builder.default.apply(void 0, ["TSNullKeyword"].concat(args));
+}
+
+function TSNeverKeyword() {
+  for (var _len167 = arguments.length, args = new Array(_len167), _key167 = 0; _key167 < _len167; _key167++) {
+    args[_key167] = arguments[_key167];
+  }
+
+  return _builder.default.apply(void 0, ["TSNeverKeyword"].concat(args));
+}
+
+function TSThisType() {
+  for (var _len168 = arguments.length, args = new Array(_len168), _key168 = 0; _key168 < _len168; _key168++) {
+    args[_key168] = arguments[_key168];
+  }
+
+  return _builder.default.apply(void 0, ["TSThisType"].concat(args));
+}
+
+function TSFunctionType() {
+  for (var _len169 = arguments.length, args = new Array(_len169), _key169 = 0; _key169 < _len169; _key169++) {
+    args[_key169] = arguments[_key169];
+  }
+
+  return _builder.default.apply(void 0, ["TSFunctionType"].concat(args));
+}
+
+function TSConstructorType() {
+  for (var _len170 = arguments.length, args = new Array(_len170), _key170 = 0; _key170 < _len170; _key170++) {
+    args[_key170] = arguments[_key170];
+  }
+
+  return _builder.default.apply(void 0, ["TSConstructorType"].concat(args));
+}
+
+function TSTypeReference() {
+  for (var _len171 = arguments.length, args = new Array(_len171), _key171 = 0; _key171 < _len171; _key171++) {
+    args[_key171] = arguments[_key171];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeReference"].concat(args));
+}
+
+function TSTypePredicate() {
+  for (var _len172 = arguments.length, args = new Array(_len172), _key172 = 0; _key172 < _len172; _key172++) {
+    args[_key172] = arguments[_key172];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypePredicate"].concat(args));
+}
+
+function TSTypeQuery() {
+  for (var _len173 = arguments.length, args = new Array(_len173), _key173 = 0; _key173 < _len173; _key173++) {
+    args[_key173] = arguments[_key173];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeQuery"].concat(args));
+}
+
+function TSTypeLiteral() {
+  for (var _len174 = arguments.length, args = new Array(_len174), _key174 = 0; _key174 < _len174; _key174++) {
+    args[_key174] = arguments[_key174];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeLiteral"].concat(args));
+}
+
+function TSArrayType() {
+  for (var _len175 = arguments.length, args = new Array(_len175), _key175 = 0; _key175 < _len175; _key175++) {
+    args[_key175] = arguments[_key175];
+  }
+
+  return _builder.default.apply(void 0, ["TSArrayType"].concat(args));
+}
+
+function TSTupleType() {
+  for (var _len176 = arguments.length, args = new Array(_len176), _key176 = 0; _key176 < _len176; _key176++) {
+    args[_key176] = arguments[_key176];
+  }
+
+  return _builder.default.apply(void 0, ["TSTupleType"].concat(args));
+}
+
+function TSUnionType() {
+  for (var _len177 = arguments.length, args = new Array(_len177), _key177 = 0; _key177 < _len177; _key177++) {
+    args[_key177] = arguments[_key177];
+  }
+
+  return _builder.default.apply(void 0, ["TSUnionType"].concat(args));
+}
+
+function TSIntersectionType() {
+  for (var _len178 = arguments.length, args = new Array(_len178), _key178 = 0; _key178 < _len178; _key178++) {
+    args[_key178] = arguments[_key178];
+  }
+
+  return _builder.default.apply(void 0, ["TSIntersectionType"].concat(args));
+}
+
+function TSParenthesizedType() {
+  for (var _len179 = arguments.length, args = new Array(_len179), _key179 = 0; _key179 < _len179; _key179++) {
+    args[_key179] = arguments[_key179];
+  }
+
+  return _builder.default.apply(void 0, ["TSParenthesizedType"].concat(args));
+}
+
+function TSTypeOperator() {
+  for (var _len180 = arguments.length, args = new Array(_len180), _key180 = 0; _key180 < _len180; _key180++) {
+    args[_key180] = arguments[_key180];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeOperator"].concat(args));
+}
+
+function TSIndexedAccessType() {
+  for (var _len181 = arguments.length, args = new Array(_len181), _key181 = 0; _key181 < _len181; _key181++) {
+    args[_key181] = arguments[_key181];
+  }
+
+  return _builder.default.apply(void 0, ["TSIndexedAccessType"].concat(args));
+}
+
+function TSMappedType() {
+  for (var _len182 = arguments.length, args = new Array(_len182), _key182 = 0; _key182 < _len182; _key182++) {
+    args[_key182] = arguments[_key182];
+  }
+
+  return _builder.default.apply(void 0, ["TSMappedType"].concat(args));
+}
+
+function TSLiteralType() {
+  for (var _len183 = arguments.length, args = new Array(_len183), _key183 = 0; _key183 < _len183; _key183++) {
+    args[_key183] = arguments[_key183];
+  }
+
+  return _builder.default.apply(void 0, ["TSLiteralType"].concat(args));
+}
+
+function TSExpressionWithTypeArguments() {
+  for (var _len184 = arguments.length, args = new Array(_len184), _key184 = 0; _key184 < _len184; _key184++) {
+    args[_key184] = arguments[_key184];
+  }
+
+  return _builder.default.apply(void 0, ["TSExpressionWithTypeArguments"].concat(args));
+}
+
+function TSInterfaceDeclaration() {
+  for (var _len185 = arguments.length, args = new Array(_len185), _key185 = 0; _key185 < _len185; _key185++) {
+    args[_key185] = arguments[_key185];
+  }
+
+  return _builder.default.apply(void 0, ["TSInterfaceDeclaration"].concat(args));
+}
+
+function TSInterfaceBody() {
+  for (var _len186 = arguments.length, args = new Array(_len186), _key186 = 0; _key186 < _len186; _key186++) {
+    args[_key186] = arguments[_key186];
+  }
+
+  return _builder.default.apply(void 0, ["TSInterfaceBody"].concat(args));
+}
+
+function TSTypeAliasDeclaration() {
+  for (var _len187 = arguments.length, args = new Array(_len187), _key187 = 0; _key187 < _len187; _key187++) {
+    args[_key187] = arguments[_key187];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeAliasDeclaration"].concat(args));
+}
+
+function TSAsExpression() {
+  for (var _len188 = arguments.length, args = new Array(_len188), _key188 = 0; _key188 < _len188; _key188++) {
+    args[_key188] = arguments[_key188];
+  }
+
+  return _builder.default.apply(void 0, ["TSAsExpression"].concat(args));
+}
+
+function TSTypeAssertion() {
+  for (var _len189 = arguments.length, args = new Array(_len189), _key189 = 0; _key189 < _len189; _key189++) {
+    args[_key189] = arguments[_key189];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeAssertion"].concat(args));
+}
+
+function TSEnumDeclaration() {
+  for (var _len190 = arguments.length, args = new Array(_len190), _key190 = 0; _key190 < _len190; _key190++) {
+    args[_key190] = arguments[_key190];
+  }
+
+  return _builder.default.apply(void 0, ["TSEnumDeclaration"].concat(args));
+}
+
+function TSEnumMember() {
+  for (var _len191 = arguments.length, args = new Array(_len191), _key191 = 0; _key191 < _len191; _key191++) {
+    args[_key191] = arguments[_key191];
+  }
+
+  return _builder.default.apply(void 0, ["TSEnumMember"].concat(args));
+}
+
+function TSModuleDeclaration() {
+  for (var _len192 = arguments.length, args = new Array(_len192), _key192 = 0; _key192 < _len192; _key192++) {
+    args[_key192] = arguments[_key192];
+  }
+
+  return _builder.default.apply(void 0, ["TSModuleDeclaration"].concat(args));
+}
+
+function TSModuleBlock() {
+  for (var _len193 = arguments.length, args = new Array(_len193), _key193 = 0; _key193 < _len193; _key193++) {
+    args[_key193] = arguments[_key193];
+  }
+
+  return _builder.default.apply(void 0, ["TSModuleBlock"].concat(args));
+}
+
+function TSImportEqualsDeclaration() {
+  for (var _len194 = arguments.length, args = new Array(_len194), _key194 = 0; _key194 < _len194; _key194++) {
+    args[_key194] = arguments[_key194];
+  }
+
+  return _builder.default.apply(void 0, ["TSImportEqualsDeclaration"].concat(args));
+}
+
+function TSExternalModuleReference() {
+  for (var _len195 = arguments.length, args = new Array(_len195), _key195 = 0; _key195 < _len195; _key195++) {
+    args[_key195] = arguments[_key195];
+  }
+
+  return _builder.default.apply(void 0, ["TSExternalModuleReference"].concat(args));
+}
+
+function TSNonNullExpression() {
+  for (var _len196 = arguments.length, args = new Array(_len196), _key196 = 0; _key196 < _len196; _key196++) {
+    args[_key196] = arguments[_key196];
+  }
+
+  return _builder.default.apply(void 0, ["TSNonNullExpression"].concat(args));
+}
+
+function TSExportAssignment() {
+  for (var _len197 = arguments.length, args = new Array(_len197), _key197 = 0; _key197 < _len197; _key197++) {
+    args[_key197] = arguments[_key197];
+  }
+
+  return _builder.default.apply(void 0, ["TSExportAssignment"].concat(args));
+}
+
+function TSNamespaceExportDeclaration() {
+  for (var _len198 = arguments.length, args = new Array(_len198), _key198 = 0; _key198 < _len198; _key198++) {
+    args[_key198] = arguments[_key198];
+  }
+
+  return _builder.default.apply(void 0, ["TSNamespaceExportDeclaration"].concat(args));
+}
+
+function TSTypeAnnotation() {
+  for (var _len199 = arguments.length, args = new Array(_len199), _key199 = 0; _key199 < _len199; _key199++) {
+    args[_key199] = arguments[_key199];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeAnnotation"].concat(args));
+}
+
+function TSTypeParameterInstantiation() {
+  for (var _len200 = arguments.length, args = new Array(_len200), _key200 = 0; _key200 < _len200; _key200++) {
+    args[_key200] = arguments[_key200];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeParameterInstantiation"].concat(args));
+}
+
+function TSTypeParameterDeclaration() {
+  for (var _len201 = arguments.length, args = new Array(_len201), _key201 = 0; _key201 < _len201; _key201++) {
+    args[_key201] = arguments[_key201];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeParameterDeclaration"].concat(args));
+}
+
+function TSTypeParameter() {
+  for (var _len202 = arguments.length, args = new Array(_len202), _key202 = 0; _key202 < _len202; _key202++) {
+    args[_key202] = arguments[_key202];
+  }
+
+  return _builder.default.apply(void 0, ["TSTypeParameter"].concat(args));
+}
+
+function NumberLiteral() {
+  console.trace("The node type NumberLiteral has been renamed to NumericLiteral");
+
+  for (var _len203 = arguments.length, args = new Array(_len203), _key203 = 0; _key203 < _len203; _key203++) {
+    args[_key203] = arguments[_key203];
+  }
+
+  return NumberLiteral.apply(void 0, ["NumberLiteral"].concat(args));
+}
+
+function RegexLiteral() {
+  console.trace("The node type RegexLiteral has been renamed to RegExpLiteral");
+
+  for (var _len204 = arguments.length, args = new Array(_len204), _key204 = 0; _key204 < _len204; _key204++) {
+    args[_key204] = arguments[_key204];
+  }
+
+  return RegexLiteral.apply(void 0, ["RegexLiteral"].concat(args));
+}
+
+function RestProperty() {
+  console.trace("The node type RestProperty has been renamed to RestElement");
+
+  for (var _len205 = arguments.length, args = new Array(_len205), _key205 = 0; _key205 < _len205; _key205++) {
+    args[_key205] = arguments[_key205];
+  }
+
+  return RestProperty.apply(void 0, ["RestProperty"].concat(args));
+}
+
+function SpreadProperty() {
+  console.trace("The node type SpreadProperty has been renamed to SpreadElement");
+
+  for (var _len206 = arguments.length, args = new Array(_len206), _key206 = 0; _key206 < _len206; _key206++) {
+    args[_key206] = arguments[_key206];
+  }
+
+  return SpreadProperty.apply(void 0, ["SpreadProperty"].concat(args));
+}

+ 29 - 0
node_modules/@babel/types/lib/builders/react/buildChildren.js

@@ -0,0 +1,29 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = buildChildren;
+
+var _generated = require("../../validators/generated");
+
+var _cleanJSXElementLiteralChild = _interopRequireDefault(require("../../utils/react/cleanJSXElementLiteralChild"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function buildChildren(node) {
+  var elements = [];
+
+  for (var i = 0; i < node.children.length; i++) {
+    var child = node.children[i];
+
+    if ((0, _generated.isJSXText)(child)) {
+      (0, _cleanJSXElementLiteralChild.default)(child, elements);
+      continue;
+    }
+
+    if ((0, _generated.isJSXExpressionContainer)(child)) child = child.expression;
+    if ((0, _generated.isJSXEmptyExpression)(child)) continue;
+    elements.push(child);
+  }
+
+  return elements;
+}

+ 14 - 0
node_modules/@babel/types/lib/clone/clone.js

@@ -0,0 +1,14 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = clone;
+
+function clone(node) {
+  if (!node) return node;
+  var newNode = {};
+  Object.keys(node).forEach(function (key) {
+    if (key[0] === "_") return;
+    newNode[key] = node[key];
+  });
+  return newNode;
+}

+ 24 - 0
node_modules/@babel/types/lib/clone/cloneDeep.js

@@ -0,0 +1,24 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = cloneDeep;
+
+function cloneDeep(node) {
+  if (!node) return node;
+  var newNode = {};
+  Object.keys(node).forEach(function (key) {
+    if (key[0] === "_") return;
+    var val = node[key];
+
+    if (val) {
+      if (val.type) {
+        val = cloneDeep(val);
+      } else if (Array.isArray(val)) {
+        val = val.map(cloneDeep);
+      }
+    }
+
+    newNode[key] = val;
+  });
+  return newNode;
+}

+ 14 - 0
node_modules/@babel/types/lib/clone/cloneWithoutLoc.js

@@ -0,0 +1,14 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = cloneWithoutLoc;
+
+var _clone = _interopRequireDefault(require("./clone"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function cloneWithoutLoc(node) {
+  var newNode = (0, _clone.default)(node);
+  newNode.loc = null;
+  return newNode;
+}

+ 15 - 0
node_modules/@babel/types/lib/comments/addComment.js

@@ -0,0 +1,15 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = addComment;
+
+var _addComments = _interopRequireDefault(require("./addComments"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function addComment(node, type, content, line) {
+  return (0, _addComments.default)(node, type, [{
+    type: line ? "CommentLine" : "CommentBlock",
+    value: content
+  }]);
+}

+ 21 - 0
node_modules/@babel/types/lib/comments/addComments.js

@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = addComments;
+
+function addComments(node, type, comments) {
+  if (!comments || !node) return node;
+  var key = type + "Comments";
+
+  if (node[key]) {
+    if (type === "leading") {
+      node[key] = comments.concat(node[key]);
+    } else {
+      node[key] = node[key].concat(comments);
+    }
+  } else {
+    node[key] = comments;
+  }
+
+  return node;
+}

+ 12 - 0
node_modules/@babel/types/lib/comments/inheritInnerComments.js

@@ -0,0 +1,12 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = inheritInnerComments;
+
+var _inherit = _interopRequireDefault(require("../utils/inherit"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function inheritInnerComments(child, parent) {
+  (0, _inherit.default)("innerComments", child, parent);
+}

+ 12 - 0
node_modules/@babel/types/lib/comments/inheritLeadingComments.js

@@ -0,0 +1,12 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = inheritLeadingComments;
+
+var _inherit = _interopRequireDefault(require("../utils/inherit"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function inheritLeadingComments(child, parent) {
+  (0, _inherit.default)("leadingComments", child, parent);
+}

+ 12 - 0
node_modules/@babel/types/lib/comments/inheritTrailingComments.js

@@ -0,0 +1,12 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = inheritTrailingComments;
+
+var _inherit = _interopRequireDefault(require("../utils/inherit"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function inheritTrailingComments(child, parent) {
+  (0, _inherit.default)("trailingComments", child, parent);
+}

+ 19 - 0
node_modules/@babel/types/lib/comments/inheritsComments.js

@@ -0,0 +1,19 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = inheritsComments;
+
+var _inheritTrailingComments = _interopRequireDefault(require("./inheritTrailingComments"));
+
+var _inheritLeadingComments = _interopRequireDefault(require("./inheritLeadingComments"));
+
+var _inheritInnerComments = _interopRequireDefault(require("./inheritInnerComments"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function inheritsComments(child, parent) {
+  (0, _inheritTrailingComments.default)(child, parent);
+  (0, _inheritLeadingComments.default)(child, parent);
+  (0, _inheritInnerComments.default)(child, parent);
+  return child;
+}

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác