@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();