eas-cli 16.14.1 → 16.15.0
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 +80 -80
- package/build/commands/deploy/index.js +47 -49
- package/build/worker/assets.d.ts +19 -13
- package/build/worker/assets.js +49 -20
- package/build/worker/upload.d.ts +21 -9
- package/build/worker/upload.js +102 -80
- package/build/worker/utils/multipart.d.ts +10 -0
- package/build/worker/utils/multipart.js +63 -0
- package/oclif.manifest.json +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMultipartBodyFromFilesAsync = exports.multipartContentType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
|
|
6
|
+
const CRLF = '\r\n';
|
|
7
|
+
const BOUNDARY_HYPHEN_CHARS = '--';
|
|
8
|
+
const BOUNDARY_ID = '----formdata-eas-cli';
|
|
9
|
+
const FORM_FOOTER = `${BOUNDARY_HYPHEN_CHARS}${BOUNDARY_ID}${BOUNDARY_HYPHEN_CHARS}${CRLF}${CRLF}`;
|
|
10
|
+
const encodeName = (input) => {
|
|
11
|
+
return input.replace(/["\n\\]/g, (c) => {
|
|
12
|
+
switch (c) {
|
|
13
|
+
case '\\':
|
|
14
|
+
return '\\\\';
|
|
15
|
+
case '"':
|
|
16
|
+
return '%22';
|
|
17
|
+
case '\n':
|
|
18
|
+
return '%0A';
|
|
19
|
+
default:
|
|
20
|
+
return `%${c.charCodeAt(0).toString(16).toUpperCase()}`;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
async function* createReadStreamAsync(filePath) {
|
|
25
|
+
for await (const raw of node_fs_1.default.createReadStream(filePath)) {
|
|
26
|
+
const chunk = raw;
|
|
27
|
+
yield new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const makeFormHeader = (params) => {
|
|
31
|
+
const name = encodeName(params.name);
|
|
32
|
+
let header = BOUNDARY_HYPHEN_CHARS + BOUNDARY_ID + CRLF;
|
|
33
|
+
header += `Content-Disposition: form-data; name="${name}"; filename="${name}"`;
|
|
34
|
+
if (params.contentType) {
|
|
35
|
+
header += `${CRLF}Content-Type: ${params.contentType}`;
|
|
36
|
+
}
|
|
37
|
+
if (params.contentLength) {
|
|
38
|
+
header += `${CRLF}Content-Length: ${params.contentLength}`;
|
|
39
|
+
}
|
|
40
|
+
header += CRLF;
|
|
41
|
+
header += CRLF;
|
|
42
|
+
return header;
|
|
43
|
+
};
|
|
44
|
+
exports.multipartContentType = `multipart/form-data; boundary=${BOUNDARY_ID}`;
|
|
45
|
+
async function* createMultipartBodyFromFilesAsync(entries, onProgressUpdate) {
|
|
46
|
+
const encoder = new TextEncoder();
|
|
47
|
+
for (let idx = 0; idx < entries.length; idx++) {
|
|
48
|
+
const entry = entries[idx];
|
|
49
|
+
const header = makeFormHeader({
|
|
50
|
+
name: entry.name,
|
|
51
|
+
contentType: entry.contentType,
|
|
52
|
+
contentLength: entry.contentLength,
|
|
53
|
+
});
|
|
54
|
+
yield encoder.encode(header);
|
|
55
|
+
yield* createReadStreamAsync(entry.filePath);
|
|
56
|
+
yield encoder.encode(CRLF);
|
|
57
|
+
if (onProgressUpdate) {
|
|
58
|
+
onProgressUpdate((idx + 1) / entries.length);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
yield encoder.encode(FORM_FOOTER);
|
|
62
|
+
}
|
|
63
|
+
exports.createMultipartBodyFromFilesAsync = createMultipartBodyFromFilesAsync;
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eas-cli",
|
|
3
3
|
"description": "EAS command line tool",
|
|
4
|
-
"version": "16.
|
|
4
|
+
"version": "16.15.0",
|
|
5
5
|
"author": "Expo <support@expo.dev>",
|
|
6
6
|
"bin": {
|
|
7
7
|
"eas": "./bin/run"
|
|
@@ -241,5 +241,5 @@
|
|
|
241
241
|
"node": "20.11.0",
|
|
242
242
|
"yarn": "1.22.21"
|
|
243
243
|
},
|
|
244
|
-
"gitHead": "
|
|
244
|
+
"gitHead": "72f3ba817fcf4f210ef9786c2346d76ce32a0378"
|
|
245
245
|
}
|