From b88a92afe8a4c2415e1827c2422eeb53025e55c3 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 11 Nov 2019 13:36:30 +0100 Subject: [PATCH] Always include Promise polyfill for legacy browsers 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 | 31 ++++++++++++++++++++++++------- utils/use_require_helpers.js | 10 +--------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/utils/use_require.js b/utils/use_require.js index 4cb6296..d2d9769 100755 --- a/utils/use_require.js +++ b/utils/use_require.js @@ -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(() => { diff --git a/utils/use_require_helpers.js b/utils/use_require_helpers.js index a4f99c7..ec5da0d 100644 --- a/utils/use_require_helpers.js +++ b/utils/use_require_helpers.js @@ -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) => { -- 2.39.2