Skip to content

Commit

Permalink
fix: api table does not respect ignore flag (#1981)
Browse files Browse the repository at this point in the history
  • Loading branch information
PeachScript committed Dec 11, 2023
1 parent 8f9e80b commit 7131d3e
Showing 1 changed file with 33 additions and 2 deletions.
35 changes: 33 additions & 2 deletions src/features/parser.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,47 @@
import type AtomAssetsParser from '@/assetParsers/atom';
import type { IApi } from '@/types';
import { lodash } from '@umijs/utils';
import assert from 'assert';
import { ATOMS_META_PATH } from './meta';

type IParsedAtomAssets = Awaited<ReturnType<AtomAssetsParser['parse']>>;

function filterIgnoredProps(
props: IParsedAtomAssets['components'][string]['propsConfig']['properties'],
) {
return lodash.pickBy(props, (prop) => {
let isHidden = false;

if (prop.type === 'array' && 'items' in prop) {
prop.items = filterIgnoredProps({ _: prop.items! })._;
} else if (prop.type === 'object' && 'properties' in prop) {
prop.properties = filterIgnoredProps(prop.properties!);
} else if (prop.oneOf) {
prop.oneOf = prop.oneOf.map((item) => filterIgnoredProps({ _: item })._);
} else if (prop.allOf) {
prop.allOf = prop.allOf.map((item) => filterIgnoredProps({ _: item })._);
} else if ('hidden' in prop) {
isHidden = true;
}

return !isHidden;
});
}

export default (api: IApi) => {
let prevData: Awaited<ReturnType<AtomAssetsParser['parse']>>;
let prevData: IParsedAtomAssets;
const writeAtomsMetaFile = (data: typeof prevData) => {
// filter ignored properties
const components = lodash.mapValues(data.components, (component) => ({
...component,
propsConfig: filterIgnoredProps({ _: component.propsConfig })._,
}));

api.writeTmpFile({
noPluginDir: true,
path: ATOMS_META_PATH,
content: `export const components = ${JSON.stringify(
data.components,
components,
null,
2,
)};`,
Expand Down

0 comments on commit 7131d3e

Please sign in to comment.