ci: Validate load options methods in nodes-base (no-changelog) (#5862)

This commit is contained in:
Iván Ovejero
2023-04-12 15:46:11 +02:00
committed by GitHub
parent 4d5756cd01
commit 5227ccd75a
7 changed files with 106 additions and 16 deletions

View File

@@ -9,25 +9,68 @@ LoggerProxy.init({
warn: console.warn.bind(console),
});
function findReferencedMethods(obj, refs = {}, latestName = '') {
for (const key in obj) {
if (key === 'name' && 'group' in obj) {
latestName = obj[key];
}
if (typeof obj[key] === 'object') {
findReferencedMethods(obj[key], refs, latestName);
}
if (key === 'loadOptionsMethod') {
refs[latestName] = refs[latestName]
? [...new Set([...refs[latestName], obj[key]])]
: [obj[key]];
}
}
return refs;
}
(async () => {
const loader = new PackageDirectoryLoader(packageDir);
await loader.loadAll();
await loader.loadAll({ withLoadOptionsMethods: true });
const credentialTypes = Object.values(loader.credentialTypes).map((data) => data.type);
const nodeTypes = Object.values(loader.nodeTypes)
const loaderNodeTypes = Object.values(loader.nodeTypes);
const definedMethods = loaderNodeTypes.reduce((acc, cur) => {
NodeHelpers.getVersionedNodeTypeAll(cur.type).forEach((type) => {
const methods = type.description?.__loadOptionsMethods;
if (!methods) return;
const { name } = type.description;
acc[name] = acc[name] ? acc[name].push(methods) : methods;
});
return acc;
}, {});
const nodeTypes = loaderNodeTypes
.map((data) => {
const nodeType = NodeHelpers.getVersionedNodeType(data.type);
NodeHelpers.applySpecialNodeParameters(nodeType);
return data.type;
})
.flatMap((nodeData) => {
const allNodeTypes = NodeHelpers.getVersionedNodeTypeAll(nodeData);
return allNodeTypes.map((element) => element.description);
return NodeHelpers.getVersionedNodeTypeAll(nodeData).map((item) => {
const { __loadOptionsMethods, ...rest } = item.description;
return rest;
});
});
const referencedMethods = findReferencedMethods(nodeTypes);
await Promise.all([
writeJSON('types/credentials.json', credentialTypes),
writeJSON('types/nodes.json', nodeTypes),
writeJSON('methods/defined.json', definedMethods),
writeJSON('methods/referenced.json', referencedMethods),
]);
})();