<commit_before>window.html2canvas = function(elements, opts) {
  var queue,
  canvas,
  options = {
    // general
    logging: false,
    elements: elements,
    background: "#fff",

    // preload options
    proxy: null,
    timeout: 0,    // no timeout
    useCORS: false, // try to load images as CORS (where available), before falling back to proxy
    allowTaint: false, // whether to allow images to taint the canvas, won't need proxy if set to true

    // parse options
    svgRendering: false, // use svg powered rendering where available (FF11+)
    ignoreElements: "IFRAME|OBJECT|PARAM",
    useOverflow: true,
    letterRendering: false,
    chinese: false,

    // render options

    width: null,
    height: null,
    taintTest: true, // do a taint test with all images before applying to canvas
    renderer: "Canvas"
  };

  options = _html2canvas.Util.Extend(opts, options);

  _html2canvas.logging = options.logging;
  options.complete = function( images ) {

    if (typeof options.onpreloaded === "function") {
      if ( options.onpreloaded( images ) === false ) {
        return;
      }
    }
    queue = _html2canvas.Parse( images, options );

    if (typeof options.onparsed === "function") {
      if ( options.onparsed( queue ) === false ) {
        return;
      }
    }

    canvas = _html2canvas.Renderer( queue, options );

    if (typeof options.onrendered === "function") {
      options.onrendered( canvas );
    }

  };

  // for pages without images, we still want this to be async, i.e. return methods before executing
  window.setTimeout( function(){
    _html2canvas.Preload( options );
  }, 0 );

  return {
    render: function( queue, opts ) {
      return _html2canvas.Renderer( queue, _html2canvas.Util.Extend(opts, options) );
    },
    parse: function( images, opts ) {
      return _html2canvas.Parse( images, _html2canvas.Util.Extend(opts, options) );
    },
    preload: function( opts ) {
      return _html2canvas.Preload( _html2canvas.Util.Extend(opts, options) );
    },
    log: h2clog
  };
};

window.html2canvas.log = h2clog; // for renderers
window.html2canvas.Renderer = {
  Canvas: undefined // We are assuming this will be used
};<commit_msg>Allow element node to be passed<commit_after>window.html2canvas = function(elements, opts) {
  elements = (elements.length) ? elements : [elements];
  var queue,
  canvas,
  options = {
    // general
    logging: false,
    elements: elements,
    background: "#fff",

    // preload options
    proxy: null,
    timeout: 0,    // no timeout
    useCORS: false, // try to load images as CORS (where available), before falling back to proxy
    allowTaint: false, // whether to allow images to taint the canvas, won't need proxy if set to true

    // parse options
    svgRendering: false, // use svg powered rendering where available (FF11+)
    ignoreElements: "IFRAME|OBJECT|PARAM",
    useOverflow: true,
    letterRendering: false,
    chinese: false,

    // render options

    width: null,
    height: null,
    taintTest: true, // do a taint test with all images before applying to canvas
    renderer: "Canvas"
  };

  options = _html2canvas.Util.Extend(opts, options);

  _html2canvas.logging = options.logging;
  options.complete = function( images ) {

    if (typeof options.onpreloaded === "function") {
      if ( options.onpreloaded( images ) === false ) {
        return;
      }
    }
    queue = _html2canvas.Parse( images, options );

    if (typeof options.onparsed === "function") {
      if ( options.onparsed( queue ) === false ) {
        return;
      }
    }

    canvas = _html2canvas.Renderer( queue, options );

    if (typeof options.onrendered === "function") {
      options.onrendered( canvas );
    }

  };

  // for pages without images, we still want this to be async, i.e. return methods before executing
  window.setTimeout( function(){
    _html2canvas.Preload( options );
  }, 0 );

  return {
    render: function( queue, opts ) {
      return _html2canvas.Renderer( queue, _html2canvas.Util.Extend(opts, options) );
    },
    parse: function( images, opts ) {
      return _html2canvas.Parse( images, _html2canvas.Util.Extend(opts, options) );
    },
    preload: function( opts ) {
      return _html2canvas.Preload( _html2canvas.Util.Extend(opts, options) );
    },
    log: h2clog
  };
};

window.html2canvas.log = h2clog; // for renderers
window.html2canvas.Renderer = {
  Canvas: undefined // We are assuming this will be used
};<|endoftext|>


<commit_before>import React, { Component } from 'react'
import styled, { css } from 'styled-components'
import PropTypes from 'prop-types'
import { FormattedMessage } from 'react-intl'
import Auth from '../../modules/auth'
import Button from 'material-ui/Button'
import Typography from 'material-ui/Typography'
import { withStyles } from 'material-ui/styles'
import { withRouter } from 'react-router-dom'

import LoginFormContainer from '../../containers/login-form'

const logoGithub = require('../../images/github-logo.png')
const logoBitbucket = require('../../images/bitbucket-logo.png')

import api from '../../consts'

const styles = theme => ({
  gutterLeft: {
    marginLeft: 10
  }
})

const Wrapper = styled.div`
  ${props => props.contrast && css`
    color: white;
  `}
`

const Content = styled.div`
  margin-top: 10px;
`

class LoginButton extends Component {

  componentWillMount () {
    if (this.props.referer) {
      Auth.storeReferer(this.props.referer.pathname)
    }
    if (this.props.location && this.props.location.state && this.props.location.state.from) {
      const referer = this.props.location.state.from.pathname
      if (referer) {
        Auth.storeReferer(referer)
      }
    }
  }

  render () {
    const { classes, contrast, size, includeForm } = this.props

    return (
      <Wrapper contrast={ contrast }>
        <Content>
          { includeForm && (

              <Typography type='subheading' color={ contrast ? 'inherit' : 'default' } gutterBottom noWrap>
                <FormattedMessage id='account.login.connect.form' defaultMessage='Connect or signup with your account' />
              </Typography>
              <LoginFormContainer />

          ) }

            <Typography type='subheading' color={ contrast ? 'inherit' : 'default' } gutterBottom>
              <FormattedMessage id='account.login.connect.provider' defaultMessage='You can also connect or signup with your existing account from other services' />
            </Typography>

              <Button
                style={ { marginRight: 10 } }
                href={ `${api.API_URL}/authorize/github` }
                variant='raised'
                size={ size }
                color='secondary'
                className={ classes.logButtons }
              >

                Github
              </Button>
              <Button
                href={ `${api.API_URL}/authorize/bitbucket` }
                variant='raised'
                size={ size }
                color='secondary'
                className={ classes.logButtons }
              >

                Bitbucket
              </Button>

        </Content>
      </Wrapper>
    )
  }
}

LoginButton.propTypes = {
  classes: PropTypes.object.isRequired,
  referer: PropTypes.object,
  contrast: PropTypes.bool,
  includeForm: PropTypes.bool,
  size: PropTypes.oneOf(['large', 'medium', 'small'])
}

LoginButton.defaultProps = {
  size: 'large'
}

export default withRouter(withStyles(styles)(LoginButton))
<commit_msg>lint fix<commit_after>import React, { Component } from 'react'
import styled, { css } from 'styled-components'
import PropTypes from 'prop-types'
import { FormattedMessage } from 'react-intl'
import Auth from '../../modules/auth'
import Button from 'material-ui/Button'
import Typography from 'material-ui/Typography'
import { withStyles } from 'material-ui/styles'
import { withRouter } from 'react-router-dom'

import LoginFormContainer from '../../containers/login-form'

const logoGithub = require('../../images/github-logo.png')
const logoBitbucket = require('../../images/bitbucket-logo.png')

