]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Always include Promise polyfill for legacy browsers
authorPierre Ossman <ossman@cendio.se>
Mon, 11 Nov 2019 12:36:30 +0000 (13:36 +0100)
committerPierre Ossman <ossman@cendio.se>
Mon, 11 Nov 2019 12:36:30 +0000 (13:36 +0100)
It is now used by our general code and not just by the conversion
routines, so we need to make sure it is always included for the
old browsers.

utils/use_require.js
utils/use_require_helpers.js

index 4cb6296d068cee1f96577e03f23fb99817df4c82..d2d976903f06db1a06f0747c68a2bd535fb4d621 100755 (executable)
@@ -30,10 +30,13 @@ const no_copy_files = new Set([
     // skip these -- they don't belong in the processed application
     path.join(paths.vendor, 'sinon.js'),
     path.join(paths.vendor, 'browser-es-module-loader'),
-    path.join(paths.vendor, 'promise.js'),
     path.join(paths.app, 'images', 'icons', 'Makefile'),
 ]);
 
+const only_legacy_scripts = new Set([
+    path.join(paths.vendor, 'promise.js'),
+]);
+
 const no_transform_files = new Set([
     // don't transform this -- we want it imported as-is to properly catch loading errors
     path.join(paths.app, 'error-handler.js'),
@@ -158,6 +161,7 @@ function make_lib_files(import_format, source_maps, with_app_dir, only_legacy) {
     const helper = helpers[import_format];
 
     const outFiles = [];
+    const legacyFiles = [];
 
     const handleDir = (js_only, vendor_rewrite, in_path_base, filename) => Promise.resolve()
         .then(() => {
@@ -180,6 +184,15 @@ function make_lib_files(import_format, source_maps, with_app_dir, only_legacy) {
                     });
             }
 
+            if (only_legacy_scripts.has(filename)) {
+                legacyFiles.push(legacy_path);
+                return ensureDir(path.dirname(legacy_path))
+                    .then(() => {
+                        console.log(`Writing ${legacy_path}`);
+                        return copy(filename, legacy_path);
+                    });
+            }
+
             return Promise.resolve()
                 .then(() => {
                     if (only_legacy) {
@@ -227,10 +240,6 @@ function make_lib_files(import_format, source_maps, with_app_dir, only_legacy) {
                 });
         });
 
-    if (with_app_dir && helper && helper.noCopyOverride) {
-        helper.noCopyOverride(paths, no_copy_files);
-    }
-
     Promise.resolve()
         .then(() => {
             const handler = handleDir.bind(null, true, false, in_path || paths.main);
@@ -259,8 +268,16 @@ function make_lib_files(import_format, source_maps, with_app_dir, only_legacy) {
             console.log(`Writing ${out_app_path}`);
             return helper.appWriter(out_path_base, legacy_path_base, out_app_path)
                 .then((extra_scripts) => {
-                    const rel_app_path = path.relative(out_path_base, out_app_path);
-                    const legacy_scripts = extra_scripts.concat([rel_app_path]);
+                    let legacy_scripts = extra_scripts;
+
+                    legacyFiles.forEach((file) => {
+                        let rel_file_path = path.relative(out_path_base, file);
+                        legacy_scripts.push(rel_file_path);
+                    });
+
+                    let rel_app_path = path.relative(out_path_base, out_app_path);
+                    legacy_scripts.push(rel_app_path);
+
                     transform_html(legacy_scripts, only_legacy);
                 })
                 .then(() => {
index a4f99c7045ca504ad1330e9df33fff783c1b315a..ec5da0d1924b16de8070544c23c55982074780d5 100644 (file)
@@ -31,7 +31,6 @@ module.exports = {
                     return [ require_path ];
                 });
         },
-        noCopyOverride: () => {},
     },
     'commonjs': {
         optionsOverride: (opts) => {
@@ -45,7 +44,6 @@ module.exports = {
                 .then(buf => writeFile(out_path, buf))
                 .then(() => []);
         },
-        noCopyOverride: () => {},
         removeModules: true,
     },
     'systemjs': {
@@ -55,17 +53,11 @@ module.exports = {
             return writeFile(out_path, `SystemJS.import("${ui_path}");`)
                 .then(() => {
                     console.log(`Please place SystemJS in ${path.join(script_base_path, 'system-production.js')}`);
-                // FIXME: Should probably be in the legacy directory
-                    const promise_path = path.relative(base_out_path,
-                                                       path.join(base_out_path, 'vendor', 'promise.js'));
                     const systemjs_path = path.relative(base_out_path,
                                                         path.join(script_base_path, 'system-production.js'));
-                    return [ promise_path, systemjs_path ];
+                    return [ systemjs_path ];
                 });
         },
-        noCopyOverride: (paths, no_copy_files) => {
-            no_copy_files.delete(path.join(paths.vendor, 'promise.js'));
-        },
     },
     'umd': {
         optionsOverride: (opts) => {