]> git.proxmox.com Git - mirror_novnc.git/blobdiff - utils/use_require.js
Always include Promise polyfill for legacy browsers
[mirror_novnc.git] / utils / use_require.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(() => {