2022-11-25 14:23:11 +08:00
|
|
|
const TypeDoc = require('typedoc');
|
|
|
|
const fs = require('fs-extra');
|
|
|
|
|
|
|
|
const getTokenList = (list, source) =>
|
|
|
|
list
|
|
|
|
.filter((item) => !item.comment?.blockTags.some((tag) => tag.tag === '@internal'))
|
|
|
|
.map((item) => ({
|
|
|
|
source,
|
2022-11-30 11:48:47 +08:00
|
|
|
token: item.name,
|
2022-11-25 14:23:11 +08:00
|
|
|
type: item.type.toString(),
|
|
|
|
desc: item.comment?.blockTags?.find((tag) => tag.tag === '@desc')?.content[0]?.text || '-',
|
|
|
|
descEn:
|
2022-11-30 11:48:47 +08:00
|
|
|
item.comment?.blockTags?.find((tag) => tag.tag === '@descEN')?.content[0]?.text || '-',
|
|
|
|
name: item.comment?.blockTags?.find((tag) => tag.tag === '@nameZH')?.content[0]?.text || '-',
|
|
|
|
nameEn:
|
|
|
|
item.comment?.blockTags?.find((tag) => tag.tag === '@nameEN')?.content[0]?.text || '-',
|
2022-11-25 14:23:11 +08:00
|
|
|
}));
|
|
|
|
|
|
|
|
function main() {
|
|
|
|
const app = new TypeDoc.Application();
|
|
|
|
|
|
|
|
// If you want TypeDoc to load tsconfig.json / typedoc.json files
|
|
|
|
app.options.addReader(new TypeDoc.TSConfigReader());
|
|
|
|
app.options.addReader(new TypeDoc.TypeDocReader());
|
|
|
|
|
|
|
|
app.bootstrap({
|
|
|
|
// typedoc options here
|
2022-11-30 11:48:47 +08:00
|
|
|
entryPoints: ['components/theme/interface/index.ts'],
|
2022-11-25 14:23:11 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
const project = app.convert();
|
|
|
|
|
|
|
|
if (project) {
|
|
|
|
// Project may not have converted correctly
|
|
|
|
const output = 'components/version/token-meta.json';
|
|
|
|
const tokenMeta = {};
|
|
|
|
let presetColors = [];
|
|
|
|
project.children.forEach((type) => {
|
|
|
|
if (type.name === 'SeedToken') {
|
|
|
|
tokenMeta.seed = getTokenList(type.children, 'seed');
|
|
|
|
} else if (type.name === 'MapToken') {
|
|
|
|
tokenMeta.map = getTokenList(type.children, 'map');
|
|
|
|
} else if (type.name === 'AliasToken') {
|
|
|
|
tokenMeta.alias = getTokenList(type.children, 'alias');
|
|
|
|
} else if (type.name === 'PresetColors') {
|
|
|
|
presetColors = type.type.target.elements.map((item) => item.value);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Exclude preset colors
|
|
|
|
tokenMeta.seed = tokenMeta.seed.filter(
|
2022-11-30 11:48:47 +08:00
|
|
|
(item) => !presetColors.some((color) => item.token.startsWith(color)),
|
2022-11-25 14:23:11 +08:00
|
|
|
);
|
|
|
|
tokenMeta.map = tokenMeta.map.filter(
|
2022-11-30 11:48:47 +08:00
|
|
|
(item) => !presetColors.some((color) => item.token.startsWith(color)),
|
2022-11-25 14:23:11 +08:00
|
|
|
);
|
|
|
|
tokenMeta.alias = tokenMeta.alias.filter(
|
2022-11-30 11:48:47 +08:00
|
|
|
(item) => !presetColors.some((color) => item.token.startsWith(color)),
|
2022-11-25 14:23:11 +08:00
|
|
|
);
|
|
|
|
|
|
|
|
tokenMeta.alias = tokenMeta.alias.filter(
|
2022-11-30 11:48:47 +08:00
|
|
|
(item) => !tokenMeta.map.some((mapItem) => mapItem.token === item.token),
|
2022-11-25 14:23:11 +08:00
|
|
|
);
|
|
|
|
tokenMeta.map = tokenMeta.map.filter(
|
2022-11-30 11:48:47 +08:00
|
|
|
(item) => !tokenMeta.seed.some((seedItem) => seedItem.token === item.token),
|
2022-11-25 14:23:11 +08:00
|
|
|
);
|
|
|
|
|
|
|
|
fs.writeJsonSync(output, tokenMeta, 'utf8');
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
console.log(`✅ Token Meta has been written to ${output}`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
main();
|