forked from edulan/react-virtual-kanban
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Eduardo Lanchares
committed
Dec 5, 2016
1 parent
be4f4ea
commit fa51b06
Showing
28 changed files
with
1,536 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
module.exports = { | ||
// Don't try to find .babelrc because we want to force this configuration. | ||
babelrc: false, | ||
// This is a feature of `babel-loader` for webpack (not Babel itself). | ||
// It enables caching results in OS temporary directory for faster rebuilds. | ||
cacheDirectory: true, | ||
presets: [ | ||
// Latest stable ECMAScript features | ||
require.resolve('babel-preset-latest'), | ||
// JSX, Flow | ||
require.resolve('babel-preset-react') | ||
], | ||
plugins: [ | ||
// class { handleClick = () => { } } | ||
require.resolve('babel-plugin-transform-class-properties'), | ||
// { ...todo, completed: true } | ||
require.resolve('babel-plugin-transform-object-rest-spread'), | ||
// function* () { yield 42; yield 43; } | ||
[require.resolve('babel-plugin-transform-regenerator'), { | ||
// Async functions are converted to generators by babel-preset-latest | ||
async: false | ||
}], | ||
// Polyfills the runtime needed for async/await and generators | ||
[require.resolve('babel-plugin-transform-runtime'), { | ||
helpers: false, | ||
polyfill: false, | ||
regenerator: true | ||
}] | ||
] | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
module.exports = { | ||
// Don't try to find .babelrc because we want to force this configuration. | ||
babelrc: false, | ||
presets: [ | ||
// Latest stable ECMAScript features | ||
require.resolve('babel-preset-latest'), | ||
// JSX, Flow | ||
require.resolve('babel-preset-react') | ||
], | ||
plugins: [ | ||
// class { handleClick = () => { } } | ||
require.resolve('babel-plugin-transform-class-properties'), | ||
// { ...todo, completed: true } | ||
require.resolve('babel-plugin-transform-object-rest-spread'), | ||
// function* () { yield 42; yield 43; } | ||
[require.resolve('babel-plugin-transform-regenerator'), { | ||
// Async functions are converted to generators by babel-preset-latest | ||
async: false | ||
}], | ||
// Polyfills the runtime needed for async/await and generators | ||
[require.resolve('babel-plugin-transform-runtime'), { | ||
helpers: false, | ||
polyfill: false, | ||
regenerator: true | ||
}], | ||
// Optimization: hoist JSX that never changes out of render() | ||
require.resolve('babel-plugin-transform-react-constant-elements') | ||
], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be | ||
// injected into the application via DefinePlugin in Webpack configuration. | ||
|
||
var REACT_APP = /^REACT_APP_/i; | ||
var NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'development'); | ||
|
||
module.exports = Object | ||
.keys(process.env) | ||
.filter(key => REACT_APP.test(key)) | ||
.reduce((env, key) => { | ||
env['process.env.' + key] = JSON.stringify(process.env[key]); | ||
return env; | ||
}, { | ||
'process.env.NODE_ENV': NODE_ENV | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
// Inspired by https://github.com/airbnb/javascript but less opinionated. | ||
|
||
// We use eslint-loader so even warnings are very visibile. | ||
// This is why we only use "WARNING" level for potential errors, | ||
// and we don't use "ERROR" level at all. | ||
|
||
// In the future, we might create a separate list of rules for production. | ||
// It would probably be more strict. | ||
|
||
module.exports = { | ||
root: true, | ||
|
||
parser: 'babel-eslint', | ||
|
||
// import plugin is termporarily disabled, scroll below to see why | ||
plugins: [/*'import', */'flowtype', 'jsx-a11y', 'react'], | ||
|
||
env: { | ||
browser: true, | ||
commonjs: true, | ||
es6: true, | ||
node: true | ||
}, | ||
|
||
parserOptions: { | ||
ecmaVersion: 6, | ||
sourceType: 'module', | ||
ecmaFeatures: { | ||
jsx: true, | ||
generators: true, | ||
experimentalObjectRestSpread: true | ||
} | ||
}, | ||
|
||
settings: { | ||
'import/ignore': [ | ||
'node_modules', | ||
'\\.(json|css|jpg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm)$', | ||
], | ||
'import/extensions': ['.js'], | ||
'import/resolver': { | ||
node: { | ||
extensions: ['.js', '.json'] | ||
} | ||
} | ||
}, | ||
|
||
rules: { | ||
// http://eslint.org/docs/rules/ | ||
'array-callback-return': 'warn', | ||
'default-case': ['warn', { commentPattern: '^no default$' }], | ||
'dot-location': ['warn', 'property'], | ||
eqeqeq: ['warn', 'allow-null'], | ||
'guard-for-in': 'warn', | ||
'new-parens': 'warn', | ||
'no-array-constructor': 'warn', | ||
'no-caller': 'warn', | ||
'no-cond-assign': ['warn', 'always'], | ||
'no-const-assign': 'warn', | ||
'no-control-regex': 'warn', | ||
'no-delete-var': 'warn', | ||
'no-dupe-args': 'warn', | ||
'no-dupe-class-members': 'warn', | ||
'no-dupe-keys': 'warn', | ||
'no-duplicate-case': 'warn', | ||
'no-empty-character-class': 'warn', | ||
'no-empty-pattern': 'warn', | ||
'no-eval': 'warn', | ||
'no-ex-assign': 'warn', | ||
'no-extend-native': 'warn', | ||
'no-extra-bind': 'warn', | ||
'no-extra-label': 'warn', | ||
'no-fallthrough': 'warn', | ||
'no-func-assign': 'warn', | ||
'no-implied-eval': 'warn', | ||
'no-invalid-regexp': 'warn', | ||
'no-iterator': 'warn', | ||
'no-label-var': 'warn', | ||
'no-labels': ['warn', { allowLoop: false, allowSwitch: false }], | ||
'no-lone-blocks': 'warn', | ||
'no-loop-func': 'warn', | ||
'no-mixed-operators': ['warn', { | ||
groups: [ | ||
['&', '|', '^', '~', '<<', '>>', '>>>'], | ||
['==', '!=', '===', '!==', '>', '>=', '<', '<='], | ||
['&&', '||'], | ||
['in', 'instanceof'] | ||
], | ||
allowSamePrecedence: false | ||
}], | ||
'no-multi-str': 'warn', | ||
'no-native-reassign': 'warn', | ||
'no-negated-in-lhs': 'warn', | ||
'no-new-func': 'warn', | ||
'no-new-object': 'warn', | ||
'no-new-symbol': 'warn', | ||
'no-new-wrappers': 'warn', | ||
'no-obj-calls': 'warn', | ||
'no-octal': 'warn', | ||
'no-octal-escape': 'warn', | ||
'no-redeclare': 'warn', | ||
'no-regex-spaces': 'warn', | ||
'no-restricted-syntax': [ | ||
'warn', | ||
'LabeledStatement', | ||
'WithStatement', | ||
], | ||
'no-return-assign': 'warn', | ||
'no-script-url': 'warn', | ||
'no-self-assign': 'warn', | ||
'no-self-compare': 'warn', | ||
'no-sequences': 'warn', | ||
'no-shadow-restricted-names': 'warn', | ||
'no-sparse-arrays': 'warn', | ||
'no-this-before-super': 'warn', | ||
'no-throw-literal': 'warn', | ||
'no-undef': 'warn', | ||
'no-unexpected-multiline': 'warn', | ||
'no-unreachable': 'warn', | ||
'no-unused-expressions': 'warn', | ||
'no-unused-labels': 'warn', | ||
'no-unused-vars': ['warn', { vars: 'local', args: 'none' }], | ||
'no-use-before-define': ['warn', 'nofunc'], | ||
'no-useless-computed-key': 'warn', | ||
'no-useless-concat': 'warn', | ||
'no-useless-constructor': 'warn', | ||
'no-useless-escape': 'warn', | ||
'no-useless-rename': ['warn', { | ||
ignoreDestructuring: false, | ||
ignoreImport: false, | ||
ignoreExport: false, | ||
}], | ||
'no-with': 'warn', | ||
'no-whitespace-before-property': 'warn', | ||
'operator-assignment': ['warn', 'always'], | ||
radix: 'warn', | ||
'require-yield': 'warn', | ||
'rest-spread-spacing': ['warn', 'never'], | ||
strict: ['warn', 'never'], | ||
'unicode-bom': ['warn', 'never'], | ||
'use-isnan': 'warn', | ||
'valid-typeof': 'warn', | ||
|
||
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/ | ||
|
||
// TODO: import rules are temporarily disabled because they don't play well | ||
// with how eslint-loader only checks the file you change. So if module A | ||
// imports module B, and B is missing a default export, the linter will | ||
// record this as an issue in module A. Now if you fix module B, the linter | ||
// will not be aware that it needs to re-lint A as well, so the error | ||
// will stay until the next restart, which is really confusing. | ||
|
||
// This is probably fixable with a patch to eslint-loader. | ||
// When file A is saved, we want to invalidate all files that import it | ||
// *and* that currently have lint errors. This should fix the problem. | ||
|
||
// 'import/default': 'warn', | ||
// 'import/export': 'warn', | ||
// 'import/named': 'warn', | ||
// 'import/namespace': 'warn', | ||
// 'import/no-amd': 'warn', | ||
// 'import/no-duplicates': 'warn', | ||
// 'import/no-extraneous-dependencies': 'warn', | ||
// 'import/no-named-as-default': 'warn', | ||
// 'import/no-named-as-default-member': 'warn', | ||
// 'import/no-unresolved': ['warn', { commonjs: true }], | ||
|
||
// https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules | ||
'react/jsx-equals-spacing': ['warn', 'never'], | ||
'react/jsx-no-duplicate-props': ['warn', { ignoreCase: true }], | ||
'react/jsx-no-undef': 'warn', | ||
'react/jsx-pascal-case': ['warn', { | ||
allowAllCaps: true, | ||
ignore: [], | ||
}], | ||
'react/jsx-uses-react': 'warn', | ||
'react/jsx-uses-vars': 'warn', | ||
'react/no-deprecated': 'warn', | ||
'react/no-direct-mutation-state': 'warn', | ||
'react/no-is-mounted': 'warn', | ||
'react/react-in-jsx-scope': 'warn', | ||
'react/require-render-return': 'warn', | ||
|
||
// https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules | ||
'jsx-a11y/aria-role': 'warn', | ||
'jsx-a11y/img-has-alt': 'warn', | ||
'jsx-a11y/img-redundant-alt': 'warn', | ||
'jsx-a11y/no-access-key': 'warn', | ||
|
||
// https://github.com/gajus/eslint-plugin-flowtype | ||
'flowtype/define-flow-type': 'warn', | ||
'flowtype/require-valid-file-annotation': 'warn', | ||
'flowtype/use-flow-type': 'warn' | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
// @flow |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
// @flow | ||
declare export default string; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
// TODO: we can split this file into several files (pre-eject, post-eject, test) | ||
// and use those instead. This way we don't need to branch here. | ||
|
||
var path = require('path'); | ||
|
||
// True after ejecting, false when used as a dependency | ||
var isEjected = ( | ||
path.resolve(path.join(__dirname, '..')) === | ||
path.resolve(process.cwd()) | ||
); | ||
|
||
// Are we developing create-react-app locally? | ||
var isInCreateReactAppSource = ( | ||
process.argv.some(arg => arg.indexOf('--debug-template') > -1) | ||
); | ||
|
||
function resolveOwn(relativePath) { | ||
return path.resolve(__dirname, relativePath); | ||
} | ||
|
||
function resolveApp(relativePath) { | ||
return path.resolve(relativePath); | ||
} | ||
|
||
if (isInCreateReactAppSource) { | ||
// create-react-app development: we're in ./config/ | ||
module.exports = { | ||
appBuild: resolveOwn('../build'), | ||
appHtml: resolveOwn('../template/index.html'), | ||
appFavicon: resolveOwn('../template/favicon.ico'), | ||
appPackageJson: resolveOwn('../package.json'), | ||
appSrc: resolveOwn('../template/src'), | ||
appNodeModules: resolveOwn('../node_modules'), | ||
ownNodeModules: resolveOwn('../node_modules') | ||
}; | ||
} else if (!isEjected) { | ||
// before eject: we're in ./node_modules/react-scripts/config/ | ||
module.exports = { | ||
appBuild: resolveApp('build'), | ||
appHtml: resolveApp('index.html'), | ||
appFavicon: resolveApp('favicon.ico'), | ||
appPackageJson: resolveApp('package.json'), | ||
appSrc: resolveApp('src'), | ||
appLib: resolveApp('lib'), | ||
appDist: resolveApp('dist'), | ||
appNodeModules: resolveApp('node_modules'), | ||
// this is empty with npm3 but node resolution searches higher anyway: | ||
ownNodeModules: resolveOwn('../node_modules') | ||
}; | ||
} else { | ||
// after eject: we're in ./config/ | ||
module.exports = { | ||
appBuild: resolveApp('build'), | ||
appHtml: resolveApp('index.html'), | ||
appFavicon: resolveApp('favicon.ico'), | ||
appPackageJson: resolveApp('package.json'), | ||
appSrc: resolveApp('src'), | ||
appLib: resolveApp('lib'), | ||
appDist: resolveApp('dist'), | ||
appNodeModules: resolveApp('node_modules'), | ||
ownNodeModules: resolveApp('node_modules') | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
if (typeof Promise === 'undefined') { | ||
// Rejection tracking prevents a common issue where React gets into an | ||
// inconsistent state due to an error, but it gets swallowed by a Promise, | ||
// and the user has no idea what causes React's erratic future behavior. | ||
require('promise/lib/rejection-tracking').enable(); | ||
window.Promise = require('promise/lib/es6-extensions.js'); | ||
} | ||
|
||
// fetch() polyfill for making API calls. | ||
require('whatwg-fetch'); | ||
|
||
// Object.assign() is commonly used with React. | ||
// It will use the native implementation if it's present and isn't buggy. | ||
Object.assign = require('object-assign'); |
Oops, something went wrong.