Skip to content

Commit

Permalink
Fixing typescirpt build
Browse files Browse the repository at this point in the history
  • Loading branch information
James Friedman committed Sep 6, 2018
1 parent 7b1b574 commit 9e90f8f
Show file tree
Hide file tree
Showing 8 changed files with 123 additions and 150 deletions.
38 changes: 0 additions & 38 deletions .gitignore
Expand Up @@ -9,44 +9,6 @@
# production
/build
**/dist
/Base
/Button
/Card
/Chip
/Checkbox
/Dialog
/Drawer
/Elevation
/Fab
/FloatingLabel
/FormField
/Grid
/GridList
/Icon
/IconButton
/IconToggle
/ImageList
/index.js
/index.tsx
/LinearProgress
/LineRipple
/List
/Menu
/NotchedOutline
/Provider
/Radio
/Ripple
/Select
/Shape
/Slider
/Snackbar
/Switch
/Tabs
/TextField
/Theme
/Toolbar
/TopAppBar
/Typography
react-versions

# misc
Expand Down
34 changes: 3 additions & 31 deletions package.json
@@ -1,26 +1,8 @@
{
"name": "rmwc",
"version": "1.9.4",
"author": "James Friedman",
"private": false,
"description": "A thin React wrapper for Material Design (Web) Components",
"homepage": "https://jamesmfriedman.github.io/rmwc/",
"repository": {
"type": "git",
"url": "https://github.com/jamesmfriedman/rmwc.git"
},
"keywords": [
"rmwc",
"react",
"react-material",
"material-design",
"react-mdc",
"react-material-design"
],
"bugs": {
"url": "https://github.com/jamesmfriedman/rmwc/issues",
"email": "me@jamesmfriedman.com"
},
"private": true,
"description": "RMWC: A React wrapper for Material Design (Web) Components",
"license": "MIT",
"main": "index.js",
"types": "index.d.ts",
Expand All @@ -45,7 +27,7 @@
"test": "flow && npm run build:code && node scripts/test.js && npm run clean",
"test:watch": "react-app-rewired test --env=jsdom",
"test:coverage": "react-app-rewired test --env=jsdom --coverage",
"lerna:publish": "lerna version && lerna run publish:dist && npm run clean",
"lerna:release": "lerna version && lerna run publish:dist && npm run clean",
"clean": "node scripts/clean.js",
"postpublish": "npm run clean",
"docgen": "node scripts/docgen.js",
Expand Down Expand Up @@ -98,16 +80,6 @@
},
"jest": {
"moduleNameMapper": {
"@rmwc/floating-label$": "<rootDir>/src/FloatingLabel",
"@rmwc/form-field": "<rootDir>/src/FormField",
"@rmwc/grid-list$": "<rootDir>/src/GridList",
"@rmwc/icon-button$": "<rootDir>/src/IconButton",
"@rmwc/image-list$": "<rootDir>/src/ImageList",
"@rmwc/notched-outline$": "<rootDir>/src/NotchedOutline",
"@rmwc/text-field$": "<rootDir>/src/TextField",
"@rmwc/line-ripple$": "<rootDir>/src/LineRipple",
"@rmwc/linear-progress$": "<rootDir>/src/LinearProgress",
"@rmwc/top-app-bar$": "<rootDir>/src/TopAppBar",
"@rmwc/(.*)$": "<rootDir>/src/$1"
},
"resolver": "./scripts/jest-resolver.js",
Expand Down
83 changes: 40 additions & 43 deletions scripts/build-code.js
@@ -1,6 +1,7 @@
process.env.NODE_ENV = process.env.NODE_ENV || 'production';

const processBuiltFiles = require('./process-built-files');
const getPackageDirs = require('./get-package-dirs');
const path = require('path');
const fs = require('fs-extra');
const { exec, execSync } = require('child_process');
Expand Down Expand Up @@ -72,55 +73,51 @@ const copyBuiltDirsBackToSrc = files => {
});
};

