@meta-system/object-definition
Version:
Standard Object Definition For Meta-System
27 lines • 1.12 kB
JavaScript
const deepTypesType = ["object", "array"];
function isDeepDefinition(typeDefinition) {
if (!deepTypesType.includes(typeDefinition.type)) {
throw TypeError("Asserted type is not a flat type definition");
}
}
export const getAllTypesInDefinition = (objectDefinition) => {
const typeDefinitions = Object.values(objectDefinition);
const result = [];
typeDefinitions.forEach((typeDefinition) => {
const listedTypes = Array.isArray(typeDefinition) ? typeDefinition : [typeDefinition];
listedTypes.forEach((aTypeDefinition) => {
if (deepTypesType.includes(aTypeDefinition.type)) {
isDeepDefinition(aTypeDefinition);
if (typeof aTypeDefinition.subtype === "string") {
result.push(aTypeDefinition.subtype);
return;
}
result.push(...getAllTypesInDefinition(aTypeDefinition.subtype));
return;
}
result.push(aTypeDefinition.type);
});
});
return result;
};
//# sourceMappingURL=get-all-types-in-definition.js.map