mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 17:46:45 +00:00
ci: Validate load options methods in nodes-base (no-changelog) (#5862)
This commit is contained in:
@@ -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),
|
||||
]);
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user