Skip to content

Commit

Permalink
[#166566930] synchronize the config from the private repo
Browse files Browse the repository at this point in the history
  • Loading branch information
uraniumanchor committed Nov 4, 2019
1 parent 817791b commit cd05064
Show file tree
Hide file tree
Showing 11 changed files with 3,685 additions and 726 deletions.
18 changes: 0 additions & 18 deletions .babelrc

This file was deleted.

3 changes: 3 additions & 0 deletions .browserslistrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
last 1 chrome version
last 1 firefox version
last 1 safari version
23 changes: 23 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module.exports = function(api) {
api.cache(true);
return {
presets: [
[
'@babel/preset-env',
{
useBuiltIns: 'usage',
corejs: 3,
},
],
'@babel/preset-react',
'@babel/preset-typescript',
],
plugins: [
'babel-plugin-lodash',
'@babel/plugin-proposal-optional-chaining',
'@babel/plugin-syntax-dynamic-import',
['@babel/plugin-proposal-class-properties', { loose: true }],
['@babel/plugin-transform-runtime', { corejs: 3 }],
],
};
};
2 changes: 2 additions & 0 deletions declarations.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
declare module '*.css';
declare module 'memoize-one';
21 changes: 17 additions & 4 deletions karma.conf.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
const sharedConfig = require('./shared.webpack')({ context: { DEBUG: true } });
const webpackConfig = require('./webpack.config.js');
process.env.CHROME_BIN = require('puppeteer').executablePath();
module.exports = function(config) {
config.set({
autoWatch: true,
browsers: ['ChromeHeadless'],
browsers: ['ChromeHeadless_without_sandbox'],
frameworks: ['jasmine'],
files: ['bundles/init/index.js', 'bundles/**/*_spec.js', 'bundles/**/*Spec.js'],
customLaunchers: {
ChromeHeadless_without_sandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox'],
},
},
files: [
'bundles/init/index.js',
'bundles/**/*_spec.js',
'bundles/**/*Spec.js',
'bundles/**/*Spec.tsx',
'./spec/Suite.tsx',
],
preprocessors: {
'bundles/init/*.js': ['webpack'],
'bundles/**/*_spec.js': ['webpack'],
'bundles/**/*Spec.js': ['webpack'],
'bundles/**/*Spec.tsx': ['webpack'],
'./spec/Suite.tsx': ['webpack'],
},
webpack: {
...webpackConfig,
Expand All @@ -22,6 +35,6 @@ module.exports = function(config) {
noInfo: true,
poll: 1000,
},
plugins: [require('karma-webpack'), require('karma-jasmine'), require('karma-chrome-launcher')],
plugins: ['karma-*'],
});
};
64 changes: 42 additions & 22 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,60 +7,80 @@
"start": "cross-env NODE_ENV=${NODE_ENV:-development} SOURCE_MAPS=${SOURCE_MAPS:-1} webpack-dev-server",
"test": "karma start --single-run",
"test:watch": "karma start",
"fix:prettier": "prettier --write \"bundles/**\""
"fix:prettier": "prettier --write \"bundles/**\"",
"tsc": "tsc --version && tsc",
"tsc:watch": "tsc --version && tsc --watch"
},
"author": "",
"license": "ISC",
"dependencies": {
"@babel/runtime": "^7.6.3",
"classnames": "^2.2.6",
"connected-react-router": "^6.5.2",
"history": "^4.10.1",
"lodash": "^4.17.15",
"moment": "^2.24.0",
"prop-types": "^15.7.2",
"react": "^16.10.2",
"react-dnd": "^9.4.0",
"react-dnd-html5-backend": "^9.4.0",
"react-dom": "^16.10.2",
"react-redux": "^7.1.1",
"react-router": "^5.1.2",
"react-router-dom": "^5.1.2",
"redux": "^4.0.4",
"redux-thunk": "^2.3.0",
"reselect": "^4.0.0"
},
"dependencies": {},
"devDependencies": {
"@babel/cli": "^7.6.4",
"@babel/core": "^7.5.5",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-transform-react-jsx": "^7.3.0",
"@babel/plugin-proposal-optional-chaining": "^7.6.0",
"@babel/plugin-transform-runtime": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@babel/preset-react": "^7.0.0",
"@babel/preset-typescript": "^7.3.3",
"@babel/runtime": "^7.6.3",
"@babel/runtime-corejs3": "^7.5.5",
"@gamesdonequick/prettier-config": "^2.2.0",
"@hot-loader/react-dom": "^16.10.2",
"@storybook/addon-actions": "^5.1.3",
"@storybook/addon-links": "^5.1.3",
"@storybook/addons": "^5.1.3",
"@storybook/react": "^5.1.3",
"@types/jasmine": "^3.3.13",
"@types/moment-timezone": "^0.5.12",
"@types/react": "^16.8.19",
"@types/react-beautiful-dnd": "^11.0.2",
"@types/react-dom": "^16.8.4",
"@types/react-redux": "^7.1.5",
"@types/react-router": "^5.1.2",
"autoprefixer": "^9.7.0",
"babel-loader": "^8.0.6",
"babel-plugin-lodash": "^3.3.4",
"classnames": "^2.2.6",
"classnames-loader": "^2.1.0",
"connected-react-router": "^6.5.2",
"core-js": "3.3.3",
"cross-env": "^6.0.3",
"css-loader": "^3.2.0",
"eslint": "^6.5.1",
"eslint-plugin-react": "^7.16.0",
"fetch-mock": "^8.0.0-alpha.14",
"file-loader": "^4.2.0",
"history": "^4.10.1",
"jasmine-core": "^3.5.0",
"karma": "^4.4.1",
"karma-chrome-launcher": "^3.1.0",
"karma-jasmine": "^2.0.1",
"karma-webpack": "^4.0.2",
"lodash": "^4.17.15",
"mini-css-extract-plugin": "^0.8.0",
"moment": "^2.24.0",
"moment-timezone": "^0.5.25",
"postcss-loader": "^3.0.0",
"prettier": "^1.18.2",
"prop-types": "^15.7.2",
"puppeteer": "^2.0.0",
"react": "^16.10.2",
"react-dnd": "^9.4.0",
"react-dnd-html5-backend": "^9.4.0",
"react-dnd-test-backend": "^9.4.0",
"react-dom": "^16.10.2",
"react-hot-loader": "^4.12.15",
"react-redux": "^7.1.1",
"react-router": "^5.1.2",
"react-router-dom": "^5.1.2",
"redux": "^4.0.4",
"redux-devtools-extension": "^2.13.8",
"uglify-js": "^3.6.4",
"redux-mock-store": "^1.5.3",
"redux-thunk": "^2.3.0",
"reselect": "^4.0.0",
"terser-webpack-plugin": "^2.2.1",
"typescript": "^3.6.4",
"url-loader": "^2.2.0",
"webpack": "^4.41.2",
"webpack-cli": "^3.3.9",
Expand Down
80 changes: 0 additions & 80 deletions shared.webpack.js

This file was deleted.

67 changes: 67 additions & 0 deletions spec/Suite.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import React, {ComponentClass} from 'react';

let componentFakes: any[] = [];
let oldCreateElement: typeof React.createElement;

beforeEach(function () {
oldCreateElement = React.createElement.bind(React);
componentFakes = [];

// @ts-ignore
spyOn(React, 'createElement').and.callFake(function (type, props, ...children) {
let fake = componentFakes.find(f => f.componentClass === type);
if (fake) {
type = fake.replacementClass;
}
return oldCreateElement(type, props, ...children);
});
});

function name(klass: any) {
return klass.displayName || klass.name || klass.toString();
}

function createMockReactClass(Klass: any) {
return class extends React.Component {
static displayName = `Mock${name(Klass)}`;
static propTypes = {...Klass.propTypes};
static contextTypes = {...Klass.contextTypes};

render() {
return <div>{this.props.children}</div>;
}
}
}

function createWrappedReactClass(Klass: any) {
return class extends React.Component {
static displayName = `Mock${name(Klass)}`;
static propTypes = {...Klass.propTypes};
static contextTypes = {...Klass.contextTypes};

render() {
return oldCreateElement(Klass, this.props);
}
}
}


export function mockComponent(componentClass: any): ReturnType<typeof createMockReactClass> {
const alreadyMocked = componentFakes.find(cf => cf.componentClass === componentClass);
expect(alreadyMocked).toBeUndefined('This component has already been replaced');
let fakeComponentClass = createMockReactClass(componentClass);

componentFakes.push({componentClass: componentClass, replacementClass: fakeComponentClass});

return fakeComponentClass;
}

export function wrapComponent(componentClass: any): ReturnType<typeof createWrappedReactClass> {
const alreadyMocked = componentFakes.find(cf => cf.componentClass === componentClass);
expect(alreadyMocked).toBeUndefined('This component has already been replaced');
let wrappedComponentClass = createWrappedReactClass(componentClass);

componentFakes.push({componentClass: componentClass, replacementClass: wrappedComponentClass});

return wrappedComponentClass;
}
17 changes: 17 additions & 0 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"checkJs": false,
"jsx": "preserve",
"module": "commonjs",
"noEmit": true,
"sourceMap": true,
"strict": true,
"target": "esnext"
},
"include": [
"./bundles/**/*"
],
"typeRoots": ["./bundles/typings", "./node_modules/@types"]
}
Loading

0 comments on commit cd05064

Please sign in to comment.