@cubejs-backend/shared 1.7.19 → 1.7.21
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/dist/src/http-utils.d.ts
CHANGED
|
@@ -5,6 +5,23 @@ type ByteProgressCallback = (info: {
|
|
|
5
5
|
speed: string;
|
|
6
6
|
}) => void;
|
|
7
7
|
export declare function streamWithProgress(response: Response, progressCallback: ByteProgressCallback): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Extract a downloaded archive into `cwd`, which is created if missing.
|
|
10
|
+
*
|
|
11
|
+
* Dispatches on magic bytes, not the filename, because there is no filename to
|
|
12
|
+
* dispatch on: `streamWithProgress` saves downloads as
|
|
13
|
+
* `crypto.randomBytes(16).toString('hex')`, with no extension.
|
|
14
|
+
*
|
|
15
|
+
* Handles gzip (`.tar.gz` / `.tgz`), uncompressed tar and zip. Two gaps are
|
|
16
|
+
* deliberate and both throw a named error rather than failing obscurely: bzip2,
|
|
17
|
+
* and pre-POSIX v7 tars, which carry no `ustar` magic at offset 257 to detect them
|
|
18
|
+
* by.
|
|
19
|
+
*
|
|
20
|
+
* Neither backend writes outside `cwd`: `tar` strips a leading `/` on extraction and
|
|
21
|
+
* drops entries containing `..`, and `extract-zip` rejects entries that resolve outside
|
|
22
|
+
* the target.
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractArchive(archivePath: string, cwd: string): Promise<void>;
|
|
8
25
|
type DownloadAndExtractFile = {
|
|
9
26
|
showProgress: boolean;
|
|
10
27
|
cwd: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-utils.d.ts","sourceRoot":"","sources":["../../src/http-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-utils.d.ts","sourceRoot":"","sources":["../../src/http-utils.ts"],"names":[],"mappings":"AAEA,OAAc,EAAoB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAc/D,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAE7F,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC,CA2CjB;AA4CD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDpF;AAED,KAAK,sBAAsB,GAAG;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,sBAAsB,iBAmDlH;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKpE"}
|
package/dist/src/http-utils.js
CHANGED
|
@@ -26,8 +26,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.downloadAndGunzip = exports.downloadAndExtractFile = exports.streamWithProgress = void 0;
|
|
30
|
-
const
|
|
29
|
+
exports.downloadAndGunzip = exports.downloadAndExtractFile = exports.extractArchive = exports.streamWithProgress = void 0;
|
|
30
|
+
const tar = __importStar(require("tar"));
|
|
31
|
+
const extract_zip_1 = __importDefault(require("extract-zip"));
|
|
31
32
|
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
32
33
|
const bytes_1 = __importDefault(require("bytes"));
|
|
33
34
|
const throttle_debounce_1 = require("throttle-debounce");
|
|
@@ -72,6 +73,98 @@ async function streamWithProgress(response, progressCallback) {
|
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
75
|
exports.streamWithProgress = streamWithProgress;
|
|
76
|
+
/**
|
|
77
|
+
* Options shared by every `tar.x` call here.
|
|
78
|
+
*
|
|
79
|
+
* `preserveOwner` defaults to true when running as root, which is the normal case
|
|
80
|
+
* inside the Cube image; extracted files would then take whatever uid/gid the
|
|
81
|
+
* tarball recorded. Writing as the current user matches how this path has always
|
|
82
|
+
* behaved.
|
|
83
|
+
*
|
|
84
|
+
* `onwarn` is load-bearing: tar *drops* unsafe entries with a warning rather than
|
|
85
|
+
* failing, so an archive consisting only of `../evil` would extract to nothing and
|
|
86
|
+
* resolve successfully, leaving the caller to fail later on a confusing
|
|
87
|
+
* missing-file error.
|
|
88
|
+
*
|
|
89
|
+
* Only `TAR_ENTRY_ERROR` goes through `internalExceptions`, deliberately: that
|
|
90
|
+
* helper calls `process.exit(1)` under `CUBEJS_INTERNAL_EXCEPTIONS=exit`, and tar
|
|
91
|
+
* also warns about benign conditions (unsupported entry types such as fifos and
|
|
92
|
+
* devices, `TAR_ENTRY_INVALID`, failed utime/chown). Routing those through it
|
|
93
|
+
* would let one odd entry in a third-party tarball take the process down
|
|
94
|
+
* mid-download, where previously it extracted and carried on.
|
|
95
|
+
*
|
|
96
|
+
* `TAR_ENTRY_ERROR` is not only the path-rejection code — measured, tar reports
|
|
97
|
+
* per-entry write failures through it too (a read-only target raises it once per
|
|
98
|
+
* entry, same as a `..` name does). Both belong on this side of the split: a
|
|
99
|
+
* half-extracted install is a real failure, and escalating it is what the opt-in
|
|
100
|
+
* `exit` setting asks for. Everything else is logged and ignored, as tar treats
|
|
101
|
+
* it.
|
|
102
|
+
*/
|
|
103
|
+
const tarOptions = {
|
|
104
|
+
preserveOwner: false,
|
|
105
|
+
onwarn: (code, message) => {
|
|
106
|
+
const warning = `tar skipped an entry while extracting (${code}): ${message}`;
|
|
107
|
+
if (code === 'TAR_ENTRY_ERROR') {
|
|
108
|
+
(0, errors_1.internalExceptions)(new Error(warning));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
console.warn(warning);
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Extract a downloaded archive into `cwd`, which is created if missing.
|
|
116
|
+
*
|
|
117
|
+
* Dispatches on magic bytes, not the filename, because there is no filename to
|
|
118
|
+
* dispatch on: `streamWithProgress` saves downloads as
|
|
119
|
+
* `crypto.randomBytes(16).toString('hex')`, with no extension.
|
|
120
|
+
*
|
|
121
|
+
* Handles gzip (`.tar.gz` / `.tgz`), uncompressed tar and zip. Two gaps are
|
|
122
|
+
* deliberate and both throw a named error rather than failing obscurely: bzip2,
|
|
123
|
+
* and pre-POSIX v7 tars, which carry no `ustar` magic at offset 257 to detect them
|
|
124
|
+
* by.
|
|
125
|
+
*
|
|
126
|
+
* Neither backend writes outside `cwd`: `tar` strips a leading `/` on extraction and
|
|
127
|
+
* drops entries containing `..`, and `extract-zip` rejects entries that resolve outside
|
|
128
|
+
* the target.
|
|
129
|
+
*/
|
|
130
|
+
async function extractArchive(archivePath, cwd) {
|
|
131
|
+
// `extract-zip` creates its target but `tar.x` throws `CwdError` when it is
|
|
132
|
+
// missing, so without this the contract would depend on the archive's format —
|
|
133
|
+
// which callers cannot know in advance, that being the point of magic-byte dispatch.
|
|
134
|
+
(0, fs_extra_1.mkdirpSync)(cwd);
|
|
135
|
+
// 262 bytes: enough for the `ustar` magic a plain tar carries at offset 257.
|
|
136
|
+
const header = Buffer.alloc(262);
|
|
137
|
+
const fd = await fs_1.default.promises.open(archivePath, 'r');
|
|
138
|
+
let bytesRead;
|
|
139
|
+
try {
|
|
140
|
+
({ bytesRead } = await fd.read(header, 0, header.length, 0));
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
await fd.close();
|
|
144
|
+
}
|
|
145
|
+
const startsWith = (...magic) => bytesRead >= magic.length && magic.every((byte, i) => header[i] === byte);
|
|
146
|
+
// gzip (1f 8b) covers .tar.gz/.tgz; `tar.x` gunzips transparently.
|
|
147
|
+
if (startsWith(0x1f, 0x8b)) {
|
|
148
|
+
await tar.x({ file: archivePath, cwd, ...tarOptions });
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// zip: the two-byte "PK" prefix, shared by a local file header and by the
|
|
152
|
+
// end-of-central-directory record that an empty archive consists of.
|
|
153
|
+
if (startsWith(0x50, 0x4b)) {
|
|
154
|
+
await (0, extract_zip_1.default)(archivePath, { dir: path.resolve(cwd) });
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Uncompressed tar: "ustar" at offset 257.
|
|
158
|
+
if (bytesRead >= 262 && header.subarray(257, 262).toString('latin1') === 'ustar') {
|
|
159
|
+
await tar.x({ file: archivePath, cwd, ...tarOptions });
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (startsWith(0x42, 0x5a, 0x68)) {
|
|
163
|
+
throw new Error('Unsupported archive format: bzip2. Supported formats are gzip (.tar.gz/.tgz), tar and zip.');
|
|
164
|
+
}
|
|
165
|
+
throw new Error('Unable to detect archive format from its contents. Supported formats are gzip (.tar.gz/.tgz), tar and zip.');
|
|
166
|
+
}
|
|
167
|
+
exports.extractArchive = extractArchive;
|
|
75
168
|
async function downloadAndExtractFile(url, { cwd, skipExtract, dstFileName }) {
|
|
76
169
|
const request = new node_fetch_1.Request(url, {
|
|
77
170
|
headers: new node_fetch_1.Headers({
|
|
@@ -111,7 +204,7 @@ async function downloadAndExtractFile(url, { cwd, skipExtract, dstFileName }) {
|
|
|
111
204
|
}
|
|
112
205
|
}
|
|
113
206
|
else {
|
|
114
|
-
await (
|
|
207
|
+
await extractArchive(savedFilePath, cwd);
|
|
115
208
|
}
|
|
116
209
|
try {
|
|
117
210
|
fs_1.default.unlinkSync(savedFilePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../../src/http-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../../src/http-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cubejs-backend/shared",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.21",
|
|
4
4
|
"description": "Shared code for Cube.js backend packages",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -27,10 +27,9 @@
|
|
|
27
27
|
},
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@cubejs-backend/linter": "1.7.
|
|
30
|
+
"@cubejs-backend/linter": "1.7.21",
|
|
31
31
|
"@types/bytes": "^3.1.5",
|
|
32
32
|
"@types/cli-progress": "^3.9.1",
|
|
33
|
-
"@types/decompress": "^4.2.7",
|
|
34
33
|
"@types/jest": "^29",
|
|
35
34
|
"@types/node": "^22",
|
|
36
35
|
"@types/node-fetch": "^2.5.8",
|
|
@@ -45,8 +44,8 @@
|
|
|
45
44
|
"bytes": "^3.1.2",
|
|
46
45
|
"cli-progress": "^3.9.0",
|
|
47
46
|
"cross-spawn": "^7.0.3",
|
|
48
|
-
"decompress": "^4.2.1",
|
|
49
47
|
"env-var": "^6.3.0",
|
|
48
|
+
"extract-zip": "^2.0.1",
|
|
50
49
|
"fs-extra": "^9.1.0",
|
|
51
50
|
"generic-pool": "^3.9.0",
|
|
52
51
|
"lru-cache": "^11.1.0",
|
|
@@ -55,8 +54,9 @@
|
|
|
55
54
|
"node-fetch": "^2.6.1",
|
|
56
55
|
"proxy-agent": "^6.5.0",
|
|
57
56
|
"shelljs": "^0.8.5",
|
|
57
|
+
"tar": "^7.5.22",
|
|
58
58
|
"throttle-debounce": "^3.0.1",
|
|
59
|
-
"uuid": "^
|
|
59
|
+
"uuid": "^11.1.1"
|
|
60
60
|
},
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"resolutions": {
|
|
68
68
|
"colors": "1.4.0"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "04a4832b426bab68480ac08055d7c5feb339afd2"
|
|
71
71
|
}
|