UNPKG

ipsos-components

Version:

Material Design components for Angular

54 lines (42 loc) 2.07 kB
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(); }