mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-14 18:01:06 +00:00
docs: add component API information
This commit is contained in:
parent
0472c1ad23
commit
0d0d35e715
36 changed files with 18462 additions and 5 deletions
29
scripts/rollup/generate-public-api.js
Normal file
29
scripts/rollup/generate-public-api.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
* Use library component metadata to generate component documentation in JSON format.
|
||||
* @param {Map<string, { component: { exported_props: Map<string, any>; slots: Map<string, any>; } typedefs: {name: string; type: string;}[] }>} components
|
||||
* @param {Map<string, string[]>} groups
|
||||
* @param {{name: string; version: string; homepage: string;}} pkg
|
||||
*/
|
||||
export function generatePublicAPI(components, groups, pkg) {
|
||||
const code = {
|
||||
version: pkg.version,
|
||||
components: {},
|
||||
};
|
||||
|
||||
components.forEach((component, moduleName) => {
|
||||
const props = Array.from(component.component.exported_props);
|
||||
const slots = Array.from(component.component.slots);
|
||||
const forwarded_events = Array.from(component.component.forwarded_events);
|
||||
const dispatched_events = Array.from(component.component.dispatched_events);
|
||||
|
||||
code.components[moduleName] = {
|
||||
moduleName,
|
||||
props,
|
||||
slots,
|
||||
forwarded_events,
|
||||
dispatched_events,
|
||||
};
|
||||
});
|
||||
|
||||
return { code };
|
||||
}
|
|
@ -1,10 +1,14 @@
|
|||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { promisify } from "util";
|
||||
import pkg from "../../package.json";
|
||||
import { format } from "prettier";
|
||||
import { parseComponent } from "./parse-component";
|
||||
import { generateTypes } from "./generate-types";
|
||||
import { generateIndex } from "./generate-index";
|
||||
import { generatePublicAPI } from "./generate-public-api";
|
||||
|
||||
const writeFile = promisify(fs.writeFile);
|
||||
|
||||
/**
|
||||
* Rollup plugin to generate library TypeScript definitions and documentation.
|
||||
|
@ -58,15 +62,21 @@ function pluginGenerateDocs() {
|
|||
}
|
||||
}
|
||||
},
|
||||
writeBundle() {
|
||||
async writeBundle() {
|
||||
const { code: types } = generateTypes(components, pkg);
|
||||
fs.writeFileSync(pkg.types, format(types, { parser: "typescript" }));
|
||||
await writeFile(pkg.types, format(types, { parser: "typescript" }));
|
||||
|
||||
const { code: index } = generateIndex(components, groups, pkg);
|
||||
fs.writeFileSync(
|
||||
await writeFile(
|
||||
"./COMPONENT_INDEX.md",
|
||||
format(index, { parser: "markdown" })
|
||||
);
|
||||
|
||||
const { code: json } = generatePublicAPI(components, groups, pkg);
|
||||
await writeFile(
|
||||
"./docs/src/PUBLIC_API.json",
|
||||
JSON.stringify(json, null, 2)
|
||||
);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue