UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

107 lines 4.59 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime"; import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; import { create } from 'jsondiffpatch'; import { toText } from 'hast-util-to-text'; var differ = create({ omitRemovedValues: true, cloneDiffValues: true }); export function transformSource(_x, _x2, _x3) { return _transformSource.apply(this, arguments); } function _transformSource() { _transformSource = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(source, fileName, sourceTransformers) { var transforms; return _regeneratorRuntime().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return Promise.all(sourceTransformers.map(/*#__PURE__*/function () { var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) { var extensions, transformer, sourceString, transformed, splitSource; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: extensions = _ref.extensions, transformer = _ref.transformer; if (extensions.some(function (ext) { return fileName.endsWith(".".concat(ext)); })) { _context.next = 3; break; } return _context.abrupt("return", undefined); case 3: _context.prev = 3; if (typeof source === 'string') { sourceString = source; } else if ('hastJson' in source) { sourceString = toText(JSON.parse(source.hastJson)); } else { sourceString = toText(source); } _context.next = 7; return transformer(sourceString, fileName); case 7: transformed = _context.sent; if (!transformed) { _context.next = 11; break; } splitSource = sourceString.split('\n'); return _context.abrupt("return", Object.keys(transformed).reduce(function (acc, key) { var delta = differ.diff(splitSource, transformed[key].source.split('\n')); acc[key] = { delta: delta, fileName: transformed[key].fileName }; return acc; }, {})); case 11: return _context.abrupt("return", undefined); case 14: _context.prev = 14; _context.t0 = _context["catch"](3); throw new Error("Failed to transform source code (file: ".concat(fileName, "): ").concat(_context.t0 instanceof Error && _context.t0.message)); case 17: case "end": return _context.stop(); } }, _callee, null, [[3, 14]]); })); return function (_x4) { return _ref2.apply(this, arguments); }; }())); case 2: transforms = _context2.sent; if (!(transforms.length === 0 || transforms.every(function (t) { return t === undefined; }))) { _context2.next = 5; break; } return _context2.abrupt("return", undefined); case 5: return _context2.abrupt("return", transforms.reduce(function (acc, transform) { if (transform) { Object.entries(transform).forEach(function (_ref3) { var _ref4 = _slicedToArray(_ref3, 2), key = _ref4[0], value = _ref4[1]; if (acc[key]) { throw new Error("Duplicate key found in source transformations: ".concat(key)); } acc[key] = value; }); } return acc; }, {})); case 6: case "end": return _context2.stop(); } }, _callee2); })); return _transformSource.apply(this, arguments); }