diff --git a/compat/umd.ts b/compat/umd.ts new file mode 100644 index 0000000000..302f48763f --- /dev/null +++ b/compat/umd.ts @@ -0,0 +1,22 @@ +/* + NOTE: This is the global export file for rxjs v6 and higher. + */ + +/* rxjs */ +export * from './Rx'; + +/* rxjs.operators */ +import * as _operators from 'rxjs/operators'; +export const operators = _operators; + +/* rxjs.testing */ +import * as _testing from 'rxjs/testing'; +export const testing = _testing; + +/* rxjs.ajax */ +import * as _ajax from 'rxjs/ajax'; +export const ajax = _ajax; + +/* rxjs.webSocket */ +import * as _webSocket from 'rxjs/webSocket'; +export const webSocket = _webSocket; diff --git a/package.json b/package.json index 88f4220aba..b663ee000e 100644 --- a/package.json +++ b/package.json @@ -97,16 +97,22 @@ "test:circular": "dependency-cruise --validate .dependency-cruiser.json -x \"^node_modules\" dist/esm5", "test:systemjs": "node integration/systemjs/systemjs-compatibility-spec.js", "tests2png": "mkdirp tmp/docs/img && mocha --opts spec/support/tests2png.opts \"spec/**/*-spec.ts\"", - "compat_build_all": "npm-run-all compat_clean_dist compat_build_cjs compat_build_esm5 compat_build_esm2015 compat_generate_packages", + "compat_build_all": "npm-run-all compat_clean_dist compat_build_cjs compat_build_esm5 compat_build_esm2015 compat_build_esm5_for_rollup compat_build_umd compat_generate_packages", + "compat_build_closure": "node ./tools/make-closure-compat.js", "compat_build_cjs": "npm-run-all compat_clean_dist_cjs compat_compile_dist_cjs", "compat_build_esm5": "npm-run-all compat_clean_dist_esm5 compat_compile_dist_esm5", "compat_build_esm2015": "npm-run-all compat_clean_dist_esm2015 compat_compile_dist_esm2015", + "compat_build_esm5_for_rollup": "npm-run-all compat_clean_dist_esm5_for_rollup compat_compile_dist_esm5_for_rollup", + "compat_build_umd": "npm-run-all compat_clean_dist_global && mkdirp ./dist-compat/global && node ./tools/make-umd-compat-bundle.js && npm-run-all compat_build_closure", "compat_clean_dist": "shx rm -rf ./dist-compat", "compat_clean_dist_cjs": "shx rm -rf ./dist-compat/cjs", "compat_clean_dist_esm5": "shx rm -rf ./dist-compat/esm5", "compat_clean_dist_esm2015": "shx rm -rf ./dist-compat/esm2015", + "compat_clean_dist_esm5_for_rollup": "shx rm -rf ./dist-compat/esm5_for_rollup", + "compat_clean_dist_global": "shx rm -rf ./dist-compat/global", "compat_compile_dist_cjs": "tsc -p ./tsconfig/compat/tsconfig.cjs.json", "compat_compile_dist_esm5": "tsc -p ./tsconfig/compat/tsconfig.esm5.json", + "compat_compile_dist_esm5_for_rollup": "tsc -p ./tsconfig/compat/tsconfig.esm5.rollup.json", "compat_compile_dist_esm2015": "tsc -p ./tsconfig/compat/tsconfig.esm2015.json", "compat_copy_sources": "mkdirp dist-compat && shx cp -r ./compat/ ./dist-compat/", "compat_generate_packages": "node .make-compat-package.js" @@ -212,6 +218,7 @@ "promise": "8.0.1", "protractor": "3.1.1", "rollup": "0.36.3", + "rollup-plugin-alias": "1.4.0", "rollup-plugin-inject": "2.0.0", "rollup-plugin-node-resolve": "2.0.0", "rx": "latest", diff --git a/tools/make-closure-compat.js b/tools/make-closure-compat.js new file mode 100644 index 0000000000..2090d3fe17 --- /dev/null +++ b/tools/make-closure-compat.js @@ -0,0 +1,15 @@ +var compiler = require('google-closure-compiler-js').compile; +var fs = require('fs'); + +var source = fs.readFileSync('dist-compat/global/rxjs-compat.umd.js', 'utf8'); + +var compilerFlags = { + jsCode: [{src: source}], + languageIn: 'ES2015', + createSourceMap: true, +}; + +var output = compiler(compilerFlags); + +fs.writeFileSync('dist-compat/global/rxjs-compat.umd.min.js', output.compiledCode, 'utf8'); +fs.writeFileSync('dist-compat/global/rxjs-compat.umd.min.js.map', output.sourceMap, 'utf8'); \ No newline at end of file diff --git a/tools/make-umd-compat-bundle.js b/tools/make-umd-compat-bundle.js new file mode 100644 index 0000000000..bfdeebe8c6 --- /dev/null +++ b/tools/make-umd-compat-bundle.js @@ -0,0 +1,41 @@ +var _ = require('lodash'); + +var rollup = require('rollup'); +var rollupAlias = require('rollup-plugin-alias'); +var rollupInject = require('rollup-plugin-inject'); +var rollupNodeResolve = require('rollup-plugin-node-resolve'); + +var fs = require('fs'); +var tslib = require('tslib'); + +rollup.rollup({ + entry: 'dist-compat/esm5_for_rollup/compat/umd.js', + plugins: [ + rollupAlias({ + 'rxjs/testing': 'dist-compat/esm5_for_rollup/src/testing/index.js', + 'rxjs/operators': 'dist-compat/esm5_for_rollup/src/operators/index.js', + 'rxjs/webSocket': 'dist-compat/esm5_for_rollup/src/webSocket/index.js', + 'rxjs/ajax': 'dist-compat/esm5_for_rollup/src/ajax/index.js', + 'rxjs/internal-compatibility': 'dist-compat/esm5_for_rollup/src/internal-compatibility/index.js', + 'rxjs': 'dist-compat/esm5_for_rollup/src/index.js', + }), + rollupNodeResolve({ + jsnext: true, + }), + rollupInject({ + exclude: 'node_modules/**', + modules: _.mapValues(tslib, function (value, key) { + return ['tslib', key]; + }), + }), + ], +}).then(function (bundle) { + var result = bundle.generate({ + format: 'umd', + moduleName: 'rxjs', + sourceMap: true + }); + + fs.writeFileSync('dist-compat/global/rxjs-compat.umd.js', result.code); + fs.writeFileSync('dist-compat/global/rxjs-compat.umd.js.map', result.map); +}); diff --git a/tsconfig/compat/tsconfig.esm5.rollup.json b/tsconfig/compat/tsconfig.esm5.rollup.json new file mode 100644 index 0000000000..aa4ce1fb5f --- /dev/null +++ b/tsconfig/compat/tsconfig.esm5.rollup.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.esm5.json", + "compilerOptions": { + "outDir": "../../dist-compat/esm5_for_rollup", + "noEmitHelpers": true + } +} \ No newline at end of file