import api from '../../consts'

const styles = theme => ({
  gutterLeft: {
    marginLeft: 10
  }
})

const Wrapper = styled.div`
  ${props => props.contrast && css`
    color: white;
  `}
`

const Content = styled.div`
  margin-top: 10px;
`

class LoginButton extends Component {
  componentWillMount () {
    if (this.props.referer) {
      Auth.storeReferer(this.props.referer.pathname)
    }
    if (this.props.location && this.props.location.state && this.props.location.state.from) {
      const referer = this.props.location.state.from.pathname
      if (referer) {
        Auth.storeReferer(referer)
      }
    }
  }

  render () {
    const { classes, contrast, size, includeForm } = this.props

    return (
      <Wrapper contrast={ contrast }>
        <Content>
          { includeForm && (

              <Typography type='subheading' color={ contrast ? 'inherit' : 'default' } gutterBottom noWrap>
                <FormattedMessage id='account.login.connect.form' defaultMessage='Connect or signup with your account' />
              </Typography>
              <LoginFormContainer />

          ) }

            <Typography type='subheading' color={ contrast ? 'inherit' : 'default' } gutterBottom>
              <FormattedMessage id='account.login.connect.provider' defaultMessage='You can also connect or signup with your existing account from other services' />
            </Typography>

              <Button
                style={ { marginRight: 10 } }
                href={ `${api.API_URL}/authorize/github` }
                variant='raised'
                size={ size }
                color='secondary'
                className={ classes.logButtons }
              >

                Github
              </Button>
              <Button
                href={ `${api.API_URL}/authorize/bitbucket` }
                variant='raised'
                size={ size }
                color='secondary'
                className={ classes.logButtons }
              >

                Bitbucket
              </Button>

        </Content>
      </Wrapper>
    )
  }
}

LoginButton.propTypes = {
  classes: PropTypes.object.isRequired,
  referer: PropTypes.object,
  contrast: PropTypes.bool,
  includeForm: PropTypes.bool,
  size: PropTypes.oneOf(['large', 'medium', 'small'])
}

LoginButton.defaultProps = {
  size: 'large'
}

export default withRouter(withStyles(styles)(LoginButton))
<|endoftext|>


<commit_before>import React from 'react'
import PropTypes from 'prop-types'
import { FormattedMessage } from 'react-intl'
import { withStyles } from '@material-ui/core/styles'
import {
  Button,
  AppBar,
  Toolbar,
  Grid,
  Typography,
  Link
} from '@material-ui/core'
import peopleImage from '../../images/landingPage_People.png'
import logoGrey from '../../images/logo-complete-gray.png'
import screenImage from '../../images/gitpay-explore-task-screenshot.png'
import profileImage from '../../images/avatar-alexandre.png'
import Bottom from '../../components/bottom/bottom'
import Clientlist from './clientlist'
import TeamCard from '../Cards/TeamCard'
import ContactRecruiterFormContainer from '../../containers/contact-recruiter-form'

const deal = require('../../images/deal.png')

import {
  MainTitle,
  MainList,
  ResponsiveImage,
  Section
} from './components/CommonStyles'

// Landing Page for GitPay
// Total hours worked on this: ~12hours
// Still need to add in functionality for buttons
// Export Styles to seperate file to clean up code but left here for you to see for now

const recruiterTeam = [
  {
    name: 'Kevin Kautzman',
    description: 'Kevin is a proven front-end expert, digital marketer and award-winning writer with an MFA from the prestigious Michener Center for Writers at UT Austin.',
    image: require('../../images/teams/headhunter-team-member2.png'),
    linkedinUrl: 'https://www.linkedin.com/in/kevinwrites/'
  },
  {
    name: 'Alexandre Magno',
    description: 'Founder of Gitpay, and senior software engineer, sharing and helping developers to face the challenges of technical recruitment.',
    image: require('../../images/teams/headhunter-team-member1.png'),
    linkedinUrl: 'https://www.linkedin.com/in/alexandremagnoteleszimerer/'
  }
]

const styles = (theme) => ({
  signText: {
    fontWeight: 400,
    marginTop: 0,
    marginBottom: 3,
    fontSize: '1.25em',
    [theme.breakpoints.down('sm')]: {
      fontSize: '1em',
    },
  },
  buttonSignin: {
    textTransform: 'none',
    width: 120,
    borderRadius: 25,
    marginRight: 20,
    '&:hover': {
      color: 'white',
      background: '#7F83FF',
    },
    [theme.breakpoints.down('sm')]: {
      width: 90,
    },
  },
  buttonSignup: {
    borderRadius: 25,
    width: 130,
    background: '#7F83FF',
    color: 'white',
    textTransform: 'none',
    '&:hover': {
      background: '#4A4EDD',
    },
    [theme.breakpoints.down('sm')]: {
      width: 90,
    },
  },
  buttonHire: {
    textTransform: 'none',
    background: '#4A4EDD',
    height: 50,
    '&:hover': {
      background: '#7F83FF',
    },
  },
  buttonHireSmall: {
    textTransform: 'none',
    background: '#4A4EDD',
    '&:hover': {
      background: '#7F83FF',
    },
  },
  buttonWork: {
    border: '2px solid',
    textTransform: 'none',
    color: '#4A4EDD',
    borderColor: '#4A4EDD',
    marginRight: 20,
    width: 150,
    height: 50,
    '&:hover': {
      background: '#7F83FF',
      border: '2px solid',
      color: 'white',
    },
    [theme.breakpoints.down('sm')]: {
      marginRight: 0,
    },
  },
  root: {
    flexGrow: 1,
    marginLeft: 50,
    marginRight: 70,
    marginTop: 50,
    fontFamily: 'Arial',
    fontWeight: '300',
    color: '#2F2D2D',
    lineHeight: '1.5em',
    [theme.breakpoints.down('sm')]: {
      display: 'flex',
      margin: 'auto',
    },
  },
  grow: {
    flexGrow: 1,
  },
  logoImage: {
    width: 170,
    [theme.breakpoints.down('sm')]: {
      width: 120,
    },
  },
  topBarContainer: {
    marginTop: 40,
    marginLeft: 70,
    marginRight: 70,
  },
  textContainer: {
    marginTop: 60,
    marginLeft: 30,
    [theme.breakpoints.down('sm')]: {
      marginLeft: 10,
      marginRight: 10
    },
  },
  textSize: {
    fontSize: '1.5em',
    marginTop: 0,
    marginBottom: 0,
  },
  center: {
    textAlign: 'center',
  },
  bottomImage: {
    backgroundRepeat: 'no-repeat',
    position: 'absolute',
    width: '100vw',
    [theme.breakpoints.down('sm')]: {
      bottom: 0,
    }
  },
  header: {
    fontSize: '2.5em',
    fontWeight: 200,
    marginTop: 70,
    marginBottom: 36,
    [theme.breakpoints.down('sm')]: {
      lineHeight: 1.5,
      fontSize: '1.3em',
    }
  },
  paragraph: {
    fontSize: '1.2em',
    lineHeight: 1.5,
    [theme.breakpoints.down('sm')]: {
      lineHeight: 1.5,
      fontSize: '1em',
      margin: '0 auto',
      width: 270
    }
  },
  margin: {
    marginTop: 60,
    marginBottom: 100,
    marginLeft: 30,
    [theme.breakpoints.down('sm')]: {
      marginLeft: 0,
    },
  },
})

