@todesktop/cli 1.7.5 → 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 +10 -2
- package/dist/cli.js +50 -20
- package/dist/cli.js.map +3 -3
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -239,11 +239,11 @@ The path can be absolute or a relative path from the project root. The directory
|
|
|
239
239
|
|
|
240
240
|
Side note: if your `package.json` contains a `postinstall` script which references scripts, these must be accessible within the `appPath` directory as only the `appPath` is uploaded to our servers.
|
|
241
241
|
|
|
242
|
-
### `appProtocolScheme` - (optional) string
|
|
242
|
+
### `appProtocolScheme` - (optional) string | string[]
|
|
243
243
|
|
|
244
244
|
Default: no protocol scheme is registered.
|
|
245
245
|
|
|
246
|
-
Example: `word`.
|
|
246
|
+
Example: `word` or `[word, ...]`.
|
|
247
247
|
|
|
248
248
|
If you want to register a protocol for your application (e.g. `example://`) and or support deeplinking, you will need to use this option. If your desired protocol is `example://`, you would set `"appProtocolScheme": "example"`. NOTE: these features also require additional application logic.
|
|
249
249
|
|
|
@@ -989,6 +989,14 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
|
|
|
989
989
|
|
|
990
990
|
## Changelog
|
|
991
991
|
|
|
992
|
+
### v1.7.7
|
|
993
|
+
|
|
994
|
+
- Report errors when S3 upload fails and retry 3 times
|
|
995
|
+
|
|
996
|
+
### v1.7.6
|
|
997
|
+
|
|
998
|
+
- Add support for multiple app protocol schemes
|
|
999
|
+
|
|
992
1000
|
### v1.7.5
|
|
993
1001
|
|
|
994
1002
|
- Add support for specifying custom `npmVersion` in config
|
package/dist/cli.js
CHANGED
|
@@ -1449,7 +1449,16 @@ var full_default = (context) => {
|
|
|
1449
1449
|
},
|
|
1450
1450
|
minItems: 1
|
|
1451
1451
|
},
|
|
1452
|
-
appProtocolScheme: {
|
|
1452
|
+
appProtocolScheme: {
|
|
1453
|
+
oneOf: [
|
|
1454
|
+
{ type: "string", minLength: 1 },
|
|
1455
|
+
{
|
|
1456
|
+
type: "array",
|
|
1457
|
+
items: { type: "string", minLength: 1 },
|
|
1458
|
+
minItems: 1
|
|
1459
|
+
}
|
|
1460
|
+
]
|
|
1461
|
+
},
|
|
1453
1462
|
appPath: {
|
|
1454
1463
|
type: "string",
|
|
1455
1464
|
file: {
|
|
@@ -1922,35 +1931,55 @@ var generateS3Key_default = ({ appId, buildId, filenameSuffix }) => `${appId}/so
|
|
|
1922
1931
|
|
|
1923
1932
|
// src/utilities/uploadToS3.ts
|
|
1924
1933
|
var import_superagent = __toESM(require("superagent"));
|
|
1925
|
-
var import_util = __toESM(require("util"));
|
|
1926
1934
|
var import_stream_to_array = __toESM(require("stream-to-array"));
|
|
1927
1935
|
var { TODESKTOP_CLI_S3_BUCKET } = getEnvironmentVariables_default();
|
|
1928
|
-
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 ({
|
|
1929
1956
|
bucket = TODESKTOP_CLI_S3_BUCKET,
|
|
1930
1957
|
inputStream,
|
|
1931
1958
|
key,
|
|
1932
1959
|
onProgress = () => {
|
|
1933
1960
|
}
|
|
1934
1961
|
}) => {
|
|
1935
|
-
const
|
|
1962
|
+
const getSignedURL = getCallableFirebaseFunction_default("getSignedURL");
|
|
1963
|
+
const { data } = await getSignedURL({
|
|
1936
1964
|
key
|
|
1937
1965
|
});
|
|
1938
|
-
const
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
});
|
|
1946
|
-
return new Promise((resolve4) => {
|
|
1947
|
-
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) => {
|
|
1948
1973
|
logger_default.debug({ bucket, key, url: data.uploadURL }, "uploadToS3");
|
|
1949
|
-
|
|
1974
|
+
if (err) {
|
|
1975
|
+
logger_default.error({ err }, "uploadToS3");
|
|
1976
|
+
return reject(err);
|
|
1977
|
+
}
|
|
1978
|
+
return resolve4({ bucket, key, url: data.uploadURL });
|
|
1950
1979
|
});
|
|
1951
|
-
return { bucket, key, url: data.uploadURL };
|
|
1952
1980
|
});
|
|
1953
1981
|
};
|
|
1982
|
+
var uploadToS3_default = uploadToS3WithRetry;
|
|
1954
1983
|
|
|
1955
1984
|
// src/utilities/zip.ts
|
|
1956
1985
|
var import_archiver = __toESM(require("archiver"));
|
|
@@ -3380,7 +3409,7 @@ var getRelativeDateFromDateString_default = (input) => dateFns.formatDistance(ne
|
|
|
3380
3409
|
var import_chalk2 = __toESM(require("chalk"));
|
|
3381
3410
|
var React3 = __toESM(require("react"));
|
|
3382
3411
|
var import_ink25 = require("ink");
|
|
3383
|
-
var
|
|
3412
|
+
var import_util = __toESM(require("util"));
|
|
3384
3413
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
3385
3414
|
var supportsColor = import_chalk2.default.stderr.supportsColor;
|
|
3386
3415
|
var SyntaxHighlight = ({
|
|
@@ -3389,7 +3418,7 @@ var SyntaxHighlight = ({
|
|
|
3389
3418
|
}) => {
|
|
3390
3419
|
const { stdout } = (0, import_ink25.useStdout)();
|
|
3391
3420
|
const highlightedCode = React3.useMemo(() => {
|
|
3392
|
-
return stdout.isTTY ?
|
|
3421
|
+
return stdout.isTTY ? import_util.default.inspect(object, { colors, depth: 6 }) : JSON.stringify(object, null, 2);
|
|
3393
3422
|
}, [colors, object, stdout.isTTY]);
|
|
3394
3423
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_ink25.Text, { wrap: "end", children: highlightedCode });
|
|
3395
3424
|
};
|
|
@@ -4791,7 +4820,7 @@ var package_default = {
|
|
|
4791
4820
|
access: "public"
|
|
4792
4821
|
},
|
|
4793
4822
|
name: "@todesktop/cli",
|
|
4794
|
-
version: "1.7.
|
|
4823
|
+
version: "1.7.6",
|
|
4795
4824
|
license: "MIT",
|
|
4796
4825
|
author: "Dave Jeffery <dave@todesktop.com> (http://www.todesktop.com/)",
|
|
4797
4826
|
homepage: "https://todesktop.com/cli",
|
|
@@ -4871,8 +4900,9 @@ var package_default = {
|
|
|
4871
4900
|
"xdg-basedir": "^4.0.0"
|
|
4872
4901
|
},
|
|
4873
4902
|
devDependencies: {
|
|
4874
|
-
"@todesktop/shared": "^7.186.
|
|
4903
|
+
"@todesktop/shared": "^7.186.6",
|
|
4875
4904
|
"@types/bunyan": "^1.8.6",
|
|
4905
|
+
"@types/node": "^20.8.4",
|
|
4876
4906
|
"@types/react": "^18.0.26",
|
|
4877
4907
|
"@typescript-eslint/eslint-plugin": "^5.46.1",
|
|
4878
4908
|
"@typescript-eslint/parser": "^5.46.1",
|