From 3ea9a1c311c3e3c55fb95560d4dd99a77c52df4a Mon Sep 17 00:00:00 2001 From: William Lahti Date: Thu, 28 Jun 2018 06:53:04 -0700 Subject: [PATCH] Replace angular-cli patch with something less risky (#742) * Replace angular-cli patch with something less risky * path.join() is needed, provide a naive implementation * technically, webpack provided a polyfill for Buffer, we should too * process polyfill matches webpack; peertube depends on nextTick * polyfill for path to match webpack * http/https polyfills as per webpack --- client/angular-cli-patch.js | 15 --------------- client/package.json | 7 ++++++- client/src/polyfills.ts | 6 ++++++ client/src/shims/http.ts | 1 + client/src/shims/https.ts | 1 + client/src/shims/noop.ts | 3 +++ client/src/shims/path.ts | 1 + client/tsconfig.json | 8 +++++++- 8 files changed, 25 insertions(+), 17 deletions(-) delete mode 100644 client/angular-cli-patch.js create mode 100644 client/src/shims/http.ts create mode 100644 client/src/shims/https.ts create mode 100644 client/src/shims/noop.ts create mode 100644 client/src/shims/path.ts diff --git a/client/angular-cli-patch.js b/client/angular-cli-patch.js deleted file mode 100644 index 0829631c2..000000000 --- a/client/angular-cli-patch.js +++ /dev/null @@ -1,15 +0,0 @@ -// Remove patch when https://github.com/angular/angular-cli/issues/10681#issuecomment-389160125 is closed - -const fs = require('fs'); -const f = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js'; - -fs.readFile(f, 'utf8', function (err,data) { - if (err) { - return console.log(err); - } - var result = data.replace(/node: false/g, 'node: { global: true, crypto: "empty", fs: "empty", process: true, module: false, clearImmediate: false, setImmediate: false }'); - - fs.writeFile(f, result, 'utf8', function (err) { - if (err) return console.log(err); - }); -}); diff --git a/client/package.json b/client/package.json index 0c2fdcafe..1264891ec 100644 --- a/client/package.json +++ b/client/package.json @@ -17,7 +17,7 @@ "webpack": "webpack", "tslint": "tslint", "ng": "ng", - "postinstall": "npm rebuild node-sass && test -f angular-cli-patch.js && node angular-cli-patch.js || true", + "postinstall": "npm rebuild node-sass", "webpack-bundle-analyzer": "webpack-bundle-analyzer", "webdriver-manager": "webdriver-manager", "ngx-extractor": "ngx-extractor" @@ -61,6 +61,7 @@ "angular2-notifications": "^1.0.2", "awesome-typescript-loader": "5.0.0", "bootstrap-sass": "^3.3.7", + "buffer": "^5.1.0", "cache-chunk-store": "^2.0.0", "codelyzer": "^4.0.2", "core-js": "^2.4.1", @@ -69,6 +70,7 @@ "extract-text-webpack-plugin": "4.0.0-beta.0", "file-loader": "^1.1.5", "html-webpack-plugin": "^3.2.0", + "https-browserify": "^1.0.0", "jasmine-core": "^3.1.0", "jasmine-spec-reporter": "^4.2.1", "karma": "^2.0.2", @@ -85,7 +87,9 @@ "ngx-pipes": "^2.1.7", "node-sass": "^4.1.1", "npm-font-source-sans-pro": "^1.0.2", + "path-browserify": "^1.0.0", "primeng": "^6.0.0-rc.1", + "process": "^0.11.10", "protractor": "^5.3.2", "purify-css": "^1.2.5", "purifycss-webpack": "^0.7.0", @@ -95,6 +99,7 @@ "sanitize-html": "^1.16.3", "sass-loader": "^7.0.1", "sass-resources-loader": "^1.2.1", + "stream-http": "^2.8.3", "tslint": "^5.7.0", "tslint-config-standard": "^7.0.0", "typescript": "2.7", diff --git a/client/src/polyfills.ts b/client/src/polyfills.ts index 423a7b915..eec30760d 100644 --- a/client/src/polyfills.ts +++ b/client/src/polyfills.ts @@ -80,3 +80,9 @@ import 'zone.js/dist/zone' // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS */ + +// global/process polyfills + +;(window as any).global = window; +;(window as any).process = require('process/'); +;(window as any).Buffer = require('buffer/').Buffer; diff --git a/client/src/shims/http.ts b/client/src/shims/http.ts new file mode 100644 index 000000000..a759400cb --- /dev/null +++ b/client/src/shims/http.ts @@ -0,0 +1 @@ +module.exports = require('stream-http'); \ No newline at end of file diff --git a/client/src/shims/https.ts b/client/src/shims/https.ts new file mode 100644 index 000000000..1da6f8adb --- /dev/null +++ b/client/src/shims/https.ts @@ -0,0 +1 @@ +module.exports = require('https-browserify'); \ No newline at end of file diff --git a/client/src/shims/noop.ts b/client/src/shims/noop.ts new file mode 100644 index 000000000..338e16104 --- /dev/null +++ b/client/src/shims/noop.ts @@ -0,0 +1,3 @@ +// Does nothing. Used to shim out node.js modules +// which are no-ops in the browser. +export const NOOP = 0; \ No newline at end of file diff --git a/client/src/shims/path.ts b/client/src/shims/path.ts new file mode 100644 index 000000000..74b6913d8 --- /dev/null +++ b/client/src/shims/path.ts @@ -0,0 +1 @@ +module.exports = require('path-browserify'); \ No newline at end of file diff --git a/client/tsconfig.json b/client/tsconfig.json index cb6d39245..60c343867 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -20,7 +20,13 @@ "baseUrl": "src", "paths": { "@app/*": [ "app/*" ], - "video.js": [ "../node_modules/video.js/dist/alt/video.core.js" ] + "video.js": [ "../node_modules/video.js/dist/alt/video.core.js" ], + "fs": [ "./shims/noop" ], + "http": [ "./shims/http" ], + "https": [ "./shims/https" ], + "path": [ "./shims/path" ], + "stream": [ "./shims/noop" ], + "crypto": [ "./shims/noop" ] } } }