function LandingPage (props) {
  const { classes } = props
  const ref = React.createRef()

  const handleClick = (event) => {
    event.preventDefault()
    ref.current.scrollIntoView({
      behavior: 'smooth',
      block: 'start',
    })
  }

  return (

        <Grid container className={ classes.center } spacing={ 8 }>
          <Grid item xs={ 12 }>
            <AppBar
              position='static'
              style={ { background: 'transparent', boxShadow: 'none' } }
            >
              <Toolbar>
                <Link href='https://gitpay.me/#/recruitment'>

                </Link>

                <Button
                  className={ classes.buttonSignin }
                  onClick={ handleClick }
                >

<FormattedMessage id='welcome.landing.signin' defaultMessage='Contact us' />

                </Button>
                <Button href={ 'https://gitpay.me' } target='_blank' className={ classes.buttonSignup }>

<FormattedMessage id='welcome.landing.signup' defaultMessage='GitPay.me' />

                </Button>
              </Toolbar>
            </AppBar>
            <Grid item xs={ 12 } className={ classes.textContainer }>

                <FormattedMessage id='welcome.landing.title' defaultMessage='A Better Way to Recruit Technical Talent' />

<FormattedMessage id='welcome.landing.description' defaultMessage='GitPay is a platform by developers, for developers that connects global talent to real-world technical challenges on GitHub and Bitbucket. This allows our international recruitment team to identify the best, proven talent in real time for roles at some of the world’s most exciting companies, like yours. Want our help filling a position?' />

            </Grid>
            <Grid item xs={ 12 } className={ classes.margin }>
              <Button
                variant='contained'
                size='medium'
                color='primary'
                className={ classes.buttonHire }
                onClick={ handleClick }
              >

                <FormattedMessage id='welcome.landing.hire' defaultMessage='Connect with a Recruiter' />

              </Button>
              <Button
                variant='outlined'
                size='medium'
                color='primary'
                className={ classes.buttonWork }
                style={ { display: 'none' } }
              >

<FormattedMessage id='welcome.landing.work' defaultMessage='Work' />

              </Button>
            </Grid>
          </Grid>
        </Grid>

      <Grid item xs={ 12 }>

      </Grid>
      <Grid item xs={ 12 }>
        <Clientlist />
      </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } sm={ 6 }>
            <MainTitle center>
              <Typography variant='h5' gutterBottom>
                <FormattedMessage
                  id='welcome.landing.about.title'
                  defaultMessage='About GitPay'
                />
              </Typography>
            </MainTitle>
            <MainList>
              <Typography align='center'>
                <FormattedMessage
                  id='welcome.landing.about.description'
                  defaultMessage='GitPay is a new marketplace platform and community of technical talent who work collaboratively to solve issues in GitHub and Bitbucket in exchange for experience and/or bounties. As the future of work becomes reality and distributed, agile teams become the norm, we are poised to support open source and proprietary projects with a ready-to-work community of talent. Visit gitpay.me to learn more.'
                />
              </Typography>

                <Button
                  variant='contained'
                  size='small'
                  color='secondary'
                  className={ classes.buttonHireSmall }
                  href={ 'https://gitpay.me' }
                  target={ '_blank' }
                >
                  <FormattedMessage id='welcome.landing.about.button' defaultMessage='Visit Gitpay' />
                </Button>

            </MainList>
          </Grid>
          <Grid item xs={ 12 } sm={ 6 }>
            <ResponsiveImage width='600' src={ screenImage } />
          </Grid>
        </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } sm={ 6 }>
            <MainTitle center>
              <Typography variant='h5' gutterBottom>
                <FormattedMessage
                  id='welcome.landing.recruitment.title'
                  defaultMessage='GitPay for recruitment'
                />
              </Typography>
            </MainTitle>
            <MainList>
              <Typography align='center'>
                <FormattedMessage
                  id='welcome.landing.recruitment.description'
                  defaultMessage='We know finding technical talent is competitive and challenging. How? Our co-founders are developers and have worked at major organizations including Dansk Bank and the NeuroLeadership Institute and have solved technical challenges for clients on five continents. We understand the unique requirements of technical recruitment and have built a team of recruiters backed by our platform who are able to identify and help place the best candidate for nearly any technical role. Connect with a recruiter to start a discussion.'
                />
              </Typography>

                <Button
                  variant='contained'
                  size='small'
                  color='secondary'
                  className={ classes.buttonHireSmall }
                  onClick={ handleClick }
                >
                  <FormattedMessage id='welcome.landing.hire' defaultMessage='Connect with a Recruiter' />
                </Button>

            </MainList>
          </Grid>
          <Grid item xs={ 12 } sm={ 6 }>
            <ResponsiveImage src={ profileImage } />
          </Grid>
        </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } sm={ 6 }>
            <MainTitle center>
              <Typography variant='h5' gutterBottom>
                <FormattedMessage
                  id='welcome.landing.issues.title'
                  defaultMessage='GitPay for immediate technical requirements'
                />
              </Typography>
            </MainTitle>
            <MainList>
              <Typography align='center'>
                <FormattedMessage
                  id='welcome.landing.issues.description'
                  defaultMessage='GitPay is designed to allow project and product managers to immediately access talent for pressing issues. Have a pressing issue you need solved? Visit gitpay.me to add tasks for bounties.'
                />
              </Typography>

                <Button
                  variant='contained'
                  size='small'
                  color='secondary'
                  className={ classes.buttonHireSmall }
                  href={ 'https://gitpay.me' }
                  target={ '_blank' }
                >
                  <FormattedMessage id='welcome.landing.services' defaultMessage='Join Gitpay' />
                </Button>

            </MainList>
          </Grid>
          <Grid item xs={ 12 } sm={ 6 }>
            <ResponsiveImage width='400' src={ deal } />
          </Grid>
        </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } justify>
            <TeamCard data={ recruiterTeam } />
          </Grid>
        </Grid>

          <Grid container spacing={ 3 }>
            <Grid item xs={ 12 } justify>
              <ContactRecruiterFormContainer />
            </Grid>
          </Grid>

      <Bottom />

  )
}

LandingPage.propTypes = {
  classes: PropTypes.object.isRequired,
}

export default withStyles(styles)(LandingPage)
<commit_msg>Text formatted to justified in recruitment page<commit_after>import React from 'react'
import PropTypes from 'prop-types'
import { FormattedMessage } from 'react-intl'
import { withStyles } from '@material-ui/core/styles'
import {
  Button,
  AppBar,
  Toolbar,
  Grid,
  Typography,
  Link
} from '@material-ui/core'
import peopleImage from '../../images/landingPage_People.png'
import logoGrey from '../../images/logo-complete-gray.png'
import screenImage from '../../images/gitpay-explore-task-screenshot.png'
import profileImage from '../../images/avatar-alexandre.png'
import Bottom from '../../components/bottom/bottom'
import Clientlist from './clientlist'
import TeamCard from '../Cards/TeamCard'
import ContactRecruiterFormContainer from '../../containers/contact-recruiter-form'

const deal = require('../../images/deal.png')

import {
  MainTitle,
  MainList,
  ResponsiveImage,
  Section
} from './components/CommonStyles'

// Landing Page for GitPay
// Total hours worked on this: ~12hours
// Still need to add in functionality for buttons
// Export Styles to seperate file to clean up code but left here for you to see for now

