<commit_before>import React, {PropTypes} from 'react';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import * as configActions from '../actions/configActions';
import Header from './common/Header';
import Footer from './common/Footer';

import toastr from 'toastr';

class App extends React.Component {
  constructor(props, context) {
    super(props, context);

    this.getChildContext = this.getChildContext.bind(this);
  }

  componentWillMount() {
    this.props.actions.loadConfigProps().then(() => {
      toastr.success("Succesfully loaded application configuration properties.");
    }).catch(error => {
      console.log(error);
      toastr.error("Unable to load application configuration properties.");
    });
  }

  getChildContext() {
    return {
      location: this.props.location
    };
  }

  render() {
    return (
      <div>
        <Header/>

        <div className="container-fluid">
          {this.props.children}
        </div>

        <Footer configs={this.props.configs}/>
      </div>
    );
  }
}

App.propTypes = {
  children: PropTypes.object.isRequired,
  location: PropTypes.object
};
<commit_msg>Add missing propTypes for configs & actions in App.js<commit_after>import React, {PropTypes} from 'react';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import * as configActions from '../actions/configActions';
import Header from './common/Header';
import Footer from './common/Footer';

import toastr from 'toastr';

class App extends React.Component {
  constructor(props, context) {
    super(props, context);

    this.getChildContext = this.getChildContext.bind(this);
  }

  componentWillMount() {
    this.props.actions.loadConfigProps().then(() => {
      toastr.success("Succesfully loaded application configuration properties.");
    }).catch(error => {
      console.log(error);
      toastr.error("Unable to load application configuration properties.");
    });
  }

  getChildContext() {
    return {
      location: this.props.location
    };
  }

  render() {
    return (
      <div>
        <Header/>

        <div className="container-fluid">
          {this.props.children}
        </div>

        <Footer configs={this.props.configs}/>
      </div>
    );
  }
}

App.propTypes = {
  children: PropTypes.object.isRequired,
  location: PropTypes.object,
  configs: PropTypes.object.isRequired,
  actions: {
    loadConfigProps: PropTypes.function
  }
};

{'fraction_non_alphanumeric': 0.13662085691188358, 'fraction_numerical': 0.0, 'mean_word_length': 3.1666666666666665, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 19, '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': '3061107', 'n_tokens_mistral': 729, 'n_tokens_neox': 726, 'n_words': 162}