@patternfly/patternfly-doc-core 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.astro/collections/textContent.schema.json +6 -0
- package/README.md +11 -10
- package/astro.config.mjs +8 -1
- package/cli/buildPropsData.ts +113 -0
- package/cli/cli.ts +52 -6
- package/cli/getConfig.ts +6 -0
- package/cli/hasFile.ts +5 -0
- package/cli/templates/pf-docs.config.mjs +13 -2
- package/cli/tsDocGen.js +199 -0
- package/dist/cli/buildPropsData.js +68 -0
- package/dist/cli/cli.js +37 -4
- package/dist/cli/hasFile.js +4 -0
- package/dist/cli/templates/pf-docs.config.mjs +12 -1
- package/dist/cli/tsDocGen.js +153 -0
- package/dist/cli/tsconfig.tsbuildinfo +1 -1
- package/dist/client/_astro/_page_.SnUmZn2y.css +1 -0
- package/dist/client/design-foundations/typography/index.html +219 -0
- package/dist/client/design-foundations/usage-and-behavior/index.html +368 -0
- package/dist/client/get-started/contribute/index.html +115 -0
- package/dist/client/index.html +42 -0
- package/dist/server/_@astrojs-ssr-adapter.mjs +1 -0
- package/dist/server/_noop-middleware.mjs +3 -0
- package/dist/server/chunks/PropsTables_D_v4KAMn.mjs +1826 -0
- package/dist/server/chunks/_@astrojs-ssr-adapter_ByVMUK8O.mjs +3621 -0
- package/dist/server/chunks/_astro_assets_CLOMnm-3.mjs +1507 -0
- package/dist/server/chunks/_astro_data-layer-content_DDGBHvtb.mjs +1 -0
- package/dist/server/chunks/angle-down-icon_BNJvzYv-.mjs +3970 -0
- package/dist/server/chunks/astro/server_D4f31GMD.mjs +2769 -0
- package/dist/server/chunks/astro-designed-error-pages_CpHpbfhr.mjs +282 -0
- package/dist/server/chunks/consts_BmVDRGlB.mjs +32 -0
- package/dist/server/chunks/content-assets_DleWbedO.mjs +1 -0
- package/dist/server/chunks/content-modules_Dz-S_Wwv.mjs +1 -0
- package/dist/server/chunks/path_Cvt6sEOY.mjs +58 -0
- package/dist/server/chunks/sharp_BYpUyJGL.mjs +88 -0
- package/dist/server/entry.mjs +45 -0
- package/dist/server/manifest_Bln0Ib60.mjs +102 -0
- package/dist/server/pages/_image.astro.mjs +132 -0
- package/dist/server/pages/_section_/_---page_.astro.mjs +1 -0
- package/dist/server/pages/_section_/_page_/_---tab_.astro.mjs +1 -0
- package/dist/server/pages/index.astro.mjs +1 -0
- package/dist/server/pages/props.astro.mjs +25 -0
- package/dist/server/renderers.mjs +259 -0
- package/jest.config.ts +1 -1
- package/package.json +5 -2
- package/pf-docs.config.mjs +31 -0
- package/release.config.mjs +1 -1
- package/src/components/PropsTable.tsx +3 -3
- package/src/components/PropsTables.astro +38 -0
- package/src/content.config.ts +1 -0
- package/src/pages/[section]/[...page].astro +16 -8
- package/src/pages/[section]/[page]/[...tab].astro +4 -1
- package/src/pages/props.ts +17 -0
- package/textContent/contribute.md +1 -0
- package/dist/design-foundations/typography/index.html +0 -193
- package/dist/design-foundations/usage-and-behavior/index.html +0 -342
- package/dist/get-started/contribute/index.html +0 -89
- package/dist/index.html +0 -42
- /package/dist/{PF-HorizontalLogo-Color.svg → client/PF-HorizontalLogo-Color.svg} +0 -0
- /package/dist/{PF-HorizontalLogo-Reverse.svg → client/PF-HorizontalLogo-Reverse.svg} +0 -0
- /package/dist/{_astro → client/_astro}/Button.C3_jB5tC.js +0 -0
- /package/dist/{_astro → client/_astro}/ClientRouter.astro_astro_type_script_index_0_lang.Cainpjm5.js +0 -0
- /package/dist/{_astro → client/_astro}/Navigation.Cede__Ud.js +0 -0
- /package/dist/{_astro → client/_astro}/PageContext.C7BqCh9N.js +0 -0
- /package/dist/{_astro → client/_astro}/PageToggle.DDEjruql.js +0 -0
- /package/dist/{_astro → client/_astro}/RedHatDisplayVF-Italic.CRpusWc8.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/RedHatDisplayVF.CYDHf1NI.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/RedHatMonoVF-Italic.DGQo2ogW.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/RedHatMonoVF.C4fMH6Vz.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/RedHatTextVF-Italic.Dkj_WqbA.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/RedHatTextVF.wYvZ7prR.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/Toolbar.TAdHxLSQ.js +0 -0
- /package/dist/{_astro → client/_astro}/_page_.CXyz_BEo.css +0 -0
- /package/dist/{_astro → client/_astro}/_page_.DVvr_Mfl.css +0 -0
- /package/dist/{_astro → client/_astro}/client.CeeiqVaE.js +0 -0
- /package/dist/{_astro → client/_astro}/divider.BSD-oFoh.js +0 -0
- /package/dist/{_astro → client/_astro}/fa-solid-900.DguXoeIz.woff2 +0 -0
- /package/dist/{_astro → client/_astro}/index.CTH3fVMn.js +0 -0
- /package/dist/{_astro → client/_astro}/page.B65lVdBS.js +0 -0
- /package/dist/{_astro → client/_astro}/pf-v6-pficon.Dy6oiu9u.woff2 +0 -0
- /package/dist/{avatarImg.svg → client/avatarImg.svg} +0 -0
- /package/dist/{avatarImgDark.svg → client/avatarImgDark.svg} +0 -0
- /package/dist/{content → client/content}/typography/line-height.png +0 -0
- /package/dist/{favicon.svg → client/favicon.svg} +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { parse } from 'react-docgen';
|
|
3
|
+
import ts from 'typescript';
|
|
4
|
+
const annotations = [
|
|
5
|
+
{
|
|
6
|
+
regex: /@deprecated/,
|
|
7
|
+
name: 'deprecated',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
regex: /@hide/,
|
|
12
|
+
name: 'hide',
|
|
13
|
+
type: 'Boolean',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
regex: /@beta/,
|
|
17
|
+
name: 'beta',
|
|
18
|
+
type: 'Boolean',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
regex: /@propType\s+(.*)/,
|
|
22
|
+
name: 'type',
|
|
23
|
+
type: 'String',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
function addAnnotations(prop) {
|
|
27
|
+
if (prop.description) {
|
|
28
|
+
annotations.forEach(({ regex, name }) => {
|
|
29
|
+
const match = prop.description.match(regex);
|
|
30
|
+
if (match) {
|
|
31
|
+
prop.description = prop.description.replace(regex, '').trim();
|
|
32
|
+
if (name) {
|
|
33
|
+
prop[name] = match[2] || match[1] || true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return prop;
|
|
39
|
+
}
|
|
40
|
+
function getComponentMetadata(filename, sourceText) {
|
|
41
|
+
let parsedComponents = null;
|
|
42
|
+
try {
|
|
43
|
+
parsedComponents = parse(sourceText, { filename });
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
45
|
+
}
|
|
46
|
+
catch (_err) {
|
|
47
|
+
// eslint-disable-next-line no-console
|
|
48
|
+
// console.warn(`No component found in ${filename}:`, err);
|
|
49
|
+
}
|
|
50
|
+
return (parsedComponents || []).filter((parsed) => parsed && parsed.displayName);
|
|
51
|
+
}
|
|
52
|
+
const getNodeText = (node, sourceText) => {
|
|
53
|
+
if (!node || !node.pos || !node.end) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return sourceText.substring(node.pos, node.end).trim();
|
|
57
|
+
};
|
|
58
|
+
const buildJsDocProps = (nodes, sourceText) => nodes?.reduce((acc, member) => {
|
|
59
|
+
const name = (member.name && member.name.escapedText) ||
|
|
60
|
+
(member.parameters &&
|
|
61
|
+
`[${getNodeText(member.parameters[0], sourceText)}]`) ||
|
|
62
|
+
'Unknown';
|
|
63
|
+
acc[name] = {
|
|
64
|
+
description: member.jsDoc
|
|
65
|
+
? member.jsDoc.map((doc) => doc.comment).join('\n')
|
|
66
|
+
: null,
|
|
67
|
+
required: member.questionToken === undefined,
|
|
68
|
+
type: {
|
|
69
|
+
raw: getNodeText(member.type, sourceText).trim(),
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
return acc;
|
|
73
|
+
}, {});
|
|
74
|
+
const getSourceFileStatements = (filename, sourceText) => {
|
|
75
|
+
const { statements } = ts.createSourceFile(filename, sourceText, ts.ScriptTarget.Latest);
|
|
76
|
+
return statements;
|
|
77
|
+
};
|
|
78
|
+
const getInterfaceMetadata = (filename, sourceText) => getSourceFileStatements(filename, sourceText).reduce((metaDataAcc, statement) => {
|
|
79
|
+
if (statement.kind === ts.SyntaxKind.InterfaceDeclaration) {
|
|
80
|
+
const _statement = statement;
|
|
81
|
+
metaDataAcc.push({
|
|
82
|
+
displayName: _statement.name.escapedText,
|
|
83
|
+
description: _statement.jsDoc?.map((doc) => doc.comment).join('\n'),
|
|
84
|
+
props: buildJsDocProps(_statement.members, sourceText),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return metaDataAcc;
|
|
88
|
+
}, []);
|
|
89
|
+
const getTypeAliasMetadata = (filename, sourceText) => getSourceFileStatements(filename, sourceText).reduce((metaDataAcc, statement) => {
|
|
90
|
+
if (statement.kind === ts.SyntaxKind.TypeAliasDeclaration) {
|
|
91
|
+
const _statement = statement;
|
|
92
|
+
const props = _statement.type.types?.reduce((propAcc, type) => {
|
|
93
|
+
if (type.members) {
|
|
94
|
+
propAcc.push(buildJsDocProps(type.members, sourceText));
|
|
95
|
+
}
|
|
96
|
+
return propAcc;
|
|
97
|
+
}, []);
|
|
98
|
+
metaDataAcc.push({
|
|
99
|
+
props,
|
|
100
|
+
displayName: _statement.name.escapedText,
|
|
101
|
+
description: _statement.jsDoc?.map((doc) => doc.comment).join('\n'),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return metaDataAcc;
|
|
105
|
+
}, []);
|
|
106
|
+
function normalizeProp([name, { required, annotatedType, type, tsType, description, defaultValue },]) {
|
|
107
|
+
const res = {
|
|
108
|
+
name,
|
|
109
|
+
type: annotatedType ||
|
|
110
|
+
(type && type.name) ||
|
|
111
|
+
(type && (type.raw || type.name)) ||
|
|
112
|
+
(tsType && (tsType.raw || tsType.name)) ||
|
|
113
|
+
'No type info',
|
|
114
|
+
description,
|
|
115
|
+
};
|
|
116
|
+
if (required) {
|
|
117
|
+
res.required = true;
|
|
118
|
+
}
|
|
119
|
+
if (defaultValue && defaultValue.value) {
|
|
120
|
+
res.defaultValue = defaultValue.value;
|
|
121
|
+
}
|
|
122
|
+
return res;
|
|
123
|
+
}
|
|
124
|
+
export async function tsDocgen(file) {
|
|
125
|
+
const sourceText = await readFile(file, 'utf8');
|
|
126
|
+
const componentMeta = getComponentMetadata(file, sourceText); // Array of components with props
|
|
127
|
+
const interfaceMeta = getInterfaceMetadata(file, sourceText); // Array of interfaces with props
|
|
128
|
+
const typeAliasMeta = getTypeAliasMetadata(file, sourceText); // Array of type aliases with props
|
|
129
|
+
const propsMetaMap = [...interfaceMeta, ...typeAliasMeta].reduce(function (target, interfaceOrTypeAlias) {
|
|
130
|
+
target[interfaceOrTypeAlias.displayName] = interfaceOrTypeAlias;
|
|
131
|
+
return target;
|
|
132
|
+
}, {});
|
|
133
|
+
// Go through each component and check if they have an interface or type alias with a jsDoc description
|
|
134
|
+
// If so copy it over (fix for https://github.com/patternfly/patternfly-react/issues/7612)
|
|
135
|
+
componentMeta.forEach((c) => {
|
|
136
|
+
if (c.description) {
|
|
137
|
+
return c;
|
|
138
|
+
}
|
|
139
|
+
const propsName = `${c.displayName}Props`;
|
|
140
|
+
if (propsMetaMap[propsName]?.description) {
|
|
141
|
+
c.description = propsMetaMap[propsName].description;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return [...componentMeta, ...interfaceMeta, ...typeAliasMeta].map((parsed) => ({
|
|
145
|
+
name: parsed.displayName,
|
|
146
|
+
description: parsed.description || '',
|
|
147
|
+
props: Object.entries(parsed.props || {})
|
|
148
|
+
.map(normalizeProp)
|
|
149
|
+
.map(addAnnotations)
|
|
150
|
+
.filter((prop) => !prop.hide)
|
|
151
|
+
.sort((p1, p2) => p1.name.localeCompare(p2.name)),
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../cli/cli.ts","../../cli/createCollectionContent.ts","../../cli/createConfigFile.ts","../../cli/getConfig.ts","../../cli/setFsRootDir.ts","../../cli/updatePackageFile.ts","../../cli/templates/pf-docs.config.mjs"],"version":"5.6.3"}
|
|
1
|
+
{"root":["../../cli/buildPropsData.ts","../../cli/cli.ts","../../cli/createCollectionContent.ts","../../cli/createConfigFile.ts","../../cli/getConfig.ts","../../cli/hasFile.ts","../../cli/setFsRootDir.ts","../../cli/tsDocGen.js","../../cli/updatePackageFile.ts","../../cli/templates/pf-docs.config.mjs"],"version":"5.6.3"}
|