const recruiterTeam = [
  {
    name: 'Kevin Kautzman',
    description: 'Kevin is a proven front-end expert, digital marketer and award-winning writer with an MFA from the prestigious Michener Center for Writers at UT Austin.',
    image: require('../../images/teams/headhunter-team-member2.png'),
    linkedinUrl: 'https://www.linkedin.com/in/kevinwrites/'
  },
  {
    name: 'Alexandre Magno',
    description: 'Founder of Gitpay, and senior software engineer, sharing and helping developers to face the challenges of technical recruitment.',
    image: require('../../images/teams/headhunter-team-member1.png'),
    linkedinUrl: 'https://www.linkedin.com/in/alexandremagnoteleszimerer/'
  }
]

const styles = (theme) => ({
  signText: {
    fontWeight: 400,
    marginTop: 0,
    marginBottom: 3,
    fontSize: '1.25em',
    [theme.breakpoints.down('sm')]: {
      fontSize: '1em',
    },
  },
  buttonSignin: {
    textTransform: 'none',
    width: 120,
    borderRadius: 25,
    marginRight: 20,
    '&:hover': {
      color: 'white',
      background: '#7F83FF',
    },
    [theme.breakpoints.down('sm')]: {
      width: 90,
    },
  },
  buttonSignup: {
    borderRadius: 25,
    width: 130,
    background: '#7F83FF',
    color: 'white',
    textTransform: 'none',
    '&:hover': {
      background: '#4A4EDD',
    },
    [theme.breakpoints.down('sm')]: {
      width: 90,
    },
  },
  buttonHire: {
    textTransform: 'none',
    background: '#4A4EDD',
    height: 50,
    '&:hover': {
      background: '#7F83FF',
    },
  },
  buttonHireSmall: {
    textTransform: 'none',
    background: '#4A4EDD',
    '&:hover': {
      background: '#7F83FF',
    },
  },
  buttonWork: {
    border: '2px solid',
    textTransform: 'none',
    color: '#4A4EDD',
    borderColor: '#4A4EDD',
    marginRight: 20,
    width: 150,
    height: 50,
    '&:hover': {
      background: '#7F83FF',
      border: '2px solid',
      color: 'white',
    },
    [theme.breakpoints.down('sm')]: {
      marginRight: 0,
    },
  },
  root: {
    flexGrow: 1,
    marginLeft: 50,
    marginRight: 70,
    marginTop: 50,
    fontFamily: 'Arial',
    fontWeight: '300',
    color: '#2F2D2D',
    lineHeight: '1.5em',
    [theme.breakpoints.down('sm')]: {
      display: 'flex',
      margin: 'auto',
    },
  },
  grow: {
    flexGrow: 1,
  },
  logoImage: {
    width: 170,
    [theme.breakpoints.down('sm')]: {
      width: 120,
    },
  },
  topBarContainer: {
    marginTop: 40,
    marginLeft: 70,
    marginRight: 70,
  },
  textContainer: {
    marginTop: 60,
    marginLeft: 30,
    [theme.breakpoints.down('sm')]: {
      marginLeft: 10,
      marginRight: 10
    },
  },
  textSize: {
    fontSize: '1.5em',
    marginTop: 0,
    marginBottom: 0,
  },
  center: {
    textAlign: 'center',
  },
  justify: {
    textAlign: 'justify',
  },
  bottomImage: {
    backgroundRepeat: 'no-repeat',
    position: 'absolute',
    width: '100vw',
    [theme.breakpoints.down('sm')]: {
      bottom: 0,
    }
  },
  header: {
    fontSize: '2.5em',
    fontWeight: 200,
    marginTop: 70,
    marginBottom: 36,
    [theme.breakpoints.down('sm')]: {
      lineHeight: 1.5,
      fontSize: '1.3em',
    }
  },
  paragraph: {
    fontSize: '1.2em',
    lineHeight: 1.5,
    [theme.breakpoints.down('sm')]: {
      lineHeight: 1.5,
      fontSize: '1em',
      margin: '0 auto',
      width: 270
    }
  },
  margin: {
    marginTop: 60,
    marginBottom: 100,
    marginLeft: 30,
    [theme.breakpoints.down('sm')]: {
      marginLeft: 0,
    },
  },
})

function LandingPage (props) {
  const { classes } = props
  const ref = React.createRef()

  const handleClick = (event) => {
    event.preventDefault()
    ref.current.scrollIntoView({
      behavior: 'smooth',
      block: 'start',
    })
  }

  return (

        <Grid container className={ classes.center } spacing={ 8 }>
          <Grid item xs={ 12 }>
            <AppBar
              position='static'
              style={ { background: 'transparent', boxShadow: 'none' } }
            >
              <Toolbar>
                <Link href='https://gitpay.me/#/recruitment'>

                </Link>

                <Button
                  className={ classes.buttonSignin }
                  onClick={ handleClick }
                >

<FormattedMessage id='welcome.landing.signin' defaultMessage='Contact us' />

                </Button>
                <Button href={ 'https://gitpay.me' } target='_blank' className={ classes.buttonSignup }>

<FormattedMessage id='welcome.landing.signup' defaultMessage='GitPay.me' />

                </Button>
              </Toolbar>
            </AppBar>
            <Grid item xs={ 12 } className={ classes.textContainer }>

                <FormattedMessage id='welcome.landing.title' defaultMessage='A Better Way to Recruit Technical Talent' />

<FormattedMessage id='welcome.landing.description' defaultMessage='GitPay is a platform by developers, for developers that connects global talent to real-world technical challenges on GitHub and Bitbucket. This allows our international recruitment team to identify the best, proven talent in real time for roles at some of the world’s most exciting companies, like yours. Want our help filling a position?' />

            </Grid>
            <Grid item xs={ 12 } className={ classes.margin }>
              <Button
                variant='contained'
                size='medium'
                color='primary'
                className={ classes.buttonHire }
                onClick={ handleClick }
              >

                <FormattedMessage id='welcome.landing.hire' defaultMessage='Connect with a Recruiter' />

              </Button>
              <Button
                variant='outlined'
                size='medium'
                color='primary'
                className={ classes.buttonWork }
                style={ { display: 'none' } }
              >

<FormattedMessage id='welcome.landing.work' defaultMessage='Work' />

              </Button>
            </Grid>
          </Grid>
        </Grid>

      <Grid item xs={ 12 }>

      </Grid>
      <Grid item xs={ 12 }>
        <Clientlist />
      </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } sm={ 6 }>
            <MainTitle center>
              <Typography variant='h5' gutterBottom>
                <FormattedMessage
                  id='welcome.landing.about.title'
                  defaultMessage='About GitPay'
                />
              </Typography>
            </MainTitle>
            <MainList>
              <Typography align='justify'>
                <FormattedMessage
                  id='welcome.landing.about.description'
                  defaultMessage='GitPay is a new marketplace platform and community of technical talent who work collaboratively to solve issues in GitHub and Bitbucket in exchange for experience and/or bounties. As the future of work becomes reality and distributed, agile teams become the norm, we are poised to support open source and proprietary projects with a ready-to-work community of talent. Visit gitpay.me to learn more.'
                />
              </Typography>

                <Button
                  variant='contained'
                  size='small'
                  color='secondary'
                  className={ classes.buttonHireSmall }
                  href={ 'https://gitpay.me' }
                  target={ '_blank' }
                >
                  <FormattedMessage id='welcome.landing.about.button' defaultMessage='Visit Gitpay' />
                </Button>

            </MainList>
          </Grid>
          <Grid item xs={ 12 } sm={ 6 }>
            <ResponsiveImage width='600' src={ screenImage } />
          </Grid>
        </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } sm={ 6 }>
            <MainTitle center>
              <Typography variant='h5' gutterBottom>
                <FormattedMessage
                  id='welcome.landing.recruitment.title'
                  defaultMessage='GitPay for recruitment'
                />
              </Typography>
            </MainTitle>
            <MainList>
              <Typography align='justify'>
                <FormattedMessage
                  id='welcome.landing.recruitment.description'
                  defaultMessage='We know finding technical talent is competitive and challenging. How? Our co-founders are developers and have worked at major organizations including Dansk Bank and the NeuroLeadership Institute and have solved technical challenges for clients on five continents. We understand the unique requirements of technical recruitment and have built a team of recruiters backed by our platform who are able to identify and help place the best candidate for nearly any technical role. Connect with a recruiter to start a discussion.'
                />
              </Typography>

                <Button
                  variant='contained'
                  size='small'
                  color='secondary'
                  className={ classes.buttonHireSmall }
                  onClick={ handleClick }
                >
                  <FormattedMessage id='welcome.landing.hire' defaultMessage='Connect with a Recruiter' />
                </Button>

            </MainList>
          </Grid>
          <Grid item xs={ 12 } sm={ 6 }>
            <ResponsiveImage src={ profileImage } />
          </Grid>
        </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } sm={ 6 }>
            <MainTitle center>
              <Typography variant='h5' gutterBottom>
                <FormattedMessage
                  id='welcome.landing.issues.title'
                  defaultMessage='GitPay for immediate technical requirements'
                />
              </Typography>
            </MainTitle>
            <MainList>
              <Typography align='justify'>
                <FormattedMessage
                  id='welcome.landing.issues.description'
                  defaultMessage='GitPay is designed to allow project and product managers to immediately access talent for pressing issues. Have a pressing issue you need solved? Visit gitpay.me to add tasks for bounties.'
                />
              </Typography>

                <Button
                  variant='contained'
                  size='small'
                  color='secondary'
                  className={ classes.buttonHireSmall }
                  href={ 'https://gitpay.me' }
                  target={ '_blank' }
                >
                  <FormattedMessage id='welcome.landing.services' defaultMessage='Join Gitpay' />
                </Button>

            </MainList>
          </Grid>
          <Grid item xs={ 12 } sm={ 6 }>
            <ResponsiveImage width='400' src={ deal } />
          </Grid>
        </Grid>

        <Grid container spacing={ 3 }>
          <Grid item xs={ 12 } justify>
            <TeamCard data={ recruiterTeam } />
          </Grid>
        </Grid>

          <Grid container spacing={ 3 }>
            <Grid item xs={ 12 } justify>
              <ContactRecruiterFormContainer />
            </Grid>
          </Grid>

      <Bottom />

  )
}

