ajout du site
This commit is contained in:
+44
@@ -0,0 +1,44 @@
|
||||
import { defaultExtendedIconProps, defaultIconDimensions } from "../icon/defaults.js";
|
||||
|
||||
/**
|
||||
* Optional properties
|
||||
*/
|
||||
const optionalPropertyDefaults = {
|
||||
provider: "",
|
||||
aliases: {},
|
||||
not_found: {},
|
||||
...defaultIconDimensions
|
||||
};
|
||||
/**
|
||||
* Check props
|
||||
*/
|
||||
function checkOptionalProps(item, defaults) {
|
||||
for (const prop in defaults) if (prop in item && typeof item[prop] !== typeof defaults[prop]) return false;
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Validate icon set, return it as IconifyJSON on success, null on failure
|
||||
*
|
||||
* Unlike validateIconSet(), this function is very basic.
|
||||
* It does not throw exceptions, it does not check metadata, it does not fix stuff.
|
||||
*/
|
||||
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;
|
||||
if (!checkOptionalProps(obj, optionalPropertyDefaults)) return null;
|
||||
const icons = data.icons;
|
||||
for (const name in icons) {
|
||||
const icon = icons[name];
|
||||
if (!name || typeof icon.body !== "string" || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;
|
||||
}
|
||||
const aliases = data.aliases || Object.create(null);
|
||||
for (const name in aliases) {
|
||||
const icon = aliases[name];
|
||||
const parent = icon.parent;
|
||||
if (!name || typeof parent !== "string" || !icons[parent] && !aliases[parent] || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
export { quicklyValidateIconSet };
|
||||
Reference in New Issue
Block a user