register.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _pirates = require('pirates'); var pirates = _interopRequireWildcard(_pirates);
  2. var _index = require('./index');
  3. function addHook(
  4. extension,
  5. sucraseOptions,
  6. hookOptions,
  7. ) {
  8. let mergedSucraseOptions = sucraseOptions;
  9. const sucraseOptionsEnvJSON = process.env.SUCRASE_OPTIONS;
  10. if (sucraseOptionsEnvJSON) {
  11. mergedSucraseOptions = {...mergedSucraseOptions, ...JSON.parse(sucraseOptionsEnvJSON)};
  12. }
  13. return pirates.addHook(
  14. (code, filePath) => {
  15. const {code: transformedCode, sourceMap} = _index.transform.call(void 0, code, {
  16. ...mergedSucraseOptions,
  17. sourceMapOptions: {compiledFilename: filePath},
  18. filePath,
  19. });
  20. const mapBase64 = Buffer.from(JSON.stringify(sourceMap)).toString("base64");
  21. const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;
  22. return `${transformedCode}\n${suffix}`;
  23. },
  24. {...hookOptions, exts: [extension]},
  25. );
  26. } exports.addHook = addHook;
  27. function registerJS(hookOptions) {
  28. return addHook(".js", {transforms: ["imports", "flow", "jsx"]}, hookOptions);
  29. } exports.registerJS = registerJS;
  30. function registerJSX(hookOptions) {
  31. return addHook(".jsx", {transforms: ["imports", "flow", "jsx"]}, hookOptions);
  32. } exports.registerJSX = registerJSX;
  33. function registerTS(hookOptions) {
  34. return addHook(".ts", {transforms: ["imports", "typescript"]}, hookOptions);
  35. } exports.registerTS = registerTS;
  36. function registerTSX(hookOptions) {
  37. return addHook(".tsx", {transforms: ["imports", "typescript", "jsx"]}, hookOptions);
  38. } exports.registerTSX = registerTSX;
  39. function registerTSLegacyModuleInterop(hookOptions) {
  40. return addHook(
  41. ".ts",
  42. {
  43. transforms: ["imports", "typescript"],
  44. enableLegacyTypeScriptModuleInterop: true,
  45. },
  46. hookOptions,
  47. );
  48. } exports.registerTSLegacyModuleInterop = registerTSLegacyModuleInterop;
  49. function registerTSXLegacyModuleInterop(hookOptions) {
  50. return addHook(
  51. ".tsx",
  52. {
  53. transforms: ["imports", "typescript", "jsx"],
  54. enableLegacyTypeScriptModuleInterop: true,
  55. },
  56. hookOptions,
  57. );
  58. } exports.registerTSXLegacyModuleInterop = registerTSXLegacyModuleInterop;
  59. function registerAll(hookOptions) {
  60. const reverts = [
  61. registerJS(hookOptions),
  62. registerJSX(hookOptions),
  63. registerTS(hookOptions),
  64. registerTSX(hookOptions),
  65. ];
  66. return () => {
  67. for (const fn of reverts) {
  68. fn();
  69. }
  70. };
  71. } exports.registerAll = registerAll;