mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-07 03:09:14 +08:00
54 lines
1.5 KiB
Text
54 lines
1.5 KiB
Text
import { iconDefaults, matchName } from '../icon/index.mjs';
|
|
|
|
const optionalProperties = {
|
|
provider: "string",
|
|
aliases: "object",
|
|
not_found: "object"
|
|
};
|
|
for (const prop in iconDefaults) {
|
|
optionalProperties[prop] = typeof iconDefaults[prop];
|
|
}
|
|
function quicklyValidateIconSet(obj) {
|
|
if (typeof obj !== "object" || obj === null) {
|
|
return null;
|
|
}
|
|
const data = obj;
|
|
if (typeof data.prefix !== "string" || !obj.icons || typeof obj.icons !== "object") {
|
|
return null;
|
|
}
|
|
for (const prop in optionalProperties) {
|
|
if (obj[prop] !== void 0 && typeof obj[prop] !== optionalProperties[prop]) {
|
|
return null;
|
|
}
|
|
}
|
|
const icons = data.icons;
|
|
for (const name in icons) {
|
|
const icon = icons[name];
|
|
if (!name.match(matchName) || typeof icon.body !== "string") {
|
|
return null;
|
|
}
|
|
for (const prop in iconDefaults) {
|
|
if (icon[prop] !== void 0 && typeof icon[prop] !== typeof iconDefaults[prop]) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
const aliases = data.aliases;
|
|
if (aliases) {
|
|
for (const name in aliases) {
|
|
const icon = aliases[name];
|
|
const parent = icon.parent;
|
|
if (!name.match(matchName) || typeof parent !== "string" || !icons[parent] && !aliases[parent]) {
|
|
return null;
|
|
}
|
|
for (const prop in iconDefaults) {
|
|
if (icon[prop] !== void 0 && typeof icon[prop] !== typeof iconDefaults[prop]) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return data;
|
|
}
|
|
|
|
export { quicklyValidateIconSet };
|