8f0892f12689b2d106979419aa676f67460f9bb86699c0eca8276dc6184cc62fbb1cf9ca4018f28560ba25f2bc91789bd9c69927259109939a4e81f6d4be4e 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = generateMissingPluginMessage;
  6. const pluginNameMap = {
  7. asyncDoExpressions: {
  8. syntax: {
  9. name: "@babel/plugin-syntax-async-do-expressions",
  10. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-do-expressions"
  11. }
  12. },
  13. decimal: {
  14. syntax: {
  15. name: "@babel/plugin-syntax-decimal",
  16. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decimal"
  17. }
  18. },
  19. decorators: {
  20. syntax: {
  21. name: "@babel/plugin-syntax-decorators",
  22. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decorators"
  23. },
  24. transform: {
  25. name: "@babel/plugin-proposal-decorators",
  26. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-decorators"
  27. }
  28. },
  29. doExpressions: {
  30. syntax: {
  31. name: "@babel/plugin-syntax-do-expressions",
  32. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-do-expressions"
  33. },
  34. transform: {
  35. name: "@babel/plugin-proposal-do-expressions",
  36. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-do-expressions"
  37. }
  38. },
  39. exportDefaultFrom: {
  40. syntax: {
  41. name: "@babel/plugin-syntax-export-default-from",
  42. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-default-from"
  43. },
  44. transform: {
  45. name: "@babel/plugin-proposal-export-default-from",
  46. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-default-from"
  47. }
  48. },
  49. flow: {
  50. syntax: {
  51. name: "@babel/plugin-syntax-flow",
  52. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-flow"
  53. },
  54. transform: {
  55. name: "@babel/preset-flow",
  56. url: "https://github.com/babel/babel/tree/main/packages/babel-preset-flow"
  57. }
  58. },
  59. functionBind: {
  60. syntax: {
  61. name: "@babel/plugin-syntax-function-bind",
  62. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-bind"
  63. },
  64. transform: {
  65. name: "@babel/plugin-proposal-function-bind",
  66. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-bind"
  67. }
  68. },
  69. functionSent: {
  70. syntax: {
  71. name: "@babel/plugin-syntax-function-sent",
  72. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-sent"
  73. },
  74. transform: {
  75. name: "@babel/plugin-proposal-function-sent",
  76. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-sent"
  77. }
  78. },
  79. jsx: {
  80. syntax: {
  81. name: "@babel/plugin-syntax-jsx",
  82. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-jsx"
  83. },
  84. transform: {
  85. name: "@babel/preset-react",
  86. url: "https://github.com/babel/babel/tree/main/packages/babel-preset-react"
  87. }
  88. },
  89. pipelineOperator: {
  90. syntax: {
  91. name: "@babel/plugin-syntax-pipeline-operator",
  92. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-pipeline-operator"
  93. },
  94. transform: {
  95. name: "@babel/plugin-proposal-pipeline-operator",
  96. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-pipeline-operator"
  97. }
  98. },
  99. recordAndTuple: {
  100. syntax: {
  101. name: "@babel/plugin-syntax-record-and-tuple",
  102. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-record-and-tuple"
  103. }
  104. },
  105. throwExpressions: {
  106. syntax: {
  107. name: "@babel/plugin-syntax-throw-expressions",
  108. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-throw-expressions"
  109. },
  110. transform: {
  111. name: "@babel/plugin-proposal-throw-expressions",
  112. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-throw-expressions"
  113. }
  114. },
  115. typescript: {
  116. syntax: {
  117. name: "@babel/plugin-syntax-typescript",
  118. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-typescript"
  119. },
  120. transform: {
  121. name: "@babel/preset-typescript",
  122. url: "https://github.com/babel/babel/tree/main/packages/babel-preset-typescript"
  123. }
  124. }
  125. };
  126. {
  127. Object.assign(pluginNameMap, {
  128. asyncGenerators: {
  129. syntax: {
  130. name: "@babel/plugin-syntax-async-generators",
  131. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-generators"
  132. },
  133. transform: {
  134. name: "@babel/plugin-transform-async-generator-functions",
  135. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-async-generator-functions"
  136. }
  137. },
  138. classProperties: {
  139. syntax: {
  140. name: "@babel/plugin-syntax-class-properties",
  141. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
  142. },
  143. transform: {
  144. name: "@babel/plugin-transform-class-properties",
  145. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-class-properties"
  146. }
  147. },
  148. classPrivateProperties: {
  149. syntax: {
  150. name: "@babel/plugin-syntax-class-properties",
  151. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
  152. },
  153. transform: {
  154. name: "@babel/plugin-transform-class-properties",
  155. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-class-properties"
  156. }
  157. },
  158. classPrivateMethods: {
  159. syntax: {
  160. name: "@babel/plugin-syntax-class-properties",
  161. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
  162. },
  163. transform: {
  164. name: "@babel/plugin-transform-private-methods",
  165. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-private-methods"
  166. }
  167. },
  168. classStaticBlock: {
  169. syntax: {
  170. name: "@babel/plugin-syntax-class-static-block",
  171. url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block"
  172. },
  173. transform: {
  174. name: "@babel/plugin-transform-class-static-block",
  175. url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-static-block"
  176. }
  177. },
  178. dynamicImport: {
  179. syntax: {
  180. name: "@babel/plugin-syntax-dynamic-import",
  181. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import"
  182. }
  183. },
  184. exportNamespaceFrom: {
  185. syntax: {
  186. name: "@babel/plugin-syntax-export-namespace-from",
  187. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from"
  188. },
  189. transform: {
  190. name: "@babel/plugin-transform-export-namespace-from",
  191. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-export-namespace-from"
  192. }
  193. },
  194. importAssertions: {
  195. syntax: {
  196. name: "@babel/plugin-syntax-import-assertions",
  197. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-assertions"
  198. }
  199. },
  200. importAttributes: {
  201. syntax: {
  202. name: "@babel/plugin-syntax-import-attributes",
  203. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-attributes"
  204. }
  205. },
  206. importMeta: {
  207. syntax: {
  208. name: "@babel/plugin-syntax-import-meta",
  209. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta"
  210. }
  211. },
  212. logicalAssignment: {
  213. syntax: {
  214. name: "@babel/plugin-syntax-logical-assignment-operators",
  215. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-logical-assignment-operators"
  216. },
  217. transform: {
  218. name: "@babel/plugin-transform-logical-assignment-operators",
  219. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-logical-assignment-operators"
  220. }
  221. },
  222. moduleStringNames: {
  223. syntax: {
  224. name: "@babel/plugin-syntax-module-string-names",
  225. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names"
  226. }
  227. },
  228. numericSeparator: {
  229. syntax: {
  230. name: "@babel/plugin-syntax-numeric-separator",
  231. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator"
  232. },
  233. transform: {
  234. name: "@babel/plugin-transform-numeric-separator",
  235. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-numeric-separator"
  236. }
  237. },
  238. nullishCoalescingOperator: {
  239. syntax: {
  240. name: "@babel/plugin-syntax-nullish-coalescing-operator",
  241. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-nullish-coalescing-operator"
  242. },
  243. transform: {
  244. name: "@babel/plugin-transform-nullish-coalescing-operator",
  245. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-nullish-coalescing-opearator"
  246. }
  247. },
  248. objectRestSpread: {
  249. syntax: {
  250. name: "@babel/plugin-syntax-object-rest-spread",
  251. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-object-rest-spread"
  252. },
  253. transform: {
  254. name: "@babel/plugin-transform-object-rest-spread",
  255. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-object-rest-spread"
  256. }
  257. },
  258. optionalCatchBinding: {
  259. syntax: {
  260. name: "@babel/plugin-syntax-optional-catch-binding",
  261. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-catch-binding"
  262. },
  263. transform: {
  264. name: "@babel/plugin-transform-optional-catch-binding",
  265. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-optional-catch-binding"
  266. }
  267. },
  268. optionalChaining: {
  269. syntax: {
  270. name: "@babel/plugin-syntax-optional-chaining",
  271. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining"
  272. },
  273. transform: {
  274. name: "@babel/plugin-transform-optional-chaining",
  275. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-optional-chaining"
  276. }
  277. },
  278. privateIn: {
  279. syntax: {
  280. name: "@babel/plugin-syntax-private-property-in-object",
  281. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object"
  282. },
  283. transform: {
  284. name: "@babel/plugin-transform-private-property-in-object",
  285. url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-private-property-in-object"
  286. }
  287. },
  288. regexpUnicodeSets: {
  289. syntax: {
  290. name: "@babel/plugin-syntax-unicode-sets-regex",
  291. url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-syntax-unicode-sets-regex/README.md"
  292. },
  293. transform: {
  294. name: "@babel/plugin-transform-unicode-sets-regex",
  295. url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-proposalunicode-sets-regex/README.md"
  296. }
  297. }
  298. });
  299. }
  300. const getNameURLCombination = ({
  301. name,
  302. url
  303. }) => `${name} (${url})`;
  304. function generateMissingPluginMessage(missingPluginName, loc, codeFrame, filename) {
  305. let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame;
  306. const pluginInfo = pluginNameMap[missingPluginName];
  307. if (pluginInfo) {
  308. const {
  309. syntax: syntaxPlugin,
  310. transform: transformPlugin
  311. } = pluginInfo;
  312. if (syntaxPlugin) {
  313. const syntaxPluginInfo = getNameURLCombination(syntaxPlugin);
  314. if (transformPlugin) {
  315. const transformPluginInfo = getNameURLCombination(transformPlugin);
  316. const sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets";
  317. helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation.
  318. If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`;
  319. } else {
  320. helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`;
  321. }
  322. }
  323. }
  324. const msgFilename = filename === "unknown" ? "<name of the input file>" : filename;
  325. helpMessage += `
  326. If you already added the plugin for this syntax to your config, it's possible that your config \
  327. isn't being loaded.
  328. You can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \
  329. configuration:
  330. \tnpx cross-env BABEL_SHOW_CONFIG_FOR=${msgFilename} <your build command>
  331. See https://babeljs.io/docs/configuration#print-effective-configs for more info.
  332. `;
  333. return helpMessage;
  334. }
  335. 0 && 0;
  336. //# sourceMappingURL=missing-plugin-helper.js.map