diff --git a/.travis.yml b/.travis.yml index 2c2ba39..7a5efc2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,15 +9,25 @@ cache: - examples/todomvc/node_modules - test/manual/node_modules +env: + global: + - V_REACT=16.2.0 V_REACT_TYPES=16.0.33 V_REACT_DOM_TYPES=16.0.3 + matrix: + - V_RXJS=5.5.6 + - V_RXJS=5.* + +before_install: + - yarn add react@$V_REACT react-dom@$V_REACT @types/react@$V_REACT_TYPES @types/react-dom@$V_REACT_DOM_TYPES rxjs@$V_RXJS + - cd ./examples/all && yarn add react@$V_REACT react-dom@$V_REACT @types/react@$V_REACT_TYPES @types/react-dom@$V_REACT_DOM_TYPES rxjs@$V_RXJS && cd ../.. + - cd ./examples/todomvc && yarn add react@$V_REACT react-dom@$V_REACT @types/react@$V_REACT_TYPES @types/react-dom@$V_REACT_DOM_TYPES rxjs@$V_RXJS && cd ../.. + - cd ./test/manual && yarn add react@$V_REACT react-dom@$V_REACT @types/react@$V_REACT_TYPES @types/react-dom@$V_REACT_DOM_TYPES rxjs@$V_RXJS && cd ../.. + jobs: include: - - script: npm run test:unit - - script: npm run test:examples - - script: npm run test:todomvc - - script: npm run test:manual - stage: github release script: npm run build && npm pack deploy: + env: V_RXJS=5.5.6 provider: releases api_key: secure: k+Pvk4XKUjjVjc7jJ8OVW4fjOc8dFacupYjEZ3qV8JAFPSCpLcJi0ijGHZx44r/EaaVaVMBamGCtUQR1eotq8xturxfQZz6Jug+Eu6zOUh1KqVNzqGyv4y7UfLT5HHq7bthFBmdJ7gIN0hm0Fvi0/xm7FZWoPeucnhu31WQ16dSFUw5HBMLgjDk7IaKyVslCrERwccBshxYRuwy3+Qs3kvmwu0QHGxnZmlgNdacKdgXcrdw6QfJOmAQsoidbyhIaCfxmh/ZQESCDU5WIOBjoZnEh3qZlGxvgUPUVp7bYZ68Q3g0/Xs2y5khyIKwtlCDum5E7GGUUwXtuX1WltfhWhKLtaeFN68OANI9GZTaLYWiBYsF32szkvsjB4NL8t5rsPFJ0D4zzY9WGzaBPVtE3JmwrSpPm+M2A2gbgmEzh7CT+UFIWtmNcKtQkuLVBTNnpgMBhW2XRQmVlpvMfykQuQbISsypeUqqNyIQ5br87zWIILfdGkcminSM4qtESvO/Ltd3/JxfZIv2Xdc3oq0GpB+Pl62EWGn8hnAJ0FcWX/XDTTpDLWgld26VchfQp3+T5k4ZxMyl8lSuR0okPzj+GpLkoW2hc8fqtEVcTIwU+53C/wKcPWvBbf5WTHryDLXYptjAXhOorSIybfzeVkGSbaejH7ROQBKm7n53kjy1OGv0= diff --git a/examples/all/package.json b/examples/all/package.json index d19021f..6aaffe9 100644 --- a/examples/all/package.json +++ b/examples/all/package.json @@ -8,7 +8,6 @@ "npm": ">=3.0.0" }, "scripts": { - "preinstall": "cd ../.. && (yarn || npm i) && npm run build", "build:webpack": "NODE_ENV=production webpack --config webpack/webpack.prod.js", "build": "npm run clean && npm run build:static && npm run build:webpack", "build:static": "cp -r ./static ./build", @@ -20,18 +19,18 @@ "author": "Grammarly, Inc.", "license": "Apache-2.0", "devDependencies": { - "@grammarly/focal": "file:../../", + "@grammarly/focal": "0.6.436", "@grammarly/tslint-config": "^0.3.1", - "@types/react": "15.0.38", - "@types/react-dom": "15.5.1", + "@types/react": "16.0.33", + "@types/react-dom": "16.0.3", "css-loader": "^0.26.1", "express": "^4.14.0", - "react": "15.6.1", - "react-dom": "15.6.1", + "react": "16.2.0", + "react-dom": "16.2.0", "react-transform-catch-errors": "^1.0.2", "react-transform-hmr": "^1.0.4", "redbox-react": "^1.3.0", - "rxjs": "5.4.2", + "rxjs": "5.5.6", "style-loader": "^0.13.1", "styled-components": "1.4.4", "todomvc-app-css": "^2.0.6", @@ -41,6 +40,7 @@ "typescript": "2.4.1", "webpack": "^1.13.2", "webpack-dev-middleware": "^1.6.1", + "webpack-fail-plugin": "2.0.0", "webpack-hot-middleware": "^2.12.2" } } diff --git a/examples/all/webpack/webpack.dev.js b/examples/all/webpack/webpack.dev.js index 469de82..a7c6e4f 100644 --- a/examples/all/webpack/webpack.dev.js +++ b/examples/all/webpack/webpack.dev.js @@ -1,5 +1,6 @@ var webpack = require('webpack'); var path = require('path'); +var failPlugin = require('webpack-fail-plugin'); var APP_DIR = path.join(__dirname, '..', 'src'); @@ -38,7 +39,8 @@ module.exports = { }, plugins: [ new webpack.HotModuleReplacementPlugin(), - new webpack.NoErrorsPlugin() + new webpack.NoErrorsPlugin(), + failPlugin ], resolve: { root: [path.resolve('../src')], diff --git a/examples/all/webpack/webpack.prod.js b/examples/all/webpack/webpack.prod.js index 4017177..37b4feb 100644 --- a/examples/all/webpack/webpack.prod.js +++ b/examples/all/webpack/webpack.prod.js @@ -1,5 +1,6 @@ var path = require('path'); var webpack = require('webpack'); +var failPlugin = require('webpack-fail-plugin'); var APP_DIR = path.join(__dirname, '..', 'src'); @@ -41,7 +42,8 @@ module.exports = { compressor: { warnings: false } - }) + }), + failPlugin ], resolve: { root: [path.resolve('../src')], diff --git a/examples/todomvc/package.json b/examples/todomvc/package.json index 8d9be65..1baaa3c 100644 --- a/examples/todomvc/package.json +++ b/examples/todomvc/package.json @@ -8,7 +8,6 @@ "npm": ">=3.0.0" }, "scripts": { - "preinstall": "cd ../.. && (yarn || npm i) && npm run build", "build:webpack": "NODE_ENV=production webpack --config webpack/webpack.prod.js", "build": "npm run clean && npm run build:static && npm run build:webpack", "build:static": "cp -r ./static ./build", @@ -20,17 +19,17 @@ "author": "Grammarly, Inc.", "license": "Apache-2.0", "devDependencies": { - "@grammarly/focal": "file:../../", + "@grammarly/focal": "0.6.436", "@grammarly/tslint-config": "^0.3.1", - "@types/react": "15.0.38", - "@types/react-dom": "15.5.1", + "@types/react": "16.0.33", + "@types/react-dom": "16.0.3", "express": "^4.14.0", - "react": "15.6.1", - "react-dom": "15.6.1", + "react": "16.2.0", + "react-dom": "16.2.0", "react-transform-catch-errors": "^1.0.2", "react-transform-hmr": "^1.0.4", "redbox-react": "^1.3.0", - "rxjs": "5.4.2", + "rxjs": "5.5.6", "todomvc-app-css": "^2.0.6", "ts-loader": "^2.3.0", "tslint": "^4.1.1", @@ -38,6 +37,7 @@ "typescript": "2.4.1", "webpack": "^1.13.2", "webpack-dev-middleware": "^1.6.1", + "webpack-fail-plugin": "2.0.0", "webpack-hot-middleware": "^2.12.2" } } diff --git a/examples/todomvc/webpack/webpack.dev.js b/examples/todomvc/webpack/webpack.dev.js index afb8f91..0dd7f48 100644 --- a/examples/todomvc/webpack/webpack.dev.js +++ b/examples/todomvc/webpack/webpack.dev.js @@ -1,5 +1,6 @@ var webpack = require('webpack'); var path = require('path'); +var failPlugin = require('webpack-fail-plugin'); var APP_DIR = path.join(__dirname, '..', 'src'); @@ -31,7 +32,8 @@ module.exports = { }, plugins: [ new webpack.HotModuleReplacementPlugin(), - new webpack.NoErrorsPlugin() + new webpack.NoErrorsPlugin(), + failPlugin ], resolve: { root: [path.resolve('../src')], diff --git a/examples/todomvc/webpack/webpack.prod.js b/examples/todomvc/webpack/webpack.prod.js index 63efc45..ee187da 100644 --- a/examples/todomvc/webpack/webpack.prod.js +++ b/examples/todomvc/webpack/webpack.prod.js @@ -1,5 +1,6 @@ var path = require('path'); var webpack = require('webpack'); +var failPlugin = require('webpack-fail-plugin'); var APP_DIR = path.join(__dirname, '..', 'src'); @@ -34,7 +35,8 @@ module.exports = { compressor: { warnings: false } - }) + }), + failPlugin ], resolve: { root: [path.resolve('../src')], diff --git a/package.json b/package.json index b8556b1..b398617 100644 --- a/package.json +++ b/package.json @@ -12,10 +12,10 @@ "clean": "rm -rf ./dist", "build": "npm run clean && tsc && npm run lint", "test": "npm run test:unit && npm run test:examples && npm run test:todomvc && npm run test:manual", - "test:manual": "cd test/manual && rm -rf node_modules/@grammarly/focal && npm i --ignore-scripts && npm run build", + "test:manual": "cd test/manual && npm i && npm run build", "test:unit": "npm run build && tape ./dist/test/**/*.js | tap-spec", - "test:examples": "cd examples/all && rm -rf node_modules/@grammarly/focal && npm i --ignore-scripts && npm run build", - "test:todomvc": "cd examples/todomvc && rm -rf node_modules/@grammarly/focal && npm i --ignore-scripts && npm run build", + "test:examples": "cd examples/all && npm i && npm run build", + "test:todomvc": "cd examples/todomvc && npm i && npm run build", "test:watch": "watch 'npm test' src test", "lint": "tslint --type-check --project tsconfig.json -c tslint.json", "preversion": "if ! [[ $(git rev-parse --abbrev-ref HEAD) == \"master\" ]]; then echo \"Not on the master branch.\" && exit 1; fi", @@ -83,23 +83,23 @@ "devDependencies": { "@grammarly/tslint-config": "0.5.1", "@types/node": "^6.0.34", + "@types/react": "16.0.33", + "@types/react-dom": "16.0.3", "@types/tape": "^4.2.27", + "react": "16.2.0", + "react-dom": "16.2.0", + "rxjs": "5.5.6", "tap-spec": "^4.1.1", "tape": "^4.5.1", "tslint": "5.2.0", "typescript": "2.4.1", - "watch": "^0.18.0", - "@types/react": "15.0.38", - "@types/react-dom": "15.5.1", - "react": "15.6.1", - "react-dom": "15.6.1", - "rxjs": "5.4.2" + "watch": "^0.18.0" }, "peerDependencies": { - "@types/react": "15.0.38", - "@types/react-dom": "15.5.1", - "react": "15.6.1", - "react-dom": "15.6.1", - "rxjs": "5.4.2" + "@types/react": ">= 16.0.33 < 17.0.0-0", + "@types/react-dom": ">= 16.0.3 < 17.0.0-0", + "react": ">= 16.2.0 < 17.0.0-0", + "react-dom": ">= 16.2.0 < 17.0.0-0", + "rxjs": ">= 5.4.2 < 6.0.0-0" } } diff --git a/test/manual/package.json b/test/manual/package.json index de008e9..9e085e2 100644 --- a/test/manual/package.json +++ b/test/manual/package.json @@ -4,7 +4,6 @@ "version": "0.0.0", "main": "webpack/dev_server.js", "scripts": { - "preinstall": "cd ../.. && (yarn || npm i) && npm run build", "build:webpack": "NODE_ENV=production webpack --config webpack/webpack.prod.js", "build": "npm run clean && npm run build:static && npm run build:webpack", "build:static": "cp -r ./static ./build", @@ -16,17 +15,17 @@ "author": "Grammarly, Inc.", "license": "(c) 2016 Grammarly", "devDependencies": { - "@grammarly/focal": "file:../../", + "@grammarly/focal": "0.6.436", "@grammarly/tslint-config": "^0.3.1", - "@types/react": "15.0.38", - "@types/react-dom": "15.5.1", + "@types/react": "16.0.33", + "@types/react-dom": "16.0.3", "express": "^4.14.0", - "react": "15.6.1", - "react-dom": "15.6.1", + "react": "16.2.0", + "react-dom": "16.2.0", "react-transform-catch-errors": "^1.0.2", "react-transform-hmr": "^1.0.4", "redbox-react": "^1.3.0", - "rxjs": "5.4.2", + "rxjs": "5.5.6", "todomvc-app-css": "^2.0.6", "ts-loader": "^2.3.0", "tslint": "^4.1.1", @@ -34,6 +33,7 @@ "typescript": "2.4.1", "webpack": "^1.13.2", "webpack-dev-middleware": "^1.6.1", + "webpack-fail-plugin": "2.0.0", "webpack-hot-middleware": "^2.12.2" } } diff --git a/test/manual/webpack/webpack.dev.js b/test/manual/webpack/webpack.dev.js index afb8f91..0dd7f48 100644 --- a/test/manual/webpack/webpack.dev.js +++ b/test/manual/webpack/webpack.dev.js @@ -1,5 +1,6 @@ var webpack = require('webpack'); var path = require('path'); +var failPlugin = require('webpack-fail-plugin'); var APP_DIR = path.join(__dirname, '..', 'src'); @@ -31,7 +32,8 @@ module.exports = { }, plugins: [ new webpack.HotModuleReplacementPlugin(), - new webpack.NoErrorsPlugin() + new webpack.NoErrorsPlugin(), + failPlugin ], resolve: { root: [path.resolve('../src')], diff --git a/test/test_react.tsx b/test/test_react.tsx index 3f00cb8..e579812 100644 --- a/test/test_react.tsx +++ b/test/test_react.tsx @@ -43,13 +43,13 @@ test('react', t => { testRender(t, <F.span style={fromConst({ color: 'red' })}></F.span>, - '<span style="color:red;"></span>', + '<span style="color:red"></span>', 'Render F element with observable in style' ) testRender(t, <F.span style={fromConst({ color: 'red' })}>{fromConst('test')}</F.span>, - '<span style="color:red;">test</span>', + '<span style="color:red">test</span>', 'Render F element with 2 observables' ) @@ -125,7 +125,7 @@ test('react', t => { <F.div onClick={() => { /* no-op */ }} style={{ display: 'block', color: fromConst('red') }}> <F.span>Hello</F.span> </F.div>, - '<div style="display:block;color:red;"><span>Hello</span></div>', + '<div style="display:block;color:red"><span>Hello</span></div>', 'div with onClick' ) diff --git a/yarn.lock b/yarn.lock index 50e3fea..071890d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,15 +17,16 @@ version "6.0.52" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.52.tgz#1ac3a99b42320f9e463482f25af4c2359473aaa6" -"@types/react-dom@15.5.1": - version "15.5.1" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-15.5.1.tgz#f3c3e14c682785923c7d64583537df319442dec1" +"@types/react-dom@16.0.3": + version "16.0.3" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.3.tgz#8accad7eabdab4cca3e1a56f5ccb57de2da0ff64" dependencies: + "@types/node" "*" "@types/react" "*" -"@types/react@*", "@types/react@15.0.38": - version "15.0.38" - resolved "https://registry.yarnpkg.com/@types/react/-/react-15.0.38.tgz#6afea31a9fe66304af474106ba372ddaba449995" +"@types/react@*", "@types/react@16.0.33": + version "16.0.33" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.33.tgz#ee0f7b4dc62eaae311f81ac01cb00bdb0ffcf58f" "@types/tape@^4.2.27": version "4.2.28" @@ -98,14 +99,6 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -create-react-class@^15.6.0: - version "15.6.0" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -177,9 +170,9 @@ exec-sh@^0.2.0: dependencies: merge "^1.1.3" -fbjs@^0.8.9: - version "0.8.12" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" +fbjs@^0.8.16: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" dependencies: core-js "^1.0.0" isomorphic-fetch "^2.1.1" @@ -329,18 +322,18 @@ lodash@^3.6.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -loose-envify@^1.0.0, loose-envify@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -loose-envify@^1.1.0: +loose-envify@^1.0.0, loose-envify@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" dependencies: js-tokens "^2.0.0" +loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + make-error@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" @@ -462,35 +455,35 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.10: - version "15.5.10" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" +prop-types@^15.6.0: + version "15.6.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" dependencies: - fbjs "^0.8.9" + fbjs "^0.8.16" loose-envify "^1.3.1" + object-assign "^4.1.1" re-emitter@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/re-emitter/-/re-emitter-1.1.3.tgz#fa9e319ffdeeeb35b27296ef0f3d374dac2f52a7" -react-dom@15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470" +react-dom@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" dependencies: - fbjs "^0.8.9" + fbjs "^0.8.16" loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" + object-assign "^4.1.1" + prop-types "^15.6.0" -react@15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react/-/react-15.6.1.tgz#baa8434ec6780bde997cdc380b79cd33b96393df" +react@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba" dependencies: - create-react-class "^15.6.0" - fbjs "^0.8.9" + fbjs "^0.8.16" loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" + object-assign "^4.1.1" + prop-types "^15.6.0" readable-stream@^2.0.0, readable-stream@^2.1.5: version "2.2.2" @@ -524,11 +517,11 @@ resumer@~0.0.0: dependencies: through "~2.3.4" -rxjs@5.4.2: - version "5.4.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.2.tgz#2a3236fcbf03df57bae06fd6972fd99e5c08fcf7" +rxjs@5.5.6: + version "5.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02" dependencies: - symbol-observable "^1.0.1" + symbol-observable "1.0.1" semver@^5.3.0: version "5.3.0" @@ -584,9 +577,9 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -symbol-observable@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" tap-out@^1.4.1: version "1.4.2"