processBuiltFiles(files => {
files.forEach(f => {
let out = f.replace('./src/', './');

// avoid copying the root directory into itself
if (out.split(path.sep).length === 2) {
return;
}

if (out === './index.js') {
return;
}

if (out === './rmwc.js') {
out = './index.js';
execSync(
`NODE_ENV=production ./node_modules/.bin/babel ${f} -o ${out} --copy-files`
);
fixPackageDotJSONPath(out);
writeFlowFile(f, out);
writeTypescriptFile(f, out);
fixPackageDotJSONPath(out.replace('.js', '.tsx'));
return;
}

const dir = path.dirname(out);

if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}

if (path.extname(f) === '.js') {
console.log('Babel:', f, '-> ', out);
writeBuiltFile(f, out);
writeFlowFile(f, out);
writeTypescriptFile(f, out);
} else {
copyFile(f, out);
}
const promises = getPackageDirs().map(d => {
return new Promise((resolve, reject) => {
glob(`./src/${d}/!(*.story.js|*.spec.js|setupTests.js)`, {}, function(
er,
files
) {
console.log(`Building Package: ${d}`);

files.forEach(f => {
// skip the root dir
if (f === `./src/${d}`) {
return;
}

const out = f.replace(`./src/${d}`, `./src/${d}/dist`);

// make our out dir
const dir = path.dirname(out);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}

// handle files
if (path.extname(f) === '.js') {
console.log('Babel:', f, '-> ', out);
writeBuiltFile(f, out);
writeFlowFile(f, out);
writeTypescriptFile(f, out);
} else {
copyFile(f, out);
}
});
resolve();
});
});
});

// Compile the TS
Promise.all(promises).then(() => {
console.log('Compiling Typescript...');
const compileTypescriptCmd = `./node_modules/.bin/tsc`;
execSync(compileTypescriptCmd, { stdio: [0, 1, 2] });

glob('./**/*.tsx', {}, function(er, files) {
console.log(files);
glob('./**/dist/*.tsx', {}, function(er, files) {
files.forEach(fs.unlinkSync);

processBuiltFiles(copyBuiltDirsBackToSrc);
});
});

16 changes: 0 additions & 16 deletions scripts/clean.js
@@ -1,24 +1,8 @@
process.env.NODE_ENV = process.env.NODE_ENV || 'production';

const glob = require('glob');
const processBuiltFiles = require('./process-built-files');
const fs = require('fs-extra');

glob('./src/**/dist/', {}, function(er, files) {
files.forEach(f => fs.removeSync(f));
});

processBuiltFiles(files => {
files.forEach(f => {
let out = f.replace('./src/', './');

if (out === './rmwc.js') {
out = './index.js';
}

fs.removeSync(out);
fs.removeSync(out + '.flow');
fs.removeSync(out.replace('.js', '.tsx'));
fs.removeSync(out.replace('.js', '.d.ts'));
});
});
4 changes: 1 addition & 3 deletions scripts/get-package-dirs.js
Expand Up @@ -2,6 +2,4 @@ const { readdirSync, statSync } = require('fs');
const { join } = require('path');

module.exports = () =>
readdirSync('./src')
.filter(f => statSync(join('./src', f)).isDirectory())
.filter(d => d !== 'rmwc');
readdirSync('./src').filter(f => statSync(join('./src', f)).isDirectory());
14 changes: 7 additions & 7 deletions src/base/testPolyfill.js
@@ -1,5 +1,5 @@
export default () => {
if (global.window) {
if (global['window']) {
const { ValidityState } = require('hyperform');

const defineValidity = {
Expand All @@ -10,30 +10,30 @@ export default () => {
};

Object.defineProperty(
global.HTMLInputElement.prototype,
global['HTMLInputElement'].prototype,
'validity',
defineValidity
);
Object.defineProperty(
global.HTMLTextAreaElement.prototype,
global['HTMLTextAreaElement'].prototype,
'validity',
defineValidity
);

Object.defineProperty(window.HTMLElement.prototype, 'dataset', {
Object.defineProperty(window['HTMLElement'].prototype, 'dataset', {
writable: true,
value: {}
});

Object.defineProperty(window.HTMLCanvasElement.prototype, 'getContext', {
Object.defineProperty(window['HTMLCanvasElement'].prototype, 'getContext', {
writable: true,
value: () => ({
font: '',
measureText: () => ({ width: 0 })
})
});

window.MutationObserver =
window.MutationObserver || require('mutation-observer');
window['MutationObserver'] =
window['MutationObserver'] || require('mutation-observer');
}
};
1 change: 1 addition & 0 deletions src/rmwc/package.json
Expand Up @@ -19,6 +19,7 @@
"react-mdc",
"react-material-design"
],
"types": "index.d.ts",
"author": "James Friedman",
"private": false,
"license": "MIT",
Expand Down
83 changes: 71 additions & 12 deletions tsconfig.json
Expand Up @@ -2,7 +2,6 @@
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"baseUrl": ".",
"module": "esnext",
"declaration": true,
"emitDeclarationOnly": true,
Expand All @@ -19,18 +18,78 @@
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"preserveSymlinks": true,
"baseUrl": ".",
"paths": {
"@rmwc/*": ["./*"],
"@rmwc/floating-label": ["./FloatingLabel"],
"@rmwc/form-field": ["./FormField"],
"@rmwc/grid-list": ["./GridList"],
"@rmwc/icon-button": ["./IconButton"],
"@rmwc/image-list": ["./ImageList"],
"@rmwc/notched-outline": ["./NotchedOutline"],
"@rmwc/text-field": ["./TextField"],
"@rmwc/line-ripple": ["./LineRipple"],
"@rmwc/linear-progress": ["./LinearProgress"],
"@rmwc/top-app-bar": ["./TopAppBar"]
"@rmwc/base": ["src/base/dist"],
"@rmwc/base/*": ["src/base/dist/*"],
"@rmwc/button": ["src/button/dist"],
"@rmwc/button/*": ["src/button/dist/*"],
"@rmwc/card": ["src/card/dist"],
"@rmwc/card/*": ["src/card/dist/*"],
"@rmwc/checkbox": ["src/checkbox/dist"],
"@rmwc/checkbox/*": ["src/checkbox/dist/*"],
"@rmwc/chip": ["src/chip/dist"],
"@rmwc/chip/*": ["src/chip/dist/*"],
"@rmwc/dialog": ["src/dialog/dist"],
"@rmwc/dialog/*": ["src/dialog/dist/*"],
"@rmwc/drawer": ["src/drawer/dist"],
"@rmwc/drawer/*": ["src/drawer/dist/*"],
"@rmwc/elevation": ["src/elevation/dist"],
"@rmwc/elevation/*": ["src/elevation/dist/*"],
"@rmwc/fab": ["src/fab/dist"],
"@rmwc/fab/*": ["src/fab/dist/*"],
"@rmwc/floating-label": ["src/floating-label/dist"],
"@rmwc/floating-label/*": ["src/floating-label/dist/*"],
"@rmwc/formfield": ["src/formfield/dist"],
"@rmwc/formfield/*": ["src/formfield/dist/*"],
"@rmwc/grid": ["src/grid/dist"],
"@rmwc/grid/*": ["src/grid/dist/*"],
"@rmwc/grid-list": ["src/grid-list/dist"],
"@rmwc/grid-list/*": ["src/grid-list/dist/*"],
"@rmwc/icon": ["src/icon/dist"],
"@rmwc/icon/*": ["src/icon/dist/*"],
"@rmwc/icon-button": ["src/icon-button/dist"],
"@rmwc/icon-button/*": ["src/icon-button/dist/*"],
"@rmwc/image-list": ["src/image-list/dist"],
"@rmwc/image-list/*": ["src/image-list/dist/*"],
"@rmwc/line-ripple": ["src/line-ripple/dist"],
"@rmwc/line-ripple/*": ["src/line-ripple/dist/*"],
"@rmwc/linear-progress": ["src/linear-progress/dist"],
"@rmwc/linear-progress/*": ["src/linear-progress/dist/*"],
"@rmwc/list": ["src/list/dist"],
"@rmwc/list/*": ["src/list/dist/*"],
"@rmwc/menu": ["src/menu/dist"],
"@rmwc/menu/*": ["src/menu/dist/*"],
"@rmwc/notched-outline": ["src/notched-outline/dist"],
"@rmwc/notched-outline/*": ["src/notched-outline/dist/*"],
"@rmwc/provider": ["src/provider/dist"],
"@rmwc/provider/*": ["src/provider/dist/*"],
"@rmwc/radio": ["src/radio/dist"],
"@rmwc/radio/*": ["src/radio/dist/*"],
"@rmwc/ripple": ["src/ripple/dist"],
"@rmwc/ripple/*": ["src/ripple/dist/*"],
"@rmwc/select": ["src/select/dist"],
"@rmwc/select/*": ["src/select/dist/*"],
"@rmwc/shape": ["src/shape/dist"],
"@rmwc/shape/*": ["src/shape/dist/*"],
"@rmwc/slider": ["src/slider/dist"],
"@rmwc/slider/*": ["src/slider/dist/*"],
"@rmwc/snackbar": ["src/snackbar/dist"],
"@rmwc/snackbar/*": ["src/snackbar/dist/*"],
"@rmwc/switch": ["src/switch/dist"],
"@rmwc/switch/*": ["src/switch/dist/*"],
"@rmwc/tabs": ["src/tabs/dist"],
"@rmwc/tabs/*": ["src/tabs/dist/*"],
"@rmwc/textfield": ["src/textfield/dist"],
"@rmwc/textfield/*": ["src/textfield/dist/*"],
"@rmwc/theme": ["src/theme/dist"],
"@rmwc/theme/*": ["src/theme/dist/*"],
"@rmwc/toolbar": ["src/toolbar/dist"],
"@rmwc/toolbar/*": ["src/toolbar/dist/*"],
"@rmwc/top-app-bar": ["src/top-app-bar/dist"],
"@rmwc/top-app-bar/*": ["src/top-app-bar/dist/*"],
"@rmwc/typography": ["src/typography/dist"],
"@rmwc/typography/*": ["src/typography/dist/*"]
}
},
"exclude": [
Expand Down

0 comments on commit 9e90f8f

Please sign in to comment.