LandingPage.propTypes = {
  classes: PropTypes.object.isRequired,
}

export default withStyles(styles)(LandingPage)
<|endoftext|>


<commit_before>
var AuthorityUtil = {

    checkAuthority(page, now_user, content){

        if(!now_user){return false}

        switch(page){
            case "PostSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                    default:
                        return true;
                }
            case "PostSectionEdit":
                switch(now_user.role){
                    case "writer":
                        if(now_user.id != content.user_id) {
                            history.replaceState('', '', '/notee');
                            location.reload();
                        }
                        return;
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    case "suspended":
                        history.replaceState('', '', '/notee');
                        location.reload();
                    default:
                        return;
                }
            case "CategorySection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                    default:
                        return;
                }
            case "CategorySectionEdit":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    case "suspended":
                        history.replaceState('', '', '/notee');
                        location.reload();
                        return;
                    default:
                        return;
                }
            case "ImageSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    default:
                        return;
                }
            case "CommentSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    default:
                        return;
                }
            case "UserSection":
                switch(now_user.role){
                    case "writer":
                    case "editor":
                        history.replaceState('', '', '/notee/');
                        location.reload();
                        return;
                    default:
                        return;
                }
            case "UserSectionEdit":
                switch(now_user.role){
                    case "writer":
                    case "editor":
                    case "suspended":
                        history.replaceState('', '', '/notee/');
                        location.reload();
                        return;
                    case "root":
                        if(content != null){
                            history.replaceState('', '', '/notee/users');
                            location.reload();
                            return;
                        }
                        return;
                    default:
                        return;
                }
            case "MypageSection":
                switch(now_user.role){
                    default:
                        return;
                }
            case "MypageSectionEdit":
                switch(now_user.role){
                    case "root":
                    case "suspended":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    default:
                        return;
                }
            case "MypageSectionEditPassword":
                switch(now_user.role){
                    case "root":
                    case "suspended":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    default:
                        return;
                }
            case "TrashSection":
                switch(now_user.role){
                    case "root":
                    case "suspended":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        return;
                    default:
                        return;
                }
        }
    }

}

