module.exports = async ({github, context, dependencyName, tagVersion = 'alpha' }) => {

    console.log('owner', context.repo.owner)
    const organization = 'alfresco';
    const dependencyFullName = `@${organization}/${dependencyName}`;
    
    console.log('Looking versions for: ', dependencyFullName);
    
    const pjson = require('../../../package.json');
    const currentDependency = pjson?.dependencies[dependencyFullName];
    console.log('current from package.json:', currentDependency);
    
    const { data: availablePakages } = await github.rest.packages.getAllPackageVersionsForPackageOwnedByOrg({
        package_type: 'npm',
        package_name: dependencyName,
        org: organization
    });
    
    let latestPkgToUpdate = undefined;
    if (tagVersion !== 'latest') {
        console.log('alpha: taking most recent')

        const filteredAlphaPkgs = availablePakages.filter( (item) => item.name.match('^[0-9]*.[0-9]*.[0-9]*.-[0-9]*$'));
        latestPkgToUpdate = filteredAlphaPkgs[0];
    } else {
        console.log('release: taking most recent')
        const filteredReleasePkgs = availablePakages.filter( (item) => item.name.match('^[0-9]*.[0-9]*.[0-9]*$'));
        latestPkgToUpdate = filteredReleasePkgs[0];
    }

    if (latestPkgToUpdate === undefined) {
        console.log(`Something went wrong. Not able to find any version.`);
        return { hasVersionNew: 'false' };
    } else {
        console.log(`latest tag:${tagVersion} from NPM: `, latestPkgToUpdate.name);

        if (currentDependency === latestPkgToUpdate?.name) {
            console.log(`There is no new version published for ${dependencyFullName}.`);
            return { hasVersionNew: 'false' };
        } else {
            return { hasVersionNew: 'true', latestVersion: latestPkgToUpdate?.name };
        }
    }

}