dumi
Version:
📖 Documentation Generator of React Component
132 lines (130 loc) • 6.35 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/loaders/markdown/transformer/index.ts
var transformer_exports = {};
__export(transformer_exports, {
default: () => transformer_default
});
module.exports = __toCommonJS(transformer_exports);
var import_constants = require("../../../constants");
var import_enhanced_resolve = __toESM(require("enhanced-resolve"));
var import_plugin_utils = require("umi/plugin-utils");
var import_rehypeDemo = __toESM(require("./rehypeDemo"));
var import_rehypeDesc = __toESM(require("./rehypeDesc"));
var import_rehypeEnhancedTag = __toESM(require("./rehypeEnhancedTag"));
var import_rehypeHighlightLine = __toESM(require("./rehypeHighlightLine"));
var import_rehypeImg = __toESM(require("./rehypeImg"));
var import_rehypeIsolation = __toESM(require("./rehypeIsolation"));
var import_rehypeJsxify = __toESM(require("./rehypeJsxify"));
var import_rehypeLink = __toESM(require("./rehypeLink"));
var import_rehypeRaw = __toESM(require("./rehypeRaw"));
var import_rehypeSlug = __toESM(require("./rehypeSlug"));
var import_rehypeStrip = __toESM(require("./rehypeStrip"));
var import_rehypeText = __toESM(require("./rehypeText"));
var import_remarkBreaks = __toESM(require("./remarkBreaks"));
var import_remarkContainer = __toESM(require("./remarkContainer"));
var import_remarkEmbed = __toESM(require("./remarkEmbed"));
var import_remarkMeta = __toESM(require("./remarkMeta"));
function keepSoftBreak(pkg) {
var _a, _b, _c;
if (((_a = pkg == null ? void 0 : pkg.name) == null ? void 0 : _a.startsWith("@examples/")) || (pkg == null ? void 0 : pkg.name) === "dumi")
return false;
const ver = ((_b = pkg == null ? void 0 : pkg.devDependencies) == null ? void 0 : _b.dumi) ?? ((_c = pkg == null ? void 0 : pkg.dependencies) == null ? void 0 : _c.dumi) ?? "^2.0.0";
return !import_plugin_utils.semver.subset(ver, import_constants.VERSION_2_DEPRECATE_SOFT_BREAKS);
}
async function applyUnifiedPlugin(opts) {
const [plugin, options] = Array.isArray(opts.plugin) ? opts.plugin : [opts.plugin];
let mod = typeof plugin === "function" ? plugin : await import(plugin);
const fn = mod.default || mod;
opts.processor.use(fn, options);
}
var transformer_default = async (raw, opts) => {
var _a;
let fileLocaleLessPath = opts.fileAbsPath;
const { unified } = await import("unified");
const { default: remarkParse } = await import("remark-parse");
const { default: remarkFrontmatter } = await import("remark-frontmatter");
const { default: remarkDirective } = await import("remark-directive");
const { default: remarkGfm } = await import("remark-gfm");
const { default: remarkRehype } = await import("remark-rehype");
const { default: rehypeAutolinkHeadings } = await import("rehype-autolink-headings");
const { default: rehypeRemoveComments } = await import("rehype-remove-comments");
const resolver = import_enhanced_resolve.default.create.sync({
extensions: [".js", ".jsx", ".ts", ".tsx"],
alias: opts.alias
});
const fileLocale = (_a = opts.locales.find(
(locale) => opts.fileAbsPath.endsWith(`.${locale.id}.md`)
)) == null ? void 0 : _a.id;
if (fileLocale) {
fileLocaleLessPath = opts.fileAbsPath.replace(`.${fileLocale}.md`, ".md");
}
const processor = unified().use(remarkParse).use(import_remarkEmbed.default, { fileAbsPath: opts.fileAbsPath, alias: opts.alias }).use(remarkFrontmatter).use(import_remarkMeta.default, {
cwd: opts.cwd,
fileAbsPath: opts.fileAbsPath,
fileLocaleLessPath,
resolve: opts.resolve
}).use(remarkDirective).use(import_remarkContainer.default).use(remarkGfm);
if (keepSoftBreak(opts.pkg)) {
processor.use(import_remarkBreaks.default, { fileAbsPath: opts.fileAbsPath });
}
for (const plugin of opts.extraRemarkPlugins ?? []) {
await applyUnifiedPlugin({
plugin,
processor,
cwd: opts.cwd
});
}
processor.use(remarkRehype, { allowDangerousHtml: true }).use(import_rehypeRaw.default, {
fileAbsPath: opts.fileAbsPath
}).use(import_rehypeHighlightLine.default).use(rehypeRemoveComments, { removeConditional: true }).use(import_rehypeStrip.default).use(import_rehypeImg.default).use(import_rehypeDemo.default, {
techStacks: opts.techStacks,
cwd: opts.cwd,
fileAbsPath: opts.fileAbsPath,
fileLocaleLessPath,
fileLocale,
resolve: opts.resolve,
resolver
}).use(import_rehypeSlug.default).use(import_rehypeLink.default, {
fileAbsPath: opts.fileAbsPath,
routes: opts.routes
}).use(rehypeAutolinkHeadings).use(import_rehypeIsolation.default).use(import_rehypeEnhancedTag.default).use(import_rehypeDesc.default).use(import_rehypeText.default);
for (const plugin of opts.extraRehypePlugins ?? []) {
await applyUnifiedPlugin({
plugin,
processor,
cwd: opts.cwd
});
}
processor.data("fileAbsPath", opts.fileAbsPath);
const result = await processor.use(import_rehypeJsxify.default).process(raw);
return {
content: String(result.value),
meta: result.data
};
};