@patternfly/patternfly-doc-core 1.2.1 → 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.
Files changed (82) hide show
  1. package/.astro/collections/textContent.schema.json +6 -0
  2. package/README.md +11 -10
  3. package/astro.config.mjs +8 -1
  4. package/cli/buildPropsData.ts +113 -0
  5. package/cli/cli.ts +52 -6
  6. package/cli/getConfig.ts +6 -0
  7. package/cli/hasFile.ts +5 -0
  8. package/cli/templates/pf-docs.config.mjs +13 -2
  9. package/cli/tsDocGen.js +199 -0
  10. package/dist/cli/buildPropsData.js +68 -0
  11. package/dist/cli/cli.js +37 -4
  12. package/dist/cli/hasFile.js +4 -0
  13. package/dist/cli/templates/pf-docs.config.mjs +12 -1
  14. package/dist/cli/tsDocGen.js +153 -0
  15. package/dist/cli/tsconfig.tsbuildinfo +1 -1
  16. package/dist/client/_astro/_page_.SnUmZn2y.css +1 -0
  17. package/dist/client/design-foundations/typography/index.html +219 -0
  18. package/dist/client/design-foundations/usage-and-behavior/index.html +368 -0
  19. package/dist/client/get-started/contribute/index.html +115 -0
  20. package/dist/client/index.html +42 -0
  21. package/dist/server/_@astrojs-ssr-adapter.mjs +1 -0
  22. package/dist/server/_noop-middleware.mjs +3 -0
  23. package/dist/server/chunks/PropsTables_D_v4KAMn.mjs +1826 -0
  24. package/dist/server/chunks/_@astrojs-ssr-adapter_ByVMUK8O.mjs +3621 -0
  25. package/dist/server/chunks/_astro_assets_CLOMnm-3.mjs +1507 -0
  26. package/dist/server/chunks/_astro_data-layer-content_DDGBHvtb.mjs +1 -0
  27. package/dist/server/chunks/angle-down-icon_BNJvzYv-.mjs +3970 -0
  28. package/dist/server/chunks/astro/server_D4f31GMD.mjs +2769 -0
  29. package/dist/server/chunks/astro-designed-error-pages_CpHpbfhr.mjs +282 -0
  30. package/dist/server/chunks/consts_BmVDRGlB.mjs +32 -0
  31. package/dist/server/chunks/content-assets_DleWbedO.mjs +1 -0
  32. package/dist/server/chunks/content-modules_Dz-S_Wwv.mjs +1 -0
  33. package/dist/server/chunks/path_Cvt6sEOY.mjs +58 -0
  34. package/dist/server/chunks/sharp_BYpUyJGL.mjs +88 -0
  35. package/dist/server/entry.mjs +45 -0
  36. package/dist/server/manifest_Bln0Ib60.mjs +102 -0
  37. package/dist/server/pages/_image.astro.mjs +132 -0
  38. package/dist/server/pages/_section_/_---page_.astro.mjs +1 -0
  39. package/dist/server/pages/_section_/_page_/_---tab_.astro.mjs +1 -0
  40. package/dist/server/pages/index.astro.mjs +1 -0
  41. package/dist/server/pages/props.astro.mjs +25 -0
  42. package/dist/server/renderers.mjs +259 -0
  43. package/jest.config.ts +1 -1
  44. package/package.json +4 -1
  45. package/pf-docs.config.mjs +31 -0
  46. package/src/components/PropsTable.tsx +3 -3
  47. package/src/components/PropsTables.astro +38 -0
  48. package/src/content.config.ts +1 -0
  49. package/src/pages/[section]/[...page].astro +16 -8
  50. package/src/pages/[section]/[page]/[...tab].astro +4 -1
  51. package/src/pages/props.ts +17 -0
  52. package/textContent/contribute.md +1 -0
  53. package/dist/design-foundations/typography/index.html +0 -193
  54. package/dist/design-foundations/usage-and-behavior/index.html +0 -342
  55. package/dist/get-started/contribute/index.html +0 -89
  56. package/dist/index.html +0 -42
  57. /package/dist/{PF-HorizontalLogo-Color.svg → client/PF-HorizontalLogo-Color.svg} +0 -0
  58. /package/dist/{PF-HorizontalLogo-Reverse.svg → client/PF-HorizontalLogo-Reverse.svg} +0 -0
  59. /package/dist/{_astro → client/_astro}/Button.C3_jB5tC.js +0 -0
  60. /package/dist/{_astro → client/_astro}/ClientRouter.astro_astro_type_script_index_0_lang.Cainpjm5.js +0 -0
  61. /package/dist/{_astro → client/_astro}/Navigation.Cede__Ud.js +0 -0
  62. /package/dist/{_astro → client/_astro}/PageContext.C7BqCh9N.js +0 -0
  63. /package/dist/{_astro → client/_astro}/PageToggle.DDEjruql.js +0 -0
  64. /package/dist/{_astro → client/_astro}/RedHatDisplayVF-Italic.CRpusWc8.woff2 +0 -0
  65. /package/dist/{_astro → client/_astro}/RedHatDisplayVF.CYDHf1NI.woff2 +0 -0
  66. /package/dist/{_astro → client/_astro}/RedHatMonoVF-Italic.DGQo2ogW.woff2 +0 -0
  67. /package/dist/{_astro → client/_astro}/RedHatMonoVF.C4fMH6Vz.woff2 +0 -0
  68. /package/dist/{_astro → client/_astro}/RedHatTextVF-Italic.Dkj_WqbA.woff2 +0 -0
  69. /package/dist/{_astro → client/_astro}/RedHatTextVF.wYvZ7prR.woff2 +0 -0
  70. /package/dist/{_astro → client/_astro}/Toolbar.TAdHxLSQ.js +0 -0
  71. /package/dist/{_astro → client/_astro}/_page_.CXyz_BEo.css +0 -0
  72. /package/dist/{_astro → client/_astro}/_page_.DVvr_Mfl.css +0 -0
  73. /package/dist/{_astro → client/_astro}/client.CeeiqVaE.js +0 -0
  74. /package/dist/{_astro → client/_astro}/divider.BSD-oFoh.js +0 -0
  75. /package/dist/{_astro → client/_astro}/fa-solid-900.DguXoeIz.woff2 +0 -0
  76. /package/dist/{_astro → client/_astro}/index.CTH3fVMn.js +0 -0
  77. /package/dist/{_astro → client/_astro}/page.B65lVdBS.js +0 -0
  78. /package/dist/{_astro → client/_astro}/pf-v6-pficon.Dy6oiu9u.woff2 +0 -0
  79. /package/dist/{avatarImg.svg → client/avatarImg.svg} +0 -0
  80. /package/dist/{avatarImgDark.svg → client/avatarImgDark.svg} +0 -0
  81. /package/dist/{content → client/content}/typography/line-height.png +0 -0
  82. /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"}