ipsos-components
Version:
Material Design components for Angular
54 lines (42 loc) • 2.07 kB
text/typescript
import {https} from 'firebase-functions';
import {verifyToken} from './jwt/verify-token';
import {setGithubStatus} from './github/github-status';
export const payloadGithubStatus = https.onRequest(async (request, response) => {
const authToken = request.header('auth-token');
const commitSha = request.header('commit-sha');
const packageName = request.header('package-name');
const packageSize = parseFloat(request.header('package-full-size') || '');
const packageDiff = parseFloat(request.header('package-size-diff') || '');
if (!authToken || !verifyToken(authToken)) {
return response.status(403).json({message: 'Auth token is not valid'});
}
if (!commitSha) {
return response.status(404).json({message: 'No commit has been specified'});
}
if (isNaN(packageDiff)) {
return response.status(400).json({message: 'No valid package difference has been specified.'});
}
if (isNaN(packageSize)) {
return response.status(400).json({message: 'No full size of the package has been specified.'});
}
if (!packageName) {
return response.status(400).json({message: 'No package name has been specified.'});
}
if (packageDiff === 0) {
return response.status(400).json({message: `The difference equals zero. Status won't be set.`});
}
// Better message about the diff that shows whether the payload increased or decreased.
const diffMessage = packageDiff < 0 ? 'decrease' : 'increase';
const diffFormatted = Math.abs(packageDiff).toFixed(2);
const packageSizeFormatted = packageSize.toFixed(2);
await setGithubStatus(commitSha, {
result: true,
name: `${capitalizeFirstLetter(packageName)} Payload Size`,
description: `${packageSizeFormatted}kb / ${diffFormatted}kb ${diffMessage} (ES2015 bundle)`
});
response.json({message: 'Payload Github status successfully set.'});
});
/** Capitalizes the first letter of a string. */
function capitalizeFirstLetter(word: string) {
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
}