module.exports = AuthorityUtil;
<commit_msg>delete Suspended role<commit_after>
var AuthorityUtil = {

    checkAuthority(page, now_user, content){

        // TODO: check is_deleted? and destroy session

        if(!now_user){return false}

        switch(page){
            case "PostSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "PostSectionEdit":
                switch(now_user.role){
                    case "writer":
                        if(now_user.id != content.user_id) {
                            history.replaceState('', '', '/notee');
                            location.reload();
                        }
                        break;
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "CategorySection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                    default:
                        break;
                }
            case "CategorySectionEdit":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "ImageSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "CommentSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "UserSection":
                switch(now_user.role){
                    case "writer":
                    case "editor":
                        history.replaceState('', '', '/notee/');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "UserSectionEdit":
                switch(now_user.role){
                    case "writer":
                    case "editor":
                        history.replaceState('', '', '/notee/');
                        location.reload();
                        break;
                    case "root":
                        if(content != null){
                            history.replaceState('', '', '/notee/users');
                            location.reload();
                            break;
                        }
                        break;
                    default:
                        break;
                }
            case "MypageSection":
                switch(now_user.role){
                    default:
                        break;
                }
            case "MypageSectionEdit":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "MypageSectionEditPassword":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
            case "TrashSection":
                switch(now_user.role){
                    case "root":
                        history.replaceState('', '', '/notee/users');
                        location.reload();
                        break;
                    default:
                        break;
                }
        }
    }

}

module.exports = AuthorityUtil;
<|endoftext|>


<commit_before>const { DateTime } = require("luxon");
const pluginRss = require("@11ty/eleventy-plugin-rss");
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");

module.exports = function(eleventyConfig) {
  eleventyConfig.addPlugin(pluginRss);
  eleventyConfig.addPlugin(pluginSyntaxHighlight);
  eleventyConfig.setDataDeepMerge(true);

  eleventyConfig.addLayoutAlias("post", "layouts/post.njk");

  eleventyConfig.addFilter("readableDate", dateObj => {
    return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat("dd LLL yyyy");
  });

  // https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
  eleventyConfig.addFilter('htmlDateString', (dateObj) => {
    return DateTime.fromJSDate(dateObj).toFormat('yyyy-LL-dd');
  });

  // Get the first `n` elements of a collection.
  eleventyConfig.addFilter("head", (array, n) => {
    if( n < 0 ) {
      return array.slice(n);
    }

    return array.slice(0, n);
  });

  eleventyConfig.addCollection("tagList", require("./_11ty/getTagList"));

  eleventyConfig.addPassthroughCopy("img");
  eleventyConfig.addPassthroughCopy("css");

  /* Markdown Plugins */
  let markdownIt = require("markdown-it");
  let markdownItAnchor = require("markdown-it-anchor");
  let options = {
    html: true,
    breaks: true,
    linkify: true
  };
  let opts = {
    permalink: true,
    permalinkClass: "direct-link",
    permalinkSymbol: "#"
  };

  eleventyConfig.setLibrary("md", markdownIt(options)
    .use(markdownItAnchor, opts)
  );

  return {
    templateFormats: [
      "md",
      "njk",
      "html",
      "liquid"
    ],

    // If your site lives in a different subdirectory, change this.
    // Leading or trailing slashes are all normalized away, so don’t worry about it.
    // If you don’t have a subdirectory, use "" or "/" (they do the same thing)
    // This is only used for URLs (it does not affect your file structure)
    pathPrefix: "/",

    markdownTemplateEngine: "liquid",
    htmlTemplateEngine: "njk",
    dataTemplateEngine: "njk",
    passthroughFileCopy: true,
    dir: {
      input: ".",
      includes: "_includes",
      data: "_data",
      output: "_site"
    }
  };
};
<commit_msg>xml date fix<commit_after>const { DateTime } = require("luxon");
const pluginRss = require("@11ty/eleventy-plugin-rss");
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");

module.exports = function(eleventyConfig) {
  eleventyConfig.addPlugin(pluginRss);
  eleventyConfig.addPlugin(pluginSyntaxHighlight);
  eleventyConfig.setDataDeepMerge(true);

  eleventyConfig.addLayoutAlias("post", "layouts/post.njk");

  eleventyConfig.addFilter("readableDate", dateObj => {
    return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat("dd LLL yyyy");
  });

  // https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
  eleventyConfig.addFilter('htmlDateString', (dateObj) => {
    return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd');
  });

  // Get the first `n` elements of a collection.
  eleventyConfig.addFilter("head", (array, n) => {
    if( n < 0 ) {
      return array.slice(n);
    }

    return array.slice(0, n);
  });

  eleventyConfig.addCollection("tagList", require("./_11ty/getTagList"));

  eleventyConfig.addPassthroughCopy("img");
  eleventyConfig.addPassthroughCopy("css");

  /* Markdown Plugins */
  let markdownIt = require("markdown-it");
  let markdownItAnchor = require("markdown-it-anchor");
  let options = {
    html: true,
    breaks: true,
    linkify: true
  };
  let opts = {
    permalink: true,
    permalinkClass: "direct-link",
    permalinkSymbol: "#"
  };

  eleventyConfig.setLibrary("md", markdownIt(options)
    .use(markdownItAnchor, opts)
  );

  return {
    templateFormats: [
      "md",
      "njk",
      "html",
      "liquid"
    ],

    // If your site lives in a different subdirectory, change this.
    // Leading or trailing slashes are all normalized away, so don’t worry about it.
    // If you don’t have a subdirectory, use "" or "/" (they do the same thing)
    // This is only used for URLs (it does not affect your file structure)
    pathPrefix: "/",

    markdownTemplateEngine: "liquid",
    htmlTemplateEngine: "njk",
    dataTemplateEngine: "njk",
    passthroughFileCopy: true,
    dir: {
      input: ".",
      includes: "_includes",
      data: "_data",
      output: "_site"
    }
  };
};
<|endoftext|>


<commit_before>module.exports = {
  extends: ['paazmaya'],
  rules: {
    'no-console': 0,
    'no-process-exit': 0
  }
};
<commit_msg>Use latest version of ES<commit_after>module.exports = {
  extends: ['paazmaya'],
  parserOptions: {
    ecmaVersion: 'latest'
  },
  rules: {
    'no-console': 0,
    'no-process-exit': 0
  }
};
<|endoftext|>


<commit_before>module.exports = {
  env: {
    es2021: true,
    es6: true,
    node: true,
  },
  extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
  ],
  overrides: [
    {
      env: {
        jest: true,
      },
      files: ["src/**/*.test.ts"],
      rules: {
        "max-lines": ["error", 510],
        "max-lines-per-function": ["error", 495],
        "max-statements": ["error", 24],
      },
    },
    {
      files: ["dist/cli.js", "src/cli/index.ts"],
      rules: {
        "no-process-exit": "off",
        "node/shebang": "off",
      },
    },
    {
      files: ["**/*.md/*.js"],
      rules: {
        "@typescript-eslint/no-var-requires": "off",
        "dot-location": "off",
        "no-undef": "off",
      },
    },
  ],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    ecmaVersion: 12,
    sourceType: "module",
  },
  plugins: ["@babel", "@typescript-eslint", "import", "jest", "node", "promise", "unicorn"],
  rules: {
    "accessor-pairs": "error",
    "array-bracket-newline": "error",
    "array-bracket-spacing": "error",
    "array-callback-return": "error",
    "array-element-newline": "off",
    "arrow-body-style": "error",
    "arrow-parens": "error",
    "arrow-spacing": "error",
    "block-scoped-var": "error",
    "block-spacing": "error",
    "brace-style": "error",
    "camelcase": "error",
    "capitalized-comments": "error",
    "class-methods-use-this": "error",
    "comma-dangle": ["error", "always-multiline"],
    "comma-spacing": "error",
    "comma-style": "error",
    "complexity": "error",
    "computed-property-spacing": "error",
    "consistent-return": "error",
    "consistent-this": "error",
    "curly": "error",
    "default-case": "error",
    "default-case-last": "error",
    "default-param-last": "error",
    "dot-location": "error",
    "dot-notation": "error",
    "eol-last": "error",
    "eqeqeq": "error",
    "func-call-spacing": "error",
    "func-name-matching": "error",
    "func-names": "error",
    "func-style": "error",
    "function-call-argument-newline": ["error", "never"],
    "function-paren-newline": "error",
    "generator-star-spacing": "error",
    "grouped-accessor-pairs": "error",
    "guard-for-in": "error",
    "id-denylist": "error",
    "id-length": "error",
    "id-match": "error",
    "implicit-arrow-linebreak": "error",
    "import/extensions": [
      "error",
      "never",
      {
        pattern: {
          json: "always",
        },
      },
    ],
    "import/no-unresolved": "off",
    "indent": [
      "error",
      2,
    ],
    "init-declarations": "error",
    "jsx-quotes": "error",
    "key-spacing": "error",
    "keyword-spacing": "error",
    "line-comment-position": "error",
    "linebreak-style": "error",
    "lines-around-comment": "error",
    "lines-between-class-members": "error",
    "max-classes-per-file": "error",
    "max-depth": "error",
    "max-len": ["error", 115],
    "max-lines": ["error", 395],
    "max-lines-per-function": ["error", 181],
    "max-nested-callbacks": "error",
    "max-params": "error",
    "max-statements": ["error", 47],
    "max-statements-per-line": "error",
    "multiline-comment-style": "error",
    "multiline-ternary": "error",
    "new-cap": "error",
    "new-parens": "error",
    "newline-per-chained-call": "error",
    "no-alert": "error",
    "no-array-constructor": "error",
    "no-await-in-loop": "error",
    "no-bitwise": "error",
    "no-caller": "error",
    "no-confusing-arrow": "error",
    "no-console": "error",
    "no-constructor-return": "error",
    "no-continue": "error",
    "no-div-regex": "error",
    "no-duplicate-imports": "error",
    "no-else-return": "error",
    "no-empty-function": "error",
    "no-eq-null": "error",
    "no-eval": "error",
    "no-extend-native": "error",
    "no-extra-bind": "error",
    "no-extra-label": "error",
    "no-extra-parens": "error",
    "no-floating-decimal": "error",
    "no-implicit-coercion": "error",
    "no-implicit-globals": "error",
    "no-implied-eval": "error",
    "no-inline-comments": "error",
    "no-invalid-this": "error",
    "no-iterator": "error",
    "no-label-var": "error",
    "no-labels": "error",
    "no-lone-blocks": "error",
    "no-lonely-if": "error",
    "no-loop-func": "error",
    "no-loss-of-precision": "error",
    "no-magic-numbers": "off",
    "no-mixed-operators": "error",
    "no-multi-assign": "error",
    "no-multi-spaces": "error",
    "no-multi-str": "error",
    "no-multiple-empty-lines": "error",
    "no-negated-condition": "error",
    "no-nested-ternary": "error",
    "no-new": "error",
    "no-new-func": "error",
    "no-new-object": "error",
    "no-new-wrappers": "error",
    "no-nonoctal-decimal-escape": "error",
    "no-octal-escape": "error",
    "no-param-reassign": "error",
    "no-plusplus": "error",
    "no-process-env": "error",
    "no-process-exit": "error",
    "no-promise-executor-return": "error",
    "no-proto": "error",
    "no-restricted-exports": "error",
    "no-restricted-globals": "error",
    "no-restricted-imports": "error",
    "no-restricted-properties": "error",
    "no-restricted-syntax": "error",
    "no-return-assign": "error",
    "no-return-await": "error",
    "no-script-url": "error",
    "no-self-compare": "error",
    "no-sequences": "error",
    "no-shadow": "error",
    "no-tabs": "error",
    "no-template-curly-in-string": "error",
    "no-ternary": "error",
    "no-throw-literal": "error",
    "no-trailing-spaces": "error",
    "no-undef": "error",
    "no-undef-init": "error",
    "no-undefined": "error",
    "no-underscore-dangle": "error",
    "no-unmodified-loop-condition": "error",
    "no-unneeded-ternary": "error",
    "no-unreachable-loop": "error",
    "no-unsafe-optional-chaining": "error",
    "no-unused-expressions": "error",
    "no-unused-vars": "error",
    "no-use-before-define": "error",
    "no-useless-backreference": "error",
    "no-useless-call": "error",
    "no-useless-computed-key": "error",
    "no-useless-concat": "error",
    "no-useless-constructor": "error",
    "no-useless-rename": "error",
    "no-useless-return": "error",
    "no-var": "error",
    "no-void": "error",
    "no-warning-comments": "error",
    "no-whitespace-before-property": "error",
    "node/no-unpublished-require": "error",
    "node/no-unsupported-features/es-syntax": "off",
    "nonblock-statement-body-position": "error",
    "object-curly-newline": "error",
    "object-curly-spacing": "off",
    "object-property-newline": "error",
    "object-shorthand": "error",
    "one-var": "off",
    "one-var-declaration-per-line": "error",
    "operator-assignment": "error",
    "operator-linebreak": "error",
    "padded-blocks": "off",
    "padding-line-between-statements": "error",
    "prefer-arrow-callback": "error",
    "prefer-const": "error",
    "prefer-destructuring": "error",
    "prefer-exponentiation-operator": "error",
    "prefer-named-capture-group": "error",
    "prefer-numeric-literals": "error",
    "prefer-object-spread": "error",
    "prefer-promise-reject-errors": "error",
    "prefer-regex-literals": "error",
    "prefer-rest-params": "error",
    "prefer-spread": "error",
    "prefer-template": "error",
    "quote-props": [
      "error",
      "consistent-as-needed",
    ],
    "quotes": "error",
    "radix": "error",
    "require-atomic-updates": "error",
    "require-await": "error",
    "require-unicode-regexp": "error",
    "rest-spread-spacing": "error",
    "semi": "error",
    "semi-spacing": "error",
    "semi-style": "error",
    "sort-imports": "error",
    "sort-keys": "error",
    "sort-vars": "error",
    "space-before-blocks": "error",
    "space-before-function-paren": "error",
    "space-in-parens": "error",
    "space-infix-ops": "error",
    "space-unary-ops": "error",
    "spaced-comment": "error",
    "strict": "error",
    "switch-colon-spacing": "error",
    "symbol-description": "error",
    "template-curly-spacing": "error",
    "template-tag-spacing": "error",
    "unicode-bom": "error",
    "vars-on-top": "error",
    "wrap-iife": "error",
    "wrap-regex": "error",
    "yield-star-spacing": "error",
    "yoda": "error",
  },
};
<commit_msg>style(eslintrc): set max-statements rule to 27<commit_after>module.exports = {
  env: {
    es2021: true,
    es6: true,
    node: true,
  },
  extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
  ],
  overrides: [
    {
      env: {
        jest: true,
      },
      files: ["src/**/*.test.ts"],
      rules: {
        "max-lines": ["error", 510],
        "max-lines-per-function": ["error", 495],
        "max-statements": ["error", 27],
      },
    },
    {
      files: ["dist/cli.js", "src/cli/index.ts"],
      rules: {
        "no-process-exit": "off",
        "node/shebang": "off",
      },
    },
    {
      files: ["**/*.md/*.js"],
      rules: {
        "@typescript-eslint/no-var-requires": "off",
        "dot-location": "off",
        "no-undef": "off",
      },
    },
  ],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    ecmaVersion: 12,
    sourceType: "module",
  },
  plugins: ["@babel", "@typescript-eslint", "import", "jest", "node", "promise", "unicorn"],
  rules: {
    "accessor-pairs": "error",
    "array-bracket-newline": "error",
    "array-bracket-spacing": "error",
    "array-callback-return": "error",
    "array-element-newline": "off",
    "arrow-body-style": "error",
    "arrow-parens": "error",
    "arrow-spacing": "error",
    "block-scoped-var": "error",
    "block-spacing": "error",
    "brace-style": "error",
    "camelcase": "error",
    "capitalized-comments": "error",
    "class-methods-use-this": "error",
    "comma-dangle": ["error", "always-multiline"],
    "comma-spacing": "error",
    "comma-style": "error",
    "complexity": "error",
    "computed-property-spacing": "error",
    "consistent-return": "error",
    "consistent-this": "error",
    "curly": "error",
    "default-case": "error",
    "default-case-last": "error",
    "default-param-last": "error",
    "dot-location": "error",
    "dot-notation": "error",
    "eol-last": "error",
    "eqeqeq": "error",
    "func-call-spacing": "error",
    "func-name-matching": "error",
    "func-names": "error",
    "func-style": "error",
    "function-call-argument-newline": ["error", "never"],
    "function-paren-newline": "error",
    "generator-star-spacing": "error",
    "grouped-accessor-pairs": "error",
    "guard-for-in": "error",
    "id-denylist": "error",
    "id-length": "error",
    "id-match": "error",
    "implicit-arrow-linebreak": "error",
    "import/extensions": [
      "error",
      "never",
      {
        pattern: {
          json: "always",
        },
      },
    ],
    "import/no-unresolved": "off",
    "indent": [
      "error",
      2,
    ],
    "init-declarations": "error",
    "jsx-quotes": "error",
    "key-spacing": "error",
    "keyword-spacing": "error",
    "line-comment-position": "error",
    "linebreak-style": "error",
    "lines-around-comment": "error",
    "lines-between-class-members": "error",
    "max-classes-per-file": "error",
    "max-depth": "error",
    "max-len": ["error", 115],
    "max-lines": ["error", 395],
    "max-lines-per-function": ["error", 181],
    "max-nested-callbacks": "error",
    "max-params": "error",
    "max-statements": ["error", 47],
    "max-statements-per-line": "error",
    "multiline-comment-style": "error",
    "multiline-ternary": "error",
    "new-cap": "error",
    "new-parens": "error",
    "newline-per-chained-call": "error",
    "no-alert": "error",
    "no-array-constructor": "error",
    "no-await-in-loop": "error",
    "no-bitwise": "error",
    "no-caller": "error",
    "no-confusing-arrow": "error",
    "no-console": "error",
    "no-constructor-return": "error",
    "no-continue": "error",
    "no-div-regex": "error",
    "no-duplicate-imports": "error",
    "no-else-return": "error",
    "no-empty-function": "error",
    "no-eq-null": "error",
    "no-eval": "error",
    "no-extend-native": "error",
    "no-extra-bind": "error",
    "no-extra-label": "error",
    "no-extra-parens": "error",
    "no-floating-decimal": "error",
    "no-implicit-coercion": "error",
    "no-implicit-globals": "error",
    "no-implied-eval": "error",
    "no-inline-comments": "error",
    "no-invalid-this": "error",
    "no-iterator": "error",
    "no-label-var": "error",
    "no-labels": "error",
    "no-lone-blocks": "error",
    "no-lonely-if": "error",
    "no-loop-func": "error",
    "no-loss-of-precision": "error",
    "no-magic-numbers": "off",
    "no-mixed-operators": "error",
    "no-multi-assign": "error",
    "no-multi-spaces": "error",
    "no-multi-str": "error",
    "no-multiple-empty-lines": "error",
    "no-negated-condition": "error",
    "no-nested-ternary": "error",
    "no-new": "error",
    "no-new-func": "error",
    "no-new-object": "error",
    "no-new-wrappers": "error",
    "no-nonoctal-decimal-escape": "error",
    "no-octal-escape": "error",
    "no-param-reassign": "error",
    "no-plusplus": "error",
    "no-process-env": "error",
    "no-process-exit": "error",
    "no-promise-executor-return": "error",
    "no-proto": "error",
    "no-restricted-exports": "error",
    "no-restricted-globals": "error",
    "no-restricted-imports": "error",
    "no-restricted-properties": "error",
    "no-restricted-syntax": "error",
    "no-return-assign": "error",
    "no-return-await": "error",
    "no-script-url": "error",
    "no-self-compare": "error",
    "no-sequences": "error",
    "no-shadow": "error",
    "no-tabs": "error",
    "no-template-curly-in-string": "error",
    "no-ternary": "error",
    "no-throw-literal": "error",
    "no-trailing-spaces": "error",
    "no-undef": "error",
    "no-undef-init": "error",
    "no-undefined": "error",
    "no-underscore-dangle": "error",
    "no-unmodified-loop-condition": "error",
    "no-unneeded-ternary": "error",
    "no-unreachable-loop": "error",
    "no-unsafe-optional-chaining": "error",
    "no-unused-expressions": "error",
    "no-unused-vars": "error",
    "no-use-before-define": "error",
    "no-useless-backreference": "error",
    "no-useless-call": "error",
    "no-useless-computed-key": "error",
    "no-useless-concat": "error",
    "no-useless-constructor": "error",
    "no-useless-rename": "error",
    "no-useless-return": "error",
    "no-var": "error",
    "no-void": "error",
    "no-warning-comments": "error",
    "no-whitespace-before-property": "error",
    "node/no-unpublished-require": "error",
    "node/no-unsupported-features/es-syntax": "off",
    "nonblock-statement-body-position": "error",
    "object-curly-newline": "error",
    "object-curly-spacing": "off",
    "object-property-newline": "error",
    "object-shorthand": "error",
    "one-var": "off",
    "one-var-declaration-per-line": "error",
    "operator-assignment": "error",
    "operator-linebreak": "error",
    "padded-blocks": "off",
    "padding-line-between-statements": "error",
    "prefer-arrow-callback": "error",
    "prefer-const": "error",
    "prefer-destructuring": "error",
    "prefer-exponentiation-operator": "error",
    "prefer-named-capture-group": "error",
    "prefer-numeric-literals": "error",
    "prefer-object-spread": "error",
    "prefer-promise-reject-errors": "error",
    "prefer-regex-literals": "error",
    "prefer-rest-params": "error",
    "prefer-spread": "error",
    "prefer-template": "error",
    "quote-props": [
      "error",
      "consistent-as-needed",
    ],
    "quotes": "error",
    "radix": "error",
    "require-atomic-updates": "error",
    "require-await": "error",
    "require-unicode-regexp": "error",
    "rest-spread-spacing": "error",
    "semi": "error",
    "semi-spacing": "error",
    "semi-style": "error",
    "sort-imports": "error",
    "sort-keys": "error",
    "sort-vars": "error",
    "space-before-blocks": "error",
    "space-before-function-paren": "error",
    "space-in-parens": "error",
    "space-infix-ops": "error",
    "space-unary-ops": "error",
    "spaced-comment": "error",
    "strict": "error",
    "switch-colon-spacing": "error",
    "symbol-description": "error",
    "template-curly-spacing": "error",
    "template-tag-spacing": "error",
    "unicode-bom": "error",
    "vars-on-top": "error",
    "wrap-iife": "error",
    "wrap-regex": "error",
    "yield-star-spacing": "error",
    "yoda": "error",
  },
};
<|endoftext|>


