@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
107 lines • 4.59 kB
JavaScript
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);
}