UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

143 lines 5.61 kB
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); }