]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/polyfills.ts
advertising PeerTube's rather simple DNT policy
[github/Chocobozzz/PeerTube.git] / client / src / polyfills.ts
index 65e211459ba76a3dae8adfc8e350061e0020073a..eec30760df211f2c3eee5c31301f5770cc98ef22 100644 (file)
@@ -1,11 +1,26 @@
-// Polyfills
-// (these modules are what are in 'angular2/bundles/angular2-polyfills' so don't use that here)
+/**
+ * This file includes polyfills needed by Angular and is loaded before the app.
+ * You can add your own extra polyfills to this file.
+ *
+ * This file is divided into 2 sections:
+ *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
+ *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
+ *      file.
+ *
+ * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
+ *
+ * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
+ */
 
-require('intl');
-require('intl/locale-data/jsonp/en.js');
-import 'ie-shim'; // Internet Explorer
+/***************************************************************************************************
+ * BROWSER POLYFILLS
+ */
 
-// Prefer CoreJS over the polyfills above
+/** IE9, IE10 and IE11 requires all of the following polyfills. **/
+
+// For Google Bot
 import 'core-js/es6/symbol';
 import 'core-js/es6/object';
 import 'core-js/es6/function';
@@ -18,22 +33,56 @@ import 'core-js/es6/date';
 import 'core-js/es6/array';
 import 'core-js/es6/regexp';
 import 'core-js/es6/map';
-import 'core-js/es6/set';
 import 'core-js/es6/weak-map';
-import 'core-js/es6/weak-set';
-import 'core-js/es6/typed';
+import 'core-js/es6/set';
+import 'core-js/es7/object';
+
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
+// import 'classlist.js';  // Run `npm install --save classlist.js`.
+
+/** IE10 and IE11 requires the following for the Reflect API. */
+
+// For Google Bot
 import 'core-js/es6/reflect';
-// see issue https://github.com/AngularClass/angular2-webpack-starter/issues/709
-// import 'core-js/es6/promise';
 
-import 'core-js/es7/reflect';
-import 'zone.js/dist/zone';
+/** Evergreen browsers require these. **/
+// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
+import 'core-js/es7/reflect'
+
+
+/**
+ * Required to support Web Animations `@angular/platform-browser/animations`.
+ * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
+ **/
+// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
+
+/**
+ * By default, zone.js will patch all possible macroTask and DomEvents
+ * user can disable parts of macroTask/DomEvents patch by setting following flags
+ */
+
+// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
+// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
+// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
+/*
+* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
+* with the following flag, it will bypass `zone.js` patch for IE/Edge
+*/
+// (window as any).__Zone_enable_cross_context_check = true;
+
+
+/***************************************************************************************************
+ * Zone JS is required by default for Angular itself.
+ */
+import 'zone.js/dist/zone'  // Included with Angular CLI.
+
 
-// Typescript emit helpers polyfill
-import 'ts-helpers';
+/***************************************************************************************************
+ * APPLICATION IMPORTS
+ */
 
-if ('production' !== ENV) {
-  Error.stackTraceLimit = Infinity;
+// global/process polyfills
 
-  require('zone.js/dist/long-stack-trace-zone');
-}
+;(window as any).global = window;
+;(window as any).process = require('process/');
+;(window as any).Buffer = require('buffer/').Buffer;