@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
143 lines • 5.61 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _regenerator from "@babel/runtime/helpers/esm/regenerator";
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
import { create } from 'jsondiffpatch';
import { toText } from 'hast-util-to-text';
import { decompress, strFromU8 } from 'fflate';
import { decode } from 'uint8-to-base64';
var differ = create({
omitRemovedValues: true,
cloneDiffValues: true
});
function decompressAsync(input) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new Promise(function (resolve, reject) {
decompress(input, options, function (err, output) {
if (err) {
reject(err);
} else {
resolve(output);
}
});
});
}
export function transformSource(_x, _x2, _x3) {
return _transformSource.apply(this, arguments);
}
function _transformSource() {
_transformSource = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(source, fileName, sourceTransformers) {
var transforms;
return _regenerator().w(function (_context2) {
while (1) switch (_context2.n) {
case 0:
_context2.n = 1;
return Promise.all(sourceTransformers.map(/*#__PURE__*/function () {
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
var extensions, transformer, sourceString, decompressed, transformed, splitSource, _t, _t2;
return _regenerator().w(function (_context) {
while (1) switch (_context.p = _context.n) {
case 0:
extensions = _ref.extensions, transformer = _ref.transformer;
if (extensions.some(function (ext) {
return fileName.endsWith(".".concat(ext));
})) {
_context.n = 1;
break;
}
return _context.a(2, undefined);
case 1:
_context.p = 1;
if (!(typeof source === 'string')) {
_context.n = 2;
break;
}
sourceString = source;
_context.n = 6;
break;
case 2:
if (!('hastJson' in source)) {
_context.n = 3;
break;
}
sourceString = toText(JSON.parse(source.hastJson));
_context.n = 6;
break;
case 3:
if (!('hastGzip' in source)) {
_context.n = 5;
break;
}
_t = strFromU8;
_context.n = 4;
return decompressAsync(decode(source.hastGzip), {
consume: true
});
case 4:
decompressed = _t(_context.v);
sourceString = toText(JSON.parse(decompressed));
_context.n = 6;
break;
case 5:
sourceString = toText(source);
case 6:
_context.n = 7;
return transformer(sourceString, fileName);
case 7:
transformed = _context.v;
if (!transformed) {
_context.n = 8;
break;
}
splitSource = sourceString.split('\n');
return _context.a(2, 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 8:
return _context.a(2, undefined);
case 9:
_context.p = 9;
_t2 = _context.v;
throw new Error("Failed to transform source code (file: ".concat(fileName, "): ").concat(_t2 instanceof Error && _t2.message));
case 10:
return _context.a(2);
}
}, _callee, null, [[1, 9]]);
}));
return function (_x4) {
return _ref2.apply(this, arguments);
};
}()));
case 1:
transforms = _context2.v;
if (!(transforms.length === 0 || transforms.every(function (t) {
return t === undefined;
}))) {
_context2.n = 2;
break;
}
return _context2.a(2, undefined);
case 2:
return _context2.a(2, 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;
}, {}));
}
}, _callee2);
}));
return _transformSource.apply(this, arguments);
}