<commit_before>var path = require("path");
var base = path.dirname(require.resolve("builder-victory-component/package.json"));

module.exports = {
  extends: path.join(base, "config/eslint/.eslintrc-source")
};
<commit_msg>update eslintrc.js to work with victory-multi<commit_after>const path = require("path");
let base;
try {
  // Normal resolution
  base = path.dirname(require.resolve("builder-victory-component/package.json"));
} catch (err) {
  // Dev-only resolution
  base = path.dirname(require.resolve("../builder-victory-component/package.json"));
}

module.exports = {
  extends: path.join(base, "config/eslint/.eslintrc-source")
};
<|endoftext|>


<commit_before>module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 2018,
    sourceType: 'module'
  },
  plugins: [
    'ember'
  ],
  extends: [
    'eslint:recommended',
    'plugin:ember/recommended'
  ],
  env: {
    browser: true
  },
  rules: {
  },
  overrides: [
    // node files
    {
      files: [
        '.eslintrc.js',
        '.template-lintrc.js',
        'ember-cli-build.js',
        'testem.js',
        'blueprints/*/index.js',
        'config/**/*.js',
        'lib/*/index.js',
        'server/**/*.js'
      ],
      parserOptions: {
        sourceType: 'script',
        ecmaVersion: 2015
      },
      env: {
        browser: false,
        node: true
      },
      plugins: ['node'],
      rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
        // add your custom rules and overrides for node files here

        // this can be removed once the following is fixed
        // https://github.com/mysticatea/eslint-plugin-node/issues/77
        'node/no-unpublished-require': 'off'
      })
    }
  ]
};
<commit_msg>.eslintrc updated<commit_after>module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 2015,
    sourceType: 'module'
  },
  plugins: [
    'ember'
  ],
  extends: [
    'eslint:recommended',
    'plugin:ember/recommended'
  ],
  env: {
    browser: false,
    node: true
  },
  rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
    // add your custom rules and overrides for node files here

    // this can be removed once the following is fixed
    // https://github.com/mysticatea/eslint-plugin-node/issues/77
    'node/no-unpublished-require': 'off'
  })
};
<|endoftext|>