@todesktop/cli 1.7.6 → 1.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -989,7 +989,11 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
989
989
 
990
990
  ## Changelog
991
991
 
992
- ### v.7.6
992
+ ### v1.7.7
993
+
994
+ - Report errors when S3 upload fails and retry 3 times
995
+
996
+ ### v1.7.6
993
997
 
994
998
  - Add support for multiple app protocol schemes
995
999
 
package/dist/cli.js CHANGED
@@ -1931,35 +1931,55 @@ var generateS3Key_default = ({ appId, buildId, filenameSuffix }) => `${appId}/so
1931
1931
 
1932
1932
  // src/utilities/uploadToS3.ts
1933
1933
  var import_superagent = __toESM(require("superagent"));
1934
- var import_util = __toESM(require("util"));
1935
1934
  var import_stream_to_array = __toESM(require("stream-to-array"));
1936
1935
  var { TODESKTOP_CLI_S3_BUCKET } = getEnvironmentVariables_default();
1937
- var uploadToS3_default = async ({
1936
+ var MAX_RETRIES = 3;
1937
+ var RETRY_DELAY = 2e3;
1938
+ var delay = (ms) => new Promise((resolve4) => setTimeout(resolve4, ms));
1939
+ var uploadToS3WithRetry = async (input, retries = MAX_RETRIES) => {
1940
+ try {
1941
+ return await uploadToS3(input);
1942
+ } catch (error) {
1943
+ if (retries > 0) {
1944
+ logger_default.warn(
1945
+ `Upload failed. Retrying... (${MAX_RETRIES - retries + 1} of ${MAX_RETRIES})`
1946
+ );
1947
+ await delay(RETRY_DELAY);
1948
+ return uploadToS3WithRetry(input, retries - 1);
1949
+ } else {
1950
+ logger_default.error("All retries exhausted. Upload failed.");
1951
+ throw error;
1952
+ }
1953
+ }
1954
+ };
1955
+ var uploadToS3 = async ({
1938
1956
  bucket = TODESKTOP_CLI_S3_BUCKET,
1939
1957
  inputStream,
1940
1958
  key,
1941
1959
  onProgress = () => {
1942
1960
  }
1943
1961
  }) => {
1944
- const { data } = await getCallableFirebaseFunction_default("getSignedURL")({
1962
+ const getSignedURL = getCallableFirebaseFunction_default("getSignedURL");
1963
+ const { data } = await getSignedURL({
1945
1964
  key
1946
1965
  });
1947
- const body = await new Promise((resolve4) => {
1948
- (0, import_stream_to_array.default)(inputStream).then(function(parts) {
1949
- const buffers = parts.map(
1950
- (part) => import_util.default.isBuffer(part) ? part : Buffer.from(part)
1951
- );
1952
- return resolve4(Buffer.concat(buffers));
1953
- });
1954
- });
1955
- return new Promise((resolve4) => {
1956
- import_superagent.default.put(data.signedURL).send(body).set("content-type", "application/zip").on("progress", (event) => onProgress(event)).end(() => {
1966
+ const parts = await (0, import_stream_to_array.default)(inputStream);
1967
+ const buffers = parts.map(
1968
+ (part) => Buffer.isBuffer(part) ? part : Buffer.from(part)
1969
+ );
1970
+ const body = Buffer.concat(buffers);
1971
+ return new Promise((resolve4, reject) => {
1972
+ import_superagent.default.put(data.signedURL).send(body).set("content-type", "application/zip").on("progress", onProgress).end((err) => {
1957
1973
  logger_default.debug({ bucket, key, url: data.uploadURL }, "uploadToS3");
1958
- resolve4({ bucket, key, url: data.uploadURL });
1974
+ if (err) {
1975
+ logger_default.error({ err }, "uploadToS3");
1976
+ return reject(err);
1977
+ }
1978
+ return resolve4({ bucket, key, url: data.uploadURL });
1959
1979
  });
1960
- return { bucket, key, url: data.uploadURL };
1961
1980
  });
1962
1981
  };
1982
+ var uploadToS3_default = uploadToS3WithRetry;
1963
1983
 
1964
1984
  // src/utilities/zip.ts
1965
1985
  var import_archiver = __toESM(require("archiver"));
@@ -3389,7 +3409,7 @@ var getRelativeDateFromDateString_default = (input) => dateFns.formatDistance(ne
3389
3409
  var import_chalk2 = __toESM(require("chalk"));
3390
3410
  var React3 = __toESM(require("react"));
3391
3411
  var import_ink25 = require("ink");
3392
- var import_util2 = __toESM(require("util"));
3412
+ var import_util = __toESM(require("util"));
3393
3413
  var import_jsx_runtime28 = require("react/jsx-runtime");
3394
3414
  var supportsColor = import_chalk2.default.stderr.supportsColor;
3395
3415
  var SyntaxHighlight = ({
@@ -3398,7 +3418,7 @@ var SyntaxHighlight = ({
3398
3418
  }) => {
3399
3419
  const { stdout } = (0, import_ink25.useStdout)();
3400
3420
  const highlightedCode = React3.useMemo(() => {
3401
- return stdout.isTTY ? import_util2.default.inspect(object, { colors, depth: 6 }) : JSON.stringify(object, null, 2);
3421
+ return stdout.isTTY ? import_util.default.inspect(object, { colors, depth: 6 }) : JSON.stringify(object, null, 2);
3402
3422
  }, [colors, object, stdout.isTTY]);
3403
3423
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_ink25.Text, { wrap: "end", children: highlightedCode });
3404
3424
  };
@@ -4800,7 +4820,7 @@ var package_default = {
4800
4820
  access: "public"
4801
4821
  },
4802
4822
  name: "@todesktop/cli",
4803
- version: "1.7.5",
4823
+ version: "1.7.6",
4804
4824
  license: "MIT",
4805
4825
  author: "Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)",
4806
4826
  homepage: "https://todesktop.com/cli",
@@ -4882,6 +4902,7 @@ var package_default = {
4882
4902
  devDependencies: {
4883
4903
  "@todesktop/shared": "^7.186.6",
4884
4904
  "@types/bunyan": "^1.8.6",
4905
+ "@types/node": "^20.8.4",
4885
4906
  "@types/react": "^18.0.26",
4886
4907
  "@typescript-eslint/eslint-plugin": "^5.46.1",
4887
4908
  "@typescript-eslint/parser": "^5.46.1",