@forge/cli-shared
9.3.1-next.1-experimental-0b00ed89.3.1-next.2
out/http-client/file-uploader.js~
out/http-client/file-uploader.jsModified+9−36
Index: package/out/http-client/file-uploader.js
===================================================================
--- package/out/http-client/file-uploader.js
+++ package/out/http-client/file-uploader.js
@@ -1,11 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpFileUploader = exports.UploadFileEmptyError = exports.UploadFileNotFoundError = exports.CannotUploadFileError = void 0;
const tslib_1 = require("tslib");
-const http_1 = tslib_1.__importDefault(require("http"));
-const https_1 = tslib_1.__importDefault(require("https"));
-const url_1 = require("url");
+const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
const ui_1 = require("../ui");
class CannotUploadFileError extends Error {
}
exports.CannotUploadFileError = CannotUploadFileError;
@@ -14,9 +12,8 @@
exports.UploadFileNotFoundError = UploadFileNotFoundError;
class UploadFileEmptyError extends Error {
}
exports.UploadFileEmptyError = UploadFileEmptyError;
-const NODE_REQUEST_TIMEOUT_MS = 30_000;
const validateFileContents = (filePath, fileContents) => {
if (!fileContents) {
throw new UploadFileNotFoundError(ui_1.Text.upload.error.notFound(filePath));
}
@@ -29,48 +26,24 @@
if (!response.ok) {
throw new CannotUploadFileError(ui_1.Text.upload.error.status(response.status, await response.text()));
}
};
-const uploadWithNodeRequest = (url, headers, fileContents) => {
- return new Promise((resolve, reject) => {
- const parsedUrl = new url_1.URL(url);
- const transport = parsedUrl.protocol === 'https:' ? https_1.default : http_1.default;
- const request = transport.request(parsedUrl, {
- method: 'PUT',
- headers
- }, (response) => {
- const chunks = [];
- response.on('data', (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
- response.on('end', () => {
- const body = Buffer.concat(chunks).toString('utf-8');
- resolve(new Response(body, {
- status: response.statusCode ?? 500,
- statusText: response.statusMessage,
- headers: response.headers
- }));
- });
- });
- request.setTimeout(NODE_REQUEST_TIMEOUT_MS, () => {
- request.destroy(new Error(`Request timed out after ${NODE_REQUEST_TIMEOUT_MS}ms`));
- });
- request.on('error', reject);
- request.write(fileContents);
- request.end();
- });
-};
class HttpFileUploader {
fileSystem;
constructor(fileSystem) {
this.fileSystem = fileSystem;
}
async uploadFromPath(url, filePath) {
const fileContents = this.fileSystem.readBinaryFile(filePath);
const validFileContents = validateFileContents(filePath, fileContents);
- const headers = {
- 'Content-Type': 'application/zip',
- 'Content-Length': validFileContents.length.toString()
- };
- const response = await uploadWithNodeRequest(url, headers, validFileContents);
+ const response = await (0, node_fetch_1.default)(url, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/zip',
+ 'Content-Length': validFileContents.length.toString()
+ },
+ body: validFileContents
+ });
await checkResponse(response);
}
}
exports.HttpFileUploader = HttpFileUploader;