@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 +5 -1
- package/dist/cli.js +39 -18
- package/dist/cli.js.map +3 -3
- package/package.json +2 -1
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
|
-
###
|
|
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
|
|
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
|
|
1962
|
+
const getSignedURL = getCallableFirebaseFunction_default("getSignedURL");
|
|
1963
|
+
const { data } = await getSignedURL({
|
|
1945
1964
|
key
|
|
1946
1965
|
});
|
|
1947
|
-
const
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
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
|
-
|
|
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
|
|
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 ?
|
|
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.
|
|
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",
|