]> git.proxmox.com Git - mirror_novnc.git/blobdiff - utils/use_require_helpers.js
Convert use_require.js to use promises
[mirror_novnc.git] / utils / use_require_helpers.js
index 990fb4df2481331e5998c7b91c39a377bba3dd40..66598543025526b35c1bc1b43f9f716f8f254775 100644 (file)
@@ -3,13 +3,31 @@ var fs = require('fs');
 var fse = require('fs-extra');
 var path = require('path');
 
+// util.promisify requires Node.js 8.x, so we have our own
+function promisify(original) {
+    return function () {
+        let obj = this;
+        let args = Array.prototype.slice.call(arguments);
+        return new Promise((resolve, reject) => {
+            original.apply(obj, args.concat((err, value) => {
+                if (err) return reject(err);
+                resolve(value);
+            }));
+        });
+    }
+}
+
+const writeFile = promisify(fs.writeFile);
+
 module.exports = {
     'amd': {
         appWriter: (base_out_path, out_path) => {
             // setup for requirejs
-            fs.writeFile(out_path, 'requirejs(["app/ui"], function (ui) {});', (err) => { if (err) throw err; });
-            console.log(`Please place RequireJS in ${path.join(base_out_path, 'require.js')}`);
-            return `<script src="require.js" data-main="${path.relative(base_out_path, out_path)}"></script>`;
+            return writeFile(out_path, 'requirejs(["app/ui"], function (ui) {});')
+            .then(() => {
+                console.log(`Please place RequireJS in ${path.join(base_out_path, 'require.js')}`);
+                return `<script src="require.js" data-main="${path.relative(base_out_path, out_path)}"></script>`;
+            });
         },
         noCopyOverride: () => {},
     },
@@ -21,17 +39,20 @@ module.exports = {
         appWriter: (base_out_path, out_path) => {
             var browserify = require('browserify');
             var b = browserify(path.join(base_out_path, 'app/ui.js'), {});
-            b.bundle().pipe(fs.createWriteStream(out_path));
-            return `<script src="${path.relative(base_out_path, out_path)}"></script>`;
+            return promisify(b.bundle).call(b)
+            .then((buf) => writeFile(out_path, buf))
+            .then(() => `<script src="${path.relative(base_out_path, out_path)}"></script>`);
         },
         noCopyOverride: () => {},
     },
     'systemjs': {
         appWriter: (base_out_path, out_path) => {
-            fs.writeFile(out_path, 'SystemJS.import("./app/ui.js");', (err) => { if (err) throw err; });
-            console.log(`Please place SystemJS in ${path.join(base_out_path, 'system-production.js')}`);
-            return `<script src="vendor/promise.js"></script>
+            return writeFile(out_path, 'SystemJS.import("./app/ui.js");')
+            .then(() => {
+                console.log(`Please place SystemJS in ${path.join(base_out_path, 'system-production.js')}`);
+                return `<script src="vendor/promise.js"></script>
 <script src="system-production.js"></script>\n<script src="${path.relative(base_out_path, out_path)}"></script>`;
+            });
         },
         noCopyOverride: (paths, no_copy_files) => {
             no_copy_files.delete(path.join(paths.vendor, 'promise.js'));