@scalar/cli 2.1.0 → 2.5.1
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 +28 -24
- package/chunks/{action-CYP4VDK3.js → action-37EV4UHW.js} +12 -35
- package/chunks/{action-MENXFJH3.js → action-4XI7XJR4.js} +9 -9
- package/chunks/{action-H5OHT2GV.js → action-5IU77OII.js} +7 -3
- package/chunks/{action-STIEAXOE.js → action-B3KKREWQ.js} +16 -5
- package/chunks/{action-BYZUBXVB.js → action-CH24QGTE.js} +8 -4
- package/chunks/action-F3UX5E3M.js +522 -0
- package/chunks/{action-GB6DM53B.js → action-FDB7NEOK.js} +21 -10
- package/chunks/action-FIXBOJEW.js +244 -0
- package/chunks/{action-DFKHSDFV.js → action-G26LSVZ7.js} +7 -3
- package/chunks/{action-Q5UJ32D6.js → action-H3RTILLM.js} +1 -1
- package/chunks/{action-GEBRPNRT.js → action-HGBBV353.js} +15 -16
- package/chunks/{action-5R5FDF6S.js → action-IUE4IOWO.js} +67 -22
- package/chunks/{action-TPBKPHNS.js → action-JZLZ7ZAD.js} +22 -22
- package/chunks/action-LA6KVAXQ.js +374 -0
- package/chunks/{action-PVDDRIM6.js → action-M7RQKBSB.js} +65 -26
- package/chunks/{action-F4Y6Q2VB.js → action-MSLBC2SO.js} +21 -21
- package/chunks/{action-BNEGJBUH.js → action-NVSZT2ZD.js} +8 -9
- package/chunks/{action-ANU5HGC4.js → action-OGQSTRMX.js} +17 -14
- package/chunks/{action-CLSD7O2R.js → action-PAGJ5PWC.js} +10 -10
- package/chunks/action-QE2ZQQX7.js +250 -0
- package/chunks/{action-HD2T6BFJ.js → action-QPUSPD5M.js} +10 -10
- package/chunks/{action-45OGQB2M.js → action-R7IMFHQ5.js} +17 -8
- package/chunks/{action-UDZUUJSI.js → action-SH4UUXPL.js} +18 -7
- package/chunks/action-SNLCIBQC.js +84 -0
- package/chunks/{action-C5VB4ITT.js → action-SQG3JAII.js} +36 -18
- package/chunks/action-UZQJNYK4.js +18 -0
- package/chunks/{action-HNKM3Q65.js → action-VC4DCVST.js} +17 -14
- package/chunks/{action-BMFXENMX.js → action-VTVFY2MP.js} +39 -34
- package/chunks/{action-TZ5KGAQT.js → action-WFWYGY7O.js} +17 -14
- package/chunks/{action-W5BATF4Q.js → action-XMNX5ZYT.js} +24 -24
- package/chunks/{agent-XGLOHXNA.js → agent-HCQRMHQ5.js} +25 -5
- package/chunks/asyncapi-QM76O55R.js +105 -0
- package/chunks/{build.action-LKOILPA6.js → build.action-P7FCIMYU.js} +22 -22
- package/chunks/{chunk-23I5PKZZ.js → chunk-24WAOKGG.js} +32 -5
- package/chunks/chunk-3L6DLIXJ.js +25530 -0
- package/chunks/chunk-3ZJYGGAA.js +30 -0
- package/chunks/{chunk-ZTVWAKNJ.js → chunk-4NHMAG6F.js} +1 -1
- package/chunks/{chunk-IX7LJ3AD.js → chunk-4ORL4MST.js} +2 -3
- package/chunks/{chunk-OAXFCOJV.js → chunk-4ZDQXWBT.js} +2 -1
- package/chunks/{chunk-ASMHW5AY.js → chunk-6ZMT63IV.js} +1 -1
- package/chunks/{chunk-P2VH7DOC.js → chunk-7AGLC7WV.js} +6 -6
- package/chunks/{chunk-SXYALPYK.js → chunk-AO3F5XWR.js} +498 -60
- package/chunks/{chunk-B6QZJWCQ.js → chunk-B2MHTD3R.js} +4 -6
- package/chunks/{chunk-4QS7SJTG.js → chunk-CISTON3A.js} +51 -36
- package/chunks/chunk-COBPBRQF.js +25 -0
- package/chunks/{chunk-2BSG2QHO.js → chunk-F467BYYR.js} +133 -20
- package/chunks/{chunk-TLFMATXR.js → chunk-GSGZHE26.js} +33 -25
- package/chunks/{chunk-UPUTMFD4.js → chunk-HCPN3KNF.js} +185 -13
- package/chunks/{chunk-P646T2WH.js → chunk-HPL3ZZ2P.js} +131 -13
- package/chunks/{chunk-H2WRMLYY.js → chunk-IKT5F47M.js} +3571 -7
- package/chunks/{chunk-AHWWJ3MD.js → chunk-K4DTP5TV.js} +1 -1
- package/chunks/{chunk-TQ5XC2E3.js → chunk-LFU5ZUAP.js} +77 -11
- package/chunks/{chunk-5BISXQX4.js → chunk-M37TP6U2.js} +11 -13
- package/chunks/chunk-OQKDBLOZ.js +741 -0
- package/chunks/chunk-P7H7GY5A.js +14 -0
- package/chunks/{chunk-47Y4L5IT.js → chunk-PBXZN65A.js} +1031 -481
- package/chunks/{chunk-HQKBZOYU.js → chunk-PT5TI77I.js} +3 -3
- package/chunks/chunk-Q7DOQHZN.js +404 -0
- package/chunks/{chunk-X4QLDBB5.js → chunk-T5HJUAWB.js} +24 -3
- package/chunks/{chunk-NUXPNUSS.js → chunk-UGGNHILG.js} +1 -1
- package/chunks/{chunk-4DGQIAJX.js → chunk-VNYE4R7N.js} +154 -14
- package/chunks/{chunk-KWOL7A6J.js → chunk-X5T526CE.js} +2 -2
- package/chunks/chunk-XCSR4RIT.js +210 -0
- package/chunks/{chunk-SHSHFGA7.js → chunk-Z2KMGFE6.js} +4 -6
- package/chunks/{create.action-FFQLBSJH.js → create.action-HDD2WUON.js} +22 -22
- package/chunks/{delete.action-STHQHP4F.js → delete.action-7GOZY7ID.js} +22 -22
- package/chunks/{delete.action-QNN3LC2F.js → delete.action-VE66JFDS.js} +22 -22
- package/chunks/{get.action-OTKYOP3Z.js → get.action-2745EB4N.js} +15 -16
- package/chunks/{list.action-KDM5RHEH.js → list.action-3VTXQJRA.js} +19 -19
- package/chunks/{list.action-6I5EZAVB.js → list.action-4QDCZLSZ.js} +22 -22
- package/chunks/{publish.action-PODTVRXS.js → publish.action-ULQLZKWU.js} +44 -36
- package/chunks/{update.action-KMD4ZM75.js → update.action-6QEFP7NA.js} +22 -22
- package/chunks/{update.action-4F6STTEQ.js → update.action-OROQSP2S.js} +22 -22
- package/docs.html +104 -103
- package/index.js +84 -68
- package/package.json +16 -12
- package/chunks/action-CCW66QJN.js +0 -72
- package/chunks/action-CQ56FVES.js +0 -65
- package/chunks/action-JOSVV6YA.js +0 -71
- package/chunks/action-P7LN6FGY.js +0 -13
- package/chunks/action-R6ZZO26F.js +0 -299
- package/chunks/action-TWFJNQ2R.js +0 -95
- package/chunks/chunk-5BPPGTUU.js +0 -463
- package/chunks/chunk-DOVIWNKQ.js +0 -108
- package/chunks/chunk-ISGLWBXZ.js +0 -4265
- package/chunks/chunk-T7MDADON.js +0 -17
- package/chunks/chunk-VTYTPSXO.js +0 -161
|
@@ -20,7 +20,7 @@ function BundleCommand() {
|
|
|
20
20
|
"Maximum number of URLs to fetch during bundling at the same time"
|
|
21
21
|
);
|
|
22
22
|
cmd.action(async (...args) => {
|
|
23
|
-
const { bundleAction } = await import("./action-
|
|
23
|
+
const { bundleAction } = await import("./action-CH24QGTE.js");
|
|
24
24
|
return bundleAction(...args);
|
|
25
25
|
});
|
|
26
26
|
return cmd;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
displayError
|
|
4
|
+
} from "./chunk-3ZJYGGAA.js";
|
|
2
5
|
import {
|
|
3
6
|
ISOLATE_DIR,
|
|
4
7
|
ISOLATE_EXTRACTION_DIR
|
|
5
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-X5T526CE.js";
|
|
6
9
|
import {
|
|
7
10
|
config
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-4ZDQXWBT.js";
|
|
9
12
|
import {
|
|
10
13
|
output
|
|
11
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-T5HJUAWB.js";
|
|
12
15
|
|
|
13
16
|
// src/domains/project/download-isolate/action.ts
|
|
14
17
|
import { execFile } from "node:child_process";
|
|
@@ -40,6 +43,12 @@ function getIsolateDownloadUrls(options) {
|
|
|
40
43
|
|
|
41
44
|
// src/domains/project/download-isolate/action.ts
|
|
42
45
|
var execFileAsync = promisify(execFile);
|
|
46
|
+
var IsolateDownloadError = class extends Error {
|
|
47
|
+
constructor(message, options) {
|
|
48
|
+
super(message, options);
|
|
49
|
+
this.name = "IsolateDownloadError";
|
|
50
|
+
}
|
|
51
|
+
};
|
|
43
52
|
var DOWNLOAD_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
44
53
|
var EXTRACTION_ALLOWANCE_MS = 5 * 60 * 1e3;
|
|
45
54
|
async function getExistingIsolateVersion() {
|
|
@@ -128,10 +137,53 @@ async function assertIsolateLayout(destinationDir, url) {
|
|
|
128
137
|
await fs.access(path.join(destinationDir, "isolate", "package.json"));
|
|
129
138
|
} catch {
|
|
130
139
|
throw new Error(
|
|
131
|
-
`The
|
|
140
|
+
`The download from ${url} did not contain a valid docs preview server.`
|
|
132
141
|
);
|
|
133
142
|
}
|
|
134
143
|
}
|
|
144
|
+
var DISK_WRITE_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
145
|
+
"ENOSPC",
|
|
146
|
+
// No space left on device
|
|
147
|
+
"EACCES",
|
|
148
|
+
// Permission denied
|
|
149
|
+
"EPERM",
|
|
150
|
+
// Operation not permitted
|
|
151
|
+
"EBUSY",
|
|
152
|
+
// Resource busy or locked
|
|
153
|
+
"EROFS",
|
|
154
|
+
// Read-only filesystem
|
|
155
|
+
"EDQUOT",
|
|
156
|
+
// Disk quota exceeded
|
|
157
|
+
"EMFILE",
|
|
158
|
+
// Too many open files
|
|
159
|
+
"ENFILE"
|
|
160
|
+
// File table overflow
|
|
161
|
+
]);
|
|
162
|
+
var DISK_WRITE_ERROR_MESSAGES = [
|
|
163
|
+
"no space left on device",
|
|
164
|
+
// ENOSPC / bsdtar
|
|
165
|
+
"not enough space",
|
|
166
|
+
// Windows disk-full phrasing
|
|
167
|
+
"disk quota exceeded",
|
|
168
|
+
// EDQUOT
|
|
169
|
+
"permission denied",
|
|
170
|
+
// EACCES
|
|
171
|
+
"access is denied",
|
|
172
|
+
// Windows permission phrasing
|
|
173
|
+
"operation not permitted",
|
|
174
|
+
// EPERM
|
|
175
|
+
"read-only file system"
|
|
176
|
+
// EROFS
|
|
177
|
+
];
|
|
178
|
+
function isDiskWriteError(error) {
|
|
179
|
+
if (!(error instanceof Error)) return false;
|
|
180
|
+
const code = error.code;
|
|
181
|
+
if (typeof code === "string" && DISK_WRITE_ERROR_CODES.has(code)) {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
const details = `${error.message} ${error.stderr ?? ""}`.toLowerCase();
|
|
185
|
+
return DISK_WRITE_ERROR_MESSAGES.some((phrase) => details.includes(phrase));
|
|
186
|
+
}
|
|
135
187
|
async function downloadFirstAvailable(urls, destinationDir, options) {
|
|
136
188
|
const failures = [];
|
|
137
189
|
for (const url of urls) {
|
|
@@ -141,15 +193,16 @@ async function downloadFirstAvailable(urls, destinationDir, options) {
|
|
|
141
193
|
await assertIsolateLayout(destinationDir, url);
|
|
142
194
|
return url;
|
|
143
195
|
} catch (error) {
|
|
196
|
+
if (isDiskWriteError(error)) throw error;
|
|
144
197
|
failures.push(
|
|
145
198
|
` - ${url}: ${error instanceof Error ? error.message : String(error)}`
|
|
146
199
|
);
|
|
147
200
|
}
|
|
148
201
|
}
|
|
149
|
-
throw new
|
|
150
|
-
`Failed to download the docs
|
|
202
|
+
throw new IsolateDownloadError(
|
|
203
|
+
`Failed to download the docs preview server. Attempted:
|
|
151
204
|
${failures.join("\n")}
|
|
152
|
-
Your existing
|
|
205
|
+
Your existing preview server (if any) was left untouched. Check your network connection and try again.`
|
|
153
206
|
);
|
|
154
207
|
}
|
|
155
208
|
async function removeQuarantineAttributes(isolateDir) {
|
|
@@ -177,7 +230,7 @@ async function swapIsolateDirectory(newIsolateDir, isolateDir) {
|
|
|
177
230
|
await fs.rename(backupDir, isolateDir);
|
|
178
231
|
} catch {
|
|
179
232
|
throw new Error(
|
|
180
|
-
`Failed to install the new
|
|
233
|
+
`Failed to install the new docs preview server and could not restore the previous one. Your previous preview server is preserved at ${backupDir} \u2014 rename it back to ${isolateDir} to recover.`,
|
|
181
234
|
{ cause: error }
|
|
182
235
|
);
|
|
183
236
|
}
|
|
@@ -260,7 +313,7 @@ async function updateIsolate(options) {
|
|
|
260
313
|
async function downloadIsolate() {
|
|
261
314
|
const existingIsolateVersion = await getExistingIsolateVersion();
|
|
262
315
|
if (config.ssgDocsIsolateVersion === existingIsolateVersion) return;
|
|
263
|
-
const logger = output.info({ animate: true }).loader("Downloading docs
|
|
316
|
+
const logger = output.info({ animate: true }).loader("Downloading the docs preview server. This may take a minute...");
|
|
264
317
|
const urls = getIsolateDownloadUrls({
|
|
265
318
|
cdnUrl: config.cdnUrl,
|
|
266
319
|
version: config.ssgDocsIsolateVersion,
|
|
@@ -270,15 +323,28 @@ async function downloadIsolate() {
|
|
|
270
323
|
try {
|
|
271
324
|
await updateIsolate({ urls, extractionDir: ISOLATE_EXTRACTION_DIR });
|
|
272
325
|
} catch (error) {
|
|
273
|
-
|
|
326
|
+
const isDownloadFailure = error instanceof IsolateDownloadError;
|
|
327
|
+
logger.update("loader", 0, {
|
|
328
|
+
content: isDownloadFailure ? "Download failed." : "Installation failed.",
|
|
329
|
+
status: "error"
|
|
330
|
+
});
|
|
274
331
|
logger.finish();
|
|
275
|
-
|
|
332
|
+
return output.error().title(
|
|
333
|
+
isDownloadFailure ? "Could not download the docs preview server" : "Could not install the docs preview server"
|
|
334
|
+
).message(
|
|
335
|
+
[
|
|
336
|
+
displayError(error),
|
|
337
|
+
error instanceof Error && error.cause ? displayError(error.cause) : ""
|
|
338
|
+
].filter(Boolean).join("\n\n")
|
|
339
|
+
).exit("error");
|
|
276
340
|
}
|
|
277
341
|
logger.update("loader", 0, { content: "Download complete." });
|
|
278
342
|
logger.finish();
|
|
279
343
|
}
|
|
280
344
|
|
|
281
345
|
export {
|
|
346
|
+
IsolateDownloadError,
|
|
347
|
+
isDiskWriteError,
|
|
282
348
|
updateIsolate,
|
|
283
349
|
downloadIsolate
|
|
284
350
|
};
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
import { createRequire as $$cR } from "node:module"; const require = $$cR(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
config
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4ZDQXWBT.js";
|
|
5
5
|
import {
|
|
6
6
|
roleSchema
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VNYE4R7N.js";
|
|
8
|
+
import {
|
|
9
|
+
isUrl
|
|
10
|
+
} from "./chunk-4ORL4MST.js";
|
|
11
|
+
import {
|
|
12
|
+
output
|
|
13
|
+
} from "./chunk-T5HJUAWB.js";
|
|
8
14
|
import {
|
|
9
15
|
emailSchema,
|
|
10
16
|
entitySchema,
|
|
11
|
-
nanoidSchema,
|
|
12
|
-
timestampSchema
|
|
13
|
-
} from "./chunk-ISGLWBXZ.js";
|
|
14
|
-
import {
|
|
15
17
|
external_exports,
|
|
18
|
+
nanoidSchema,
|
|
19
|
+
timestampSchema,
|
|
16
20
|
zod_default
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import {
|
|
19
|
-
isUrl
|
|
20
|
-
} from "./chunk-IX7LJ3AD.js";
|
|
21
|
-
import {
|
|
22
|
-
output
|
|
23
|
-
} from "./chunk-X4QLDBB5.js";
|
|
21
|
+
} from "./chunk-IKT5F47M.js";
|
|
24
22
|
|
|
25
23
|
// src/helpers/node-version.ts
|
|
26
24
|
import semver from "semver";
|