diff --git a/package.json b/package.json index 750bb493f..0846e47cf 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@angular/core": "^5.0.0", "@angular/platform-browser": "^5.0.0", "@angular/platform-browser-dynamic": "^5.0.0", + "bufferutil": "^3.0.3", "@firebase/app": "^0.1.6", "@firebase/app-types": "^0.1.1", "@firebase/auth": "^0.3.2", @@ -47,7 +48,10 @@ "@firebase/storage-types": "^0.1.1", "firebase": "^4.8.2", "rxjs": "^5.5.4", - "zone.js": "^0.8.0" + "utf-8-validate": "^4.0.0", + "ws": "^3.3.2", + "zone.js": "^0.8.0", + "xmlhttprequest": "^1.8.0" }, "devDependencies": { "@angular/compiler-cli": "^5.0.0", diff --git a/src/firebase-node/index.js b/src/firebase-node/index.js new file mode 100644 index 000000000..2d2badb7a --- /dev/null +++ b/src/firebase-node/index.js @@ -0,0 +1,4 @@ +// Patches for loading angularfire in a Universal Context + +global['WebSocket'] = require("ws"); +global['XMLHttpRequest'] = require("xmlhttprequest").XMLHttpRequest; diff --git a/src/firebase-node/package.json b/src/firebase-node/package.json new file mode 100644 index 000000000..831b63727 --- /dev/null +++ b/src/firebase-node/package.json @@ -0,0 +1,25 @@ +{ + "name": "angularfire2", + "version": "ANGULARFIRE2_VERSION", + "description": "Fixes for Node.js", + "main": "index.js", + "keywords": [ + "angular", + "firebase", + "rxjs" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/angular/angularfire2.git" + }, + "author": "angular,firebase", + "license": "MIT", + "peerDependencies": { + "xmlhttprequest": "XMLHTTPREQUEST_VERSION", + "ws": "WS_VERSION", + "bufferutil": "BUFFERUTIL_VERSION", + "utf-8-validate": "UTF_8_VALIDATE_VERSION" + }, + "typings": "index.d.ts" + } + \ No newline at end of file diff --git a/tools/build.js b/tools/build.js index f33fe5376..d0c6dc535 100644 --- a/tools/build.js +++ b/tools/build.js @@ -87,7 +87,11 @@ const VERSIONS = { RXJS_VERSION: pkg.dependencies['rxjs'], ZONEJS_VERSION: pkg.dependencies['zone.js'], ANGULARFIRE2_VERSION: pkg.version, - FIRESTORE_VERSION: pkg.dependencies['firestore'] + FIRESTORE_VERSION: pkg.dependencies['firestore'], + WS_VERSION: pkg.dependencies['ws'], + BUFFERUTIL_VERSION: pkg.dependencies['bufferutil'], + UTF_8_VALIDATE_VERSION: pkg.dependencies['utf-8-validate'], + XMLHTTPREQUEST_VERSION: pkg.dependencies['xmlhttprequest'] }; const MODULE_NAMES = { @@ -114,6 +118,7 @@ const SRC_PKG_PATHS = { database: `${process.cwd()}/src/database/package.json`, "database-deprecated": `${process.cwd()}/src/database-deprecated/package.json`, firestore: `${process.cwd()}/src/firestore/package.json`, + "firebase-node": `${process.cwd()}/src/firebase-node/package.json`, storage: `${process.cwd()}/src/storage/package.json` }; @@ -123,6 +128,7 @@ const DEST_PKG_PATHS = { database: `${process.cwd()}/dist/packages-dist/database/package.json`, "database-deprecated": `${process.cwd()}/dist/packages-dist/database-deprecated/package.json`, firestore: `${process.cwd()}/dist/packages-dist/firestore/package.json`, + "firebase-node": `${process.cwd()}/dist/packages-dist/firebase-node/package.json`, storage: `${process.cwd()}/dist/packages-dist/storage/package.json` }; @@ -268,6 +274,10 @@ function copyDocs() { return copy(`${process.cwd()}/docs`, `${process.cwd()}/dist/packages-dist/docs`); } +function copyNodeFixes() { + return copy(`${process.cwd()}/src/firebase-node`, `${process.cwd()}/dist/packages-dist/firebase-node`); +} + function measure(module) { const path = `${process.cwd()}/dist/packages-dist/bundles/${module}.umd.js`; const file = readFileSync(path); @@ -286,6 +296,7 @@ function getVersions() { getDestPackageFile('auth'), getDestPackageFile('database'), getDestPackageFile('firestore'), + getDestPackageFile('firebase-node'), getDestPackageFile('storage'), getDestPackageFile('database-deprecated') ]; @@ -343,6 +354,8 @@ function buildLibrary(globals) { .switchMap(() => Observable.from(copyNpmIgnore())) .switchMap(() => Observable.from(copyReadme())) .switchMap(() => Observable.from(copyDocs())) + .switchMap(() => Observable.from(copyNodeFixes())) + .switchMap(() => replaceVersionsObservable('firebase-node', VERSIONS)) .do(() => { const coreStats = measure('core'); const authStats = measure('auth'); diff --git a/yarn.lock b/yarn.lock index ba44353fd..c6d0923b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -637,6 +637,16 @@ bindings@1.2.x, bindings@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" +bindings@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + +bl@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + dependencies: + readable-stream "^2.0.5" + bl@~0.9.0: version "0.9.5" resolved "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" @@ -882,6 +892,14 @@ bufferutil@1.2.x: bindings "1.2.x" nan "^2.0.5" +bufferutil@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-3.0.3.tgz#ce67caefde2282591e399528467fe623f68f4bd5" + dependencies: + bindings "~1.3.0" + nan "~2.7.0" + prebuild-install "~2.3.0" + buildmail@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" @@ -933,7 +951,7 @@ camelcase@^1.0.2: camelcase@^2.0.0, camelcase@^2.0.1: version "2.1.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" caseless@~0.10.0: version "0.10.0" @@ -1012,6 +1030,10 @@ chokidar@^1.4.2: optionalDependencies: fsevents "^1.0.0" +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1502,7 +1524,7 @@ debug@^3.1.0: decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" deep-extend@~0.4.0: version "0.4.1" @@ -1702,6 +1724,12 @@ end-of-stream@1.0.0: dependencies: once "~1.3.0" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + end-of-stream@~0.1.5: version "0.1.5" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" @@ -1880,6 +1908,10 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-template@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.0.tgz#e09efba977bf98f9ee0ed25abd0c692e02aec3fc" + expand-tilde@^1.2.1, expand-tilde@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" @@ -2227,6 +2259,10 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + github-url-from-git@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.4.0.tgz#285e6b520819001bde128674704379e4ff03e0de" @@ -3734,11 +3770,11 @@ multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" -nan@^2.0.5, nan@^2.3.0: +nan@^2.0.5, nan@^2.3.0, nan@~2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" -nan@^2.8.0: +nan@^2.8.0, nan@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" @@ -3762,6 +3798,12 @@ netmask@~1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" +node-abi@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.1.2.tgz#4da6caceb6685fcd31e7dd1994ef6bb7d0a9c0b2" + dependencies: + semver "^5.4.1" + node-pre-gyp@^0.6.29: version "0.6.38" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" @@ -3846,6 +3888,10 @@ nodemailer@^2.5.0: nodemailer-smtp-transport "2.7.2" socks "1.1.9" +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -3868,7 +3914,7 @@ normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" -npmlog@^4.0.2: +npmlog@^4.0.1, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -3914,7 +3960,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.3: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -4188,6 +4234,25 @@ portfinder@0.4.x: async "0.9.0" mkdirp "0.5.x" +prebuild-install@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.3.0.tgz#19481247df728b854ab57b187ce234211311b485" + dependencies: + expand-template "^1.0.2" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-abi "^2.1.1" + noop-logger "^0.1.1" + npmlog "^4.0.1" + os-homedir "^1.0.1" + pump "^1.0.1" + rc "^1.1.6" + simple-get "^1.4.2" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + xtend "4.0.1" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4268,6 +4333,13 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" +pump@^1.0.0, pump@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -4353,6 +4425,15 @@ raw-body@2, raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" +rc@^1.1.6: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" @@ -4729,7 +4810,7 @@ selenium-webdriver@2.48.2: ws "^0.8.0" xml2js "0.4.4" -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -4800,6 +4881,14 @@ signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +simple-get@^1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" + dependencies: + once "^1.3.1" + unzip-response "^1.0.0" + xtend "^4.0.0" + slack-node@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" @@ -5160,6 +5249,15 @@ systemjs@^0.19.16, systemjs@^0.19.43: dependencies: when "^3.7.5" +tar-fs@^1.13.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896" + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + tar-pack@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" @@ -5173,6 +5271,15 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" +tar-stream@^1.1.2: + version "1.5.5" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -5434,6 +5541,10 @@ unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +unzip-response@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + url-join@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" @@ -5463,6 +5574,14 @@ utf-8-validate@1.2.x: bindings "~1.2.1" nan "~2.4.0" +utf-8-validate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-4.0.0.tgz#93812f447b6fd11a3dad4302d5870830cae8470a" + dependencies: + bindings "~1.3.0" + nan "~2.8.0" + prebuild-install "~2.3.0" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -5650,6 +5769,14 @@ ws@^0.8.0: bufferutil "1.2.x" utf-8-validate "1.2.x" +ws@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -5685,7 +5812,7 @@ xregexp@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +xtend@4.0.1, "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"