@forge/cli-shared

9.3.1-next.2-experimental-f258a6d9.4.0-next.3
out/apps/template.js
~out/apps/template.jsModified
+10−4
Index: package/out/apps/template.js
===================================================================
--- package/out/apps/template.js
+++ package/out/apps/template.js
@@ -3,8 +3,9 @@
 exports.ComposableTemplater = exports.TemplateServiceLister = exports.TemplateFetchError = exports.ZipTemplateExtractor = exports.TemplateServiceDownloader = exports.InvalidTemplateArchiveError = exports.NoTemplateError = void 0;
 const tslib_1 = require("tslib");
 const fs_1 = tslib_1.__importDefault(require("fs"));
 const fs_extra_1 = require("fs-extra");
+const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
 const path_1 = require("path");
 const tmp_1 = tslib_1.__importDefault(require("tmp"));
 const url_1 = require("url");
 const error_handling_1 = require("../shared/error-handling");
@@ -22,14 +23,19 @@
 exports.InvalidTemplateArchiveError = InvalidTemplateArchiveError;
 class TemplateServiceDownloader {
     async download(template, zipFile) {
         const zipUrl = this.buildZipUrl(template);
-        const response = await fetch(zipUrl);
+        const fileStream = fs_1.default.createWriteStream(zipFile);
+        const response = await (0, node_fetch_1.default)(zipUrl);
         if (!response.ok) {
             throw new NoTemplateError(template);
         }
-        const zipBytes = await response.arrayBuffer();
-        fs_1.default.writeFileSync(zipFile, Buffer.from(zipBytes));
+        await new Promise((resolve) => {
+            fileStream.on('finish', (...args) => {
+                resolve(args);
+            });
+            response.body.pipe(fileStream);
+        });
     }
     buildZipUrl(template) {
         return new url_1.URL(`${template}.zip`, TEMPLATE_SERVICE_URL);
     }
@@ -81,9 +87,9 @@
         }
         return false;
     }
     async getAvailableTemplates() {
-        const res = await fetch(new url_1.URL(TEMPLATE_MAP, TEMPLATE_SERVICE_URL));
+        const res = await (0, node_fetch_1.default)(new url_1.URL(TEMPLATE_MAP, TEMPLATE_SERVICE_URL));
         if (!res.ok) {
             throw new TemplateFetchError(res.statusText);
         }
         const json = await res.json();