<commit_before>const React = require('react');
const createClass = require('create-react-class');
const _     = require('lodash');
const cx    = require('classnames');
const moment = require('moment');
const request = require('superagent');

const BrewItem = createClass({
	getDefaultProps : function() {
		return {
			brew : {
				title       : '',
				description : '',

				authors : []
			}
		};
	},

	deleteBrew : function(){
		if(!confirm('are you sure you want to delete this brew?')) return;
		if(!confirm('are you REALLY sure? You will not be able to recover it')) return;

		request.get(`/api/remove/${this.props.brew.editId}`)
			.send()
			.end(function(err, res){
				location.reload();
			});
	},

	renderDeleteBrewLink : function(){
		if(!this.props.brew.editId) return;

		return <a onClick={this.deleteBrew}>
			<i className='fa fa-trash' />
		</a>;
	},
	renderEditLink : function(){
		if(!this.props.brew.editId) return;

		return <a href={`/edit/${this.props.brew.editId}`} target='_blank'>
			<i className='fa fa-pencil' />
		</a>;
	},

	render : function(){
		const brew = this.props.brew;
		return <div className='brewItem'>
			<h2>{brew.title}</h2>
			<p className='description' >{brew.description}</p>
			<hr />

			<div className='info'>
				<span>
					<i className='fa fa-user' /> {brew.authors.join(', ')}
				</span>
				<span>
					<i className='fa fa-eye' /> {brew.views}
				</span>
				<span>
					<i className='fa fa-refresh' /> {moment(brew.updatedAt).fromNow()}
				</span>
			</div>

			<div className='links'>
				<a href={`/share/${brew.shareId}`} target='_blank'>
					<i className='fa fa-share-alt' />
				</a>
				{this.renderEditLink()}
				{this.renderDeleteBrewLink()}
			</div>
		</div>;
	}
});

module.exports = BrewItem;
<commit_msg>BrewItem: Mark links as noreferrer<commit_after>const React = require('react');
const createClass = require('create-react-class');
const _     = require('lodash');
const cx    = require('classnames');
const moment = require('moment');
const request = require('superagent');

const BrewItem = createClass({
	getDefaultProps : function() {
		return {
			brew : {
				title       : '',
				description : '',

				authors : []
			}
		};
	},

	deleteBrew : function(){
		if(!confirm('are you sure you want to delete this brew?')) return;
		if(!confirm('are you REALLY sure? You will not be able to recover it')) return;

		request.get(`/api/remove/${this.props.brew.editId}`)
			.send()
			.end(function(err, res){
				location.reload();
			});
	},

	renderDeleteBrewLink : function(){
		if(!this.props.brew.editId) return;

		return <a onClick={this.deleteBrew}>
			<i className='fa fa-trash' />
		</a>;
	},
	renderEditLink : function(){
		if(!this.props.brew.editId) return;

		return <a href={`/edit/${this.props.brew.editId}`} target='_blank' rel='noopener noreferrer'>
			<i className='fa fa-pencil' />
		</a>;
	},

	render : function(){
		const brew = this.props.brew;
		return <div className='brewItem'>
			<h2>{brew.title}</h2>
			<p className='description' >{brew.description}</p>
			<hr />

			<div className='info'>
				<span>
					<i className='fa fa-user' /> {brew.authors.join(', ')}
				</span>
				<span>
					<i className='fa fa-eye' /> {brew.views}
				</span>
				<span>
					<i className='fa fa-refresh' /> {moment(brew.updatedAt).fromNow()}
				</span>
			</div>

			<div className='links'>
				<a href={`/share/${brew.shareId}`} target='_blank' rel='noopener noreferrer'>
					<i className='fa fa-share-alt' />
				</a>
				{this.renderEditLink()}
				{this.renderDeleteBrewLink()}
			</div>
		</div>;
	}
});

module.exports = BrewItem;

{'fraction_non_alphanumeric': 0.19339752407152683, 'fraction_numerical': 0.0011004126547455295, 'mean_word_length': 3.33373063170441, 'pattern_counts': {'":': 0, '<': 61, '<?xml version=': 0, '>': 61, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5521615', 'n_tokens_mistral': 1465, 'n_tokens_neox': 1250, 'n_words': 266}