sandbox 2.0.0-alpha3 → 2.0.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/LICENSE +18 -12
- package/README.md +18 -93
- package/bin/sandbox.mjs +3 -0
- package/dist/ansi-styles-B57ln_zO.mjs +168 -0
- package/dist/ansi-styles-B57ln_zO.mjs.map +1 -0
- package/dist/app-BQds8e4O.mjs +14168 -0
- package/dist/app-BQds8e4O.mjs.map +1 -0
- package/dist/chunk-btbCw1m3.mjs +52 -0
- package/dist/cli-cursor-Dab4mDU2.mjs +348 -0
- package/dist/cli-cursor-Dab4mDU2.mjs.map +1 -0
- package/dist/cli-truncate-DMIDACmY.mjs +124 -0
- package/dist/cli-truncate-DMIDACmY.mjs.map +1 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.mjs +17 -0
- package/dist/index.mjs.map +1 -0
- package/dist/log-update-txb7Or7B.mjs +223 -0
- package/dist/log-update-txb7Or7B.mjs.map +1 -0
- package/dist/pty-server-linux-x86_64 +0 -0
- package/dist/sandbox.d.mts +1 -0
- package/dist/sandbox.mjs +647 -0
- package/dist/sandbox.mjs.map +1 -0
- package/dist/string-width-D78SVDLD.mjs +85 -0
- package/dist/string-width-D78SVDLD.mjs.map +1 -0
- package/dist/token-Bwtve9Y6.mjs +51 -0
- package/dist/token-Bwtve9Y6.mjs.map +1 -0
- package/dist/token-error-C0CafU2G.mjs +43 -0
- package/dist/token-error-C0CafU2G.mjs.map +1 -0
- package/dist/token-util-BpWskZEO.mjs +357 -0
- package/dist/token-util-BpWskZEO.mjs.map +1 -0
- package/dist/token-util-CRAtcwBI.mjs +6 -0
- package/dist/wrap-ansi-CEi7ZT5i.mjs +5 -0
- package/dist/wrap-ansi-DoQ74EEn.mjs +130 -0
- package/dist/wrap-ansi-DoQ74EEn.mjs.map +1 -0
- package/package.json +52 -31
- package/index.js +0 -29
- package/install.js +0 -5
- package/platform-target.js +0 -217
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { i as __require, t as __commonJS } from "./chunk-btbCw1m3.mjs";
|
|
2
|
+
import { t as require_token_error } from "./token-error-C0CafU2G.mjs";
|
|
3
|
+
|
|
4
|
+
//#region ../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js
|
|
5
|
+
var require_token_io = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js": ((exports, module) => {
|
|
6
|
+
var __create$2 = Object.create;
|
|
7
|
+
var __defProp$3 = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames$3 = Object.getOwnPropertyNames;
|
|
10
|
+
var __getProtoOf$2 = Object.getPrototypeOf;
|
|
11
|
+
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export$3 = (target, all) => {
|
|
13
|
+
for (var name in all) __defProp$3(target, name, {
|
|
14
|
+
get: all[name],
|
|
15
|
+
enumerable: true
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
var __copyProps$3 = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames$3(from)) if (!__hasOwnProp$3.call(to, key) && key !== except) __defProp$3(to, key, {
|
|
21
|
+
get: () => from[key],
|
|
22
|
+
enumerable: !(desc = __getOwnPropDesc$3(from, key)) || desc.enumerable
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return to;
|
|
26
|
+
};
|
|
27
|
+
var __toESM$2 = (mod, isNodeMode, target) => (target = mod != null ? __create$2(__getProtoOf$2(mod)) : {}, __copyProps$3(isNodeMode || !mod || !mod.__esModule ? __defProp$3(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: true
|
|
30
|
+
}) : target, mod));
|
|
31
|
+
var __toCommonJS$3 = (mod) => __copyProps$3(__defProp$3({}, "__esModule", { value: true }), mod);
|
|
32
|
+
var token_io_exports = {};
|
|
33
|
+
__export$3(token_io_exports, {
|
|
34
|
+
findRootDir: () => findRootDir,
|
|
35
|
+
getUserDataDir: () => getUserDataDir
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS$3(token_io_exports);
|
|
38
|
+
var import_path = __toESM$2(__require("path"));
|
|
39
|
+
var import_fs = __toESM$2(__require("fs"));
|
|
40
|
+
var import_os$1 = __toESM$2(__require("os"));
|
|
41
|
+
var import_token_error$1 = require_token_error();
|
|
42
|
+
function findRootDir() {
|
|
43
|
+
try {
|
|
44
|
+
let dir = process.cwd();
|
|
45
|
+
while (dir !== import_path.default.dirname(dir)) {
|
|
46
|
+
const pkgPath = import_path.default.join(dir, ".vercel");
|
|
47
|
+
if (import_fs.default.existsSync(pkgPath)) return dir;
|
|
48
|
+
dir = import_path.default.dirname(dir);
|
|
49
|
+
}
|
|
50
|
+
} catch (e) {
|
|
51
|
+
throw new import_token_error$1.VercelOidcTokenError("Token refresh only supported in node server environments");
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
function getUserDataDir() {
|
|
56
|
+
if (process.env.XDG_DATA_HOME) return process.env.XDG_DATA_HOME;
|
|
57
|
+
switch (import_os$1.default.platform()) {
|
|
58
|
+
case "darwin": return import_path.default.join(import_os$1.default.homedir(), "Library/Application Support");
|
|
59
|
+
case "linux": return import_path.default.join(import_os$1.default.homedir(), ".local/share");
|
|
60
|
+
case "win32":
|
|
61
|
+
if (process.env.LOCALAPPDATA) return process.env.LOCALAPPDATA;
|
|
62
|
+
return null;
|
|
63
|
+
default: return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}) });
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region ../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js
|
|
70
|
+
var require_auth_config = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js": ((exports, module) => {
|
|
71
|
+
var __create$1 = Object.create;
|
|
72
|
+
var __defProp$2 = Object.defineProperty;
|
|
73
|
+
var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
|
|
74
|
+
var __getOwnPropNames$2 = Object.getOwnPropertyNames;
|
|
75
|
+
var __getProtoOf$1 = Object.getPrototypeOf;
|
|
76
|
+
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
77
|
+
var __export$2 = (target, all) => {
|
|
78
|
+
for (var name in all) __defProp$2(target, name, {
|
|
79
|
+
get: all[name],
|
|
80
|
+
enumerable: true
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
var __copyProps$2 = (to, from, except, desc) => {
|
|
84
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
85
|
+
for (let key of __getOwnPropNames$2(from)) if (!__hasOwnProp$2.call(to, key) && key !== except) __defProp$2(to, key, {
|
|
86
|
+
get: () => from[key],
|
|
87
|
+
enumerable: !(desc = __getOwnPropDesc$2(from, key)) || desc.enumerable
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return to;
|
|
91
|
+
};
|
|
92
|
+
var __toESM$1 = (mod, isNodeMode, target) => (target = mod != null ? __create$1(__getProtoOf$1(mod)) : {}, __copyProps$2(isNodeMode || !mod || !mod.__esModule ? __defProp$2(target, "default", {
|
|
93
|
+
value: mod,
|
|
94
|
+
enumerable: true
|
|
95
|
+
}) : target, mod));
|
|
96
|
+
var __toCommonJS$2 = (mod) => __copyProps$2(__defProp$2({}, "__esModule", { value: true }), mod);
|
|
97
|
+
var auth_config_exports = {};
|
|
98
|
+
__export$2(auth_config_exports, {
|
|
99
|
+
isValidAccessToken: () => isValidAccessToken,
|
|
100
|
+
readAuthConfig: () => readAuthConfig,
|
|
101
|
+
writeAuthConfig: () => writeAuthConfig
|
|
102
|
+
});
|
|
103
|
+
module.exports = __toCommonJS$2(auth_config_exports);
|
|
104
|
+
var fs$1 = __toESM$1(__require("fs"));
|
|
105
|
+
var path$1 = __toESM$1(__require("path"));
|
|
106
|
+
var import_token_util = require_token_util();
|
|
107
|
+
function getAuthConfigPath() {
|
|
108
|
+
const dataDir = (0, import_token_util.getVercelDataDir)();
|
|
109
|
+
if (!dataDir) throw new Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);
|
|
110
|
+
return path$1.join(dataDir, "auth.json");
|
|
111
|
+
}
|
|
112
|
+
function readAuthConfig() {
|
|
113
|
+
try {
|
|
114
|
+
const authPath = getAuthConfigPath();
|
|
115
|
+
if (!fs$1.existsSync(authPath)) return null;
|
|
116
|
+
const content = fs$1.readFileSync(authPath, "utf8");
|
|
117
|
+
if (!content) return null;
|
|
118
|
+
return JSON.parse(content);
|
|
119
|
+
} catch (error) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function writeAuthConfig(config) {
|
|
124
|
+
const authPath = getAuthConfigPath();
|
|
125
|
+
const authDir = path$1.dirname(authPath);
|
|
126
|
+
if (!fs$1.existsSync(authDir)) fs$1.mkdirSync(authDir, {
|
|
127
|
+
mode: 504,
|
|
128
|
+
recursive: true
|
|
129
|
+
});
|
|
130
|
+
fs$1.writeFileSync(authPath, JSON.stringify(config, null, 2), { mode: 384 });
|
|
131
|
+
}
|
|
132
|
+
function isValidAccessToken(authConfig) {
|
|
133
|
+
if (!authConfig.token) return false;
|
|
134
|
+
if (typeof authConfig.expiresAt !== "number") return true;
|
|
135
|
+
const nowInSeconds = Math.floor(Date.now() / 1e3);
|
|
136
|
+
return authConfig.expiresAt >= nowInSeconds;
|
|
137
|
+
}
|
|
138
|
+
}) });
|
|
139
|
+
|
|
140
|
+
//#endregion
|
|
141
|
+
//#region ../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js
|
|
142
|
+
var require_oauth = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js": ((exports, module) => {
|
|
143
|
+
var __defProp$1 = Object.defineProperty;
|
|
144
|
+
var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
|
|
145
|
+
var __getOwnPropNames$1 = Object.getOwnPropertyNames;
|
|
146
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
147
|
+
var __export$1 = (target, all) => {
|
|
148
|
+
for (var name in all) __defProp$1(target, name, {
|
|
149
|
+
get: all[name],
|
|
150
|
+
enumerable: true
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
var __copyProps$1 = (to, from, except, desc) => {
|
|
154
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
155
|
+
for (let key of __getOwnPropNames$1(from)) if (!__hasOwnProp$1.call(to, key) && key !== except) __defProp$1(to, key, {
|
|
156
|
+
get: () => from[key],
|
|
157
|
+
enumerable: !(desc = __getOwnPropDesc$1(from, key)) || desc.enumerable
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return to;
|
|
161
|
+
};
|
|
162
|
+
var __toCommonJS$1 = (mod) => __copyProps$1(__defProp$1({}, "__esModule", { value: true }), mod);
|
|
163
|
+
var oauth_exports = {};
|
|
164
|
+
__export$1(oauth_exports, {
|
|
165
|
+
processTokenResponse: () => processTokenResponse,
|
|
166
|
+
refreshTokenRequest: () => refreshTokenRequest
|
|
167
|
+
});
|
|
168
|
+
module.exports = __toCommonJS$1(oauth_exports);
|
|
169
|
+
var import_os = __require("os");
|
|
170
|
+
const VERCEL_ISSUER = "https://vercel.com";
|
|
171
|
+
const VERCEL_CLI_CLIENT_ID = "cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp";
|
|
172
|
+
const userAgent = `@vercel/oidc node-${process.version} ${(0, import_os.platform)()} (${(0, import_os.arch)()}) ${(0, import_os.hostname)()}`;
|
|
173
|
+
let _tokenEndpoint = null;
|
|
174
|
+
async function getTokenEndpoint() {
|
|
175
|
+
if (_tokenEndpoint) return _tokenEndpoint;
|
|
176
|
+
const discoveryUrl = `${VERCEL_ISSUER}/.well-known/openid-configuration`;
|
|
177
|
+
const response = await fetch(discoveryUrl, { headers: { "user-agent": userAgent } });
|
|
178
|
+
if (!response.ok) throw new Error("Failed to discover OAuth endpoints");
|
|
179
|
+
const metadata = await response.json();
|
|
180
|
+
if (!metadata || typeof metadata.token_endpoint !== "string") throw new Error("Invalid OAuth discovery response");
|
|
181
|
+
const endpoint = metadata.token_endpoint;
|
|
182
|
+
_tokenEndpoint = endpoint;
|
|
183
|
+
return endpoint;
|
|
184
|
+
}
|
|
185
|
+
async function refreshTokenRequest(options) {
|
|
186
|
+
const tokenEndpoint = await getTokenEndpoint();
|
|
187
|
+
return await fetch(tokenEndpoint, {
|
|
188
|
+
method: "POST",
|
|
189
|
+
headers: {
|
|
190
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
191
|
+
"user-agent": userAgent
|
|
192
|
+
},
|
|
193
|
+
body: new URLSearchParams({
|
|
194
|
+
client_id: VERCEL_CLI_CLIENT_ID,
|
|
195
|
+
grant_type: "refresh_token",
|
|
196
|
+
...options
|
|
197
|
+
})
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
async function processTokenResponse(response) {
|
|
201
|
+
const json = await response.json();
|
|
202
|
+
if (!response.ok) {
|
|
203
|
+
const errorMsg = typeof json === "object" && json && "error" in json ? String(json.error) : "Token refresh failed";
|
|
204
|
+
return [new Error(errorMsg)];
|
|
205
|
+
}
|
|
206
|
+
if (typeof json !== "object" || json === null) return [/* @__PURE__ */ new Error("Invalid token response")];
|
|
207
|
+
if (typeof json.access_token !== "string") return [/* @__PURE__ */ new Error("Missing access_token in response")];
|
|
208
|
+
if (json.token_type !== "Bearer") return [/* @__PURE__ */ new Error("Invalid token_type in response")];
|
|
209
|
+
if (typeof json.expires_in !== "number") return [/* @__PURE__ */ new Error("Missing expires_in in response")];
|
|
210
|
+
return [null, json];
|
|
211
|
+
}
|
|
212
|
+
}) });
|
|
213
|
+
|
|
214
|
+
//#endregion
|
|
215
|
+
//#region ../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js
|
|
216
|
+
var require_token_util = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js": ((exports, module) => {
|
|
217
|
+
var __create = Object.create;
|
|
218
|
+
var __defProp = Object.defineProperty;
|
|
219
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
220
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
221
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
222
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
223
|
+
var __export = (target, all) => {
|
|
224
|
+
for (var name in all) __defProp(target, name, {
|
|
225
|
+
get: all[name],
|
|
226
|
+
enumerable: true
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
var __copyProps = (to, from, except, desc) => {
|
|
230
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
231
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
232
|
+
get: () => from[key],
|
|
233
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return to;
|
|
237
|
+
};
|
|
238
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
239
|
+
value: mod,
|
|
240
|
+
enumerable: true
|
|
241
|
+
}) : target, mod));
|
|
242
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
243
|
+
var token_util_exports = {};
|
|
244
|
+
__export(token_util_exports, {
|
|
245
|
+
assertVercelOidcTokenResponse: () => assertVercelOidcTokenResponse,
|
|
246
|
+
findProjectInfo: () => findProjectInfo,
|
|
247
|
+
getTokenPayload: () => getTokenPayload,
|
|
248
|
+
getVercelCliToken: () => getVercelCliToken,
|
|
249
|
+
getVercelDataDir: () => getVercelDataDir,
|
|
250
|
+
getVercelOidcToken: () => getVercelOidcToken,
|
|
251
|
+
isExpired: () => isExpired,
|
|
252
|
+
loadToken: () => loadToken,
|
|
253
|
+
saveToken: () => saveToken
|
|
254
|
+
});
|
|
255
|
+
module.exports = __toCommonJS(token_util_exports);
|
|
256
|
+
var path = __toESM(__require("path"));
|
|
257
|
+
var fs = __toESM(__require("fs"));
|
|
258
|
+
var import_token_error = require_token_error();
|
|
259
|
+
var import_token_io = require_token_io();
|
|
260
|
+
var import_auth_config = require_auth_config();
|
|
261
|
+
var import_oauth = require_oauth();
|
|
262
|
+
function getVercelDataDir() {
|
|
263
|
+
const vercelFolder = "com.vercel.cli";
|
|
264
|
+
const dataDir = (0, import_token_io.getUserDataDir)();
|
|
265
|
+
if (!dataDir) return null;
|
|
266
|
+
return path.join(dataDir, vercelFolder);
|
|
267
|
+
}
|
|
268
|
+
async function getVercelCliToken() {
|
|
269
|
+
const authConfig = (0, import_auth_config.readAuthConfig)();
|
|
270
|
+
if (!authConfig) return null;
|
|
271
|
+
if ((0, import_auth_config.isValidAccessToken)(authConfig)) return authConfig.token || null;
|
|
272
|
+
if (!authConfig.refreshToken) {
|
|
273
|
+
(0, import_auth_config.writeAuthConfig)({});
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
try {
|
|
277
|
+
const tokenResponse = await (0, import_oauth.refreshTokenRequest)({ refresh_token: authConfig.refreshToken });
|
|
278
|
+
const [tokensError, tokens] = await (0, import_oauth.processTokenResponse)(tokenResponse);
|
|
279
|
+
if (tokensError || !tokens) {
|
|
280
|
+
(0, import_auth_config.writeAuthConfig)({});
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
const updatedConfig = {
|
|
284
|
+
token: tokens.access_token,
|
|
285
|
+
expiresAt: Math.floor(Date.now() / 1e3) + tokens.expires_in
|
|
286
|
+
};
|
|
287
|
+
if (tokens.refresh_token) updatedConfig.refreshToken = tokens.refresh_token;
|
|
288
|
+
(0, import_auth_config.writeAuthConfig)(updatedConfig);
|
|
289
|
+
return updatedConfig.token ?? null;
|
|
290
|
+
} catch (error) {
|
|
291
|
+
(0, import_auth_config.writeAuthConfig)({});
|
|
292
|
+
return null;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
async function getVercelOidcToken(authToken, projectId, teamId) {
|
|
296
|
+
const url = `https://api.vercel.com/v1/projects/${projectId}/token?source=vercel-oidc-refresh${teamId ? `&teamId=${teamId}` : ""}`;
|
|
297
|
+
const res = await fetch(url, {
|
|
298
|
+
method: "POST",
|
|
299
|
+
headers: { Authorization: `Bearer ${authToken}` }
|
|
300
|
+
});
|
|
301
|
+
if (!res.ok) throw new import_token_error.VercelOidcTokenError(`Failed to refresh OIDC token: ${res.statusText}`);
|
|
302
|
+
const tokenRes = await res.json();
|
|
303
|
+
assertVercelOidcTokenResponse(tokenRes);
|
|
304
|
+
return tokenRes;
|
|
305
|
+
}
|
|
306
|
+
function assertVercelOidcTokenResponse(res) {
|
|
307
|
+
if (!res || typeof res !== "object") throw new TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");
|
|
308
|
+
if (!("token" in res) || typeof res.token !== "string") throw new TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again");
|
|
309
|
+
}
|
|
310
|
+
function findProjectInfo() {
|
|
311
|
+
const dir = (0, import_token_io.findRootDir)();
|
|
312
|
+
if (!dir) throw new import_token_error.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");
|
|
313
|
+
const prjPath = path.join(dir, ".vercel", "project.json");
|
|
314
|
+
if (!fs.existsSync(prjPath)) throw new import_token_error.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");
|
|
315
|
+
const prj = JSON.parse(fs.readFileSync(prjPath, "utf8"));
|
|
316
|
+
if (typeof prj.projectId !== "string" && typeof prj.orgId !== "string") throw new TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");
|
|
317
|
+
return {
|
|
318
|
+
projectId: prj.projectId,
|
|
319
|
+
teamId: prj.orgId
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
function saveToken(token, projectId) {
|
|
323
|
+
const dir = (0, import_token_io.getUserDataDir)();
|
|
324
|
+
if (!dir) throw new import_token_error.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");
|
|
325
|
+
const tokenPath = path.join(dir, "com.vercel.token", `${projectId}.json`);
|
|
326
|
+
const tokenJson = JSON.stringify(token);
|
|
327
|
+
fs.mkdirSync(path.dirname(tokenPath), {
|
|
328
|
+
mode: 504,
|
|
329
|
+
recursive: true
|
|
330
|
+
});
|
|
331
|
+
fs.writeFileSync(tokenPath, tokenJson);
|
|
332
|
+
fs.chmodSync(tokenPath, 432);
|
|
333
|
+
}
|
|
334
|
+
function loadToken(projectId) {
|
|
335
|
+
const dir = (0, import_token_io.getUserDataDir)();
|
|
336
|
+
if (!dir) throw new import_token_error.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");
|
|
337
|
+
const tokenPath = path.join(dir, "com.vercel.token", `${projectId}.json`);
|
|
338
|
+
if (!fs.existsSync(tokenPath)) return null;
|
|
339
|
+
const token = JSON.parse(fs.readFileSync(tokenPath, "utf8"));
|
|
340
|
+
assertVercelOidcTokenResponse(token);
|
|
341
|
+
return token;
|
|
342
|
+
}
|
|
343
|
+
function getTokenPayload(token) {
|
|
344
|
+
const tokenParts = token.split(".");
|
|
345
|
+
if (tokenParts.length !== 3) throw new import_token_error.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");
|
|
346
|
+
const base64 = tokenParts[1].replace(/-/g, "+").replace(/_/g, "/");
|
|
347
|
+
const padded = base64.padEnd(base64.length + (4 - base64.length % 4) % 4, "=");
|
|
348
|
+
return JSON.parse(Buffer.from(padded, "base64").toString("utf8"));
|
|
349
|
+
}
|
|
350
|
+
function isExpired(token) {
|
|
351
|
+
return token.exp * 1e3 < Date.now();
|
|
352
|
+
}
|
|
353
|
+
}) });
|
|
354
|
+
|
|
355
|
+
//#endregion
|
|
356
|
+
export { require_token_util as t };
|
|
357
|
+
//# sourceMappingURL=token-util-BpWskZEO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-util-BpWskZEO.mjs","names":["__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__export","__copyProps","__toESM","__toCommonJS","import_os","import_token_error","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__export","__copyProps","__toESM","__toCommonJS","fs","path","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__export","__copyProps","__toCommonJS"],"sources":["../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js","../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js","../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js","../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar token_io_exports = {};\n__export(token_io_exports, {\n findRootDir: () => findRootDir,\n getUserDataDir: () => getUserDataDir\n});\nmodule.exports = __toCommonJS(token_io_exports);\nvar import_path = __toESM(require(\"path\"));\nvar import_fs = __toESM(require(\"fs\"));\nvar import_os = __toESM(require(\"os\"));\nvar import_token_error = require(\"./token-error\");\nfunction findRootDir() {\n try {\n let dir = process.cwd();\n while (dir !== import_path.default.dirname(dir)) {\n const pkgPath = import_path.default.join(dir, \".vercel\");\n if (import_fs.default.existsSync(pkgPath)) {\n return dir;\n }\n dir = import_path.default.dirname(dir);\n }\n } catch (e) {\n throw new import_token_error.VercelOidcTokenError(\n \"Token refresh only supported in node server environments\"\n );\n }\n return null;\n}\nfunction getUserDataDir() {\n if (process.env.XDG_DATA_HOME) {\n return process.env.XDG_DATA_HOME;\n }\n switch (import_os.default.platform()) {\n case \"darwin\":\n return import_path.default.join(import_os.default.homedir(), \"Library/Application Support\");\n case \"linux\":\n return import_path.default.join(import_os.default.homedir(), \".local/share\");\n case \"win32\":\n if (process.env.LOCALAPPDATA) {\n return process.env.LOCALAPPDATA;\n }\n return null;\n default:\n return null;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n findRootDir,\n getUserDataDir\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar auth_config_exports = {};\n__export(auth_config_exports, {\n isValidAccessToken: () => isValidAccessToken,\n readAuthConfig: () => readAuthConfig,\n writeAuthConfig: () => writeAuthConfig\n});\nmodule.exports = __toCommonJS(auth_config_exports);\nvar fs = __toESM(require(\"fs\"));\nvar path = __toESM(require(\"path\"));\nvar import_token_util = require(\"./token-util\");\nfunction getAuthConfigPath() {\n const dataDir = (0, import_token_util.getVercelDataDir)();\n if (!dataDir) {\n throw new Error(\n `Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`\n );\n }\n return path.join(dataDir, \"auth.json\");\n}\nfunction readAuthConfig() {\n try {\n const authPath = getAuthConfigPath();\n if (!fs.existsSync(authPath)) {\n return null;\n }\n const content = fs.readFileSync(authPath, \"utf8\");\n if (!content) {\n return null;\n }\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n}\nfunction writeAuthConfig(config) {\n const authPath = getAuthConfigPath();\n const authDir = path.dirname(authPath);\n if (!fs.existsSync(authDir)) {\n fs.mkdirSync(authDir, { mode: 504, recursive: true });\n }\n fs.writeFileSync(authPath, JSON.stringify(config, null, 2), { mode: 384 });\n}\nfunction isValidAccessToken(authConfig) {\n if (!authConfig.token)\n return false;\n if (typeof authConfig.expiresAt !== \"number\")\n return true;\n const nowInSeconds = Math.floor(Date.now() / 1e3);\n return authConfig.expiresAt >= nowInSeconds;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n isValidAccessToken,\n readAuthConfig,\n writeAuthConfig\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar oauth_exports = {};\n__export(oauth_exports, {\n processTokenResponse: () => processTokenResponse,\n refreshTokenRequest: () => refreshTokenRequest\n});\nmodule.exports = __toCommonJS(oauth_exports);\nvar import_os = require(\"os\");\nconst VERCEL_ISSUER = \"https://vercel.com\";\nconst VERCEL_CLI_CLIENT_ID = \"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp\";\nconst userAgent = `@vercel/oidc node-${process.version} ${(0, import_os.platform)()} (${(0, import_os.arch)()}) ${(0, import_os.hostname)()}`;\nlet _tokenEndpoint = null;\nasync function getTokenEndpoint() {\n if (_tokenEndpoint) {\n return _tokenEndpoint;\n }\n const discoveryUrl = `${VERCEL_ISSUER}/.well-known/openid-configuration`;\n const response = await fetch(discoveryUrl, {\n headers: { \"user-agent\": userAgent }\n });\n if (!response.ok) {\n throw new Error(\"Failed to discover OAuth endpoints\");\n }\n const metadata = await response.json();\n if (!metadata || typeof metadata.token_endpoint !== \"string\") {\n throw new Error(\"Invalid OAuth discovery response\");\n }\n const endpoint = metadata.token_endpoint;\n _tokenEndpoint = endpoint;\n return endpoint;\n}\nasync function refreshTokenRequest(options) {\n const tokenEndpoint = await getTokenEndpoint();\n return await fetch(tokenEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"user-agent\": userAgent\n },\n body: new URLSearchParams({\n client_id: VERCEL_CLI_CLIENT_ID,\n grant_type: \"refresh_token\",\n ...options\n })\n });\n}\nasync function processTokenResponse(response) {\n const json = await response.json();\n if (!response.ok) {\n const errorMsg = typeof json === \"object\" && json && \"error\" in json ? String(json.error) : \"Token refresh failed\";\n return [new Error(errorMsg)];\n }\n if (typeof json !== \"object\" || json === null) {\n return [new Error(\"Invalid token response\")];\n }\n if (typeof json.access_token !== \"string\") {\n return [new Error(\"Missing access_token in response\")];\n }\n if (json.token_type !== \"Bearer\") {\n return [new Error(\"Invalid token_type in response\")];\n }\n if (typeof json.expires_in !== \"number\") {\n return [new Error(\"Missing expires_in in response\")];\n }\n return [null, json];\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n processTokenResponse,\n refreshTokenRequest\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar token_util_exports = {};\n__export(token_util_exports, {\n assertVercelOidcTokenResponse: () => assertVercelOidcTokenResponse,\n findProjectInfo: () => findProjectInfo,\n getTokenPayload: () => getTokenPayload,\n getVercelCliToken: () => getVercelCliToken,\n getVercelDataDir: () => getVercelDataDir,\n getVercelOidcToken: () => getVercelOidcToken,\n isExpired: () => isExpired,\n loadToken: () => loadToken,\n saveToken: () => saveToken\n});\nmodule.exports = __toCommonJS(token_util_exports);\nvar path = __toESM(require(\"path\"));\nvar fs = __toESM(require(\"fs\"));\nvar import_token_error = require(\"./token-error\");\nvar import_token_io = require(\"./token-io\");\nvar import_auth_config = require(\"./auth-config\");\nvar import_oauth = require(\"./oauth\");\nfunction getVercelDataDir() {\n const vercelFolder = \"com.vercel.cli\";\n const dataDir = (0, import_token_io.getUserDataDir)();\n if (!dataDir) {\n return null;\n }\n return path.join(dataDir, vercelFolder);\n}\nasync function getVercelCliToken() {\n const authConfig = (0, import_auth_config.readAuthConfig)();\n if (!authConfig) {\n return null;\n }\n if ((0, import_auth_config.isValidAccessToken)(authConfig)) {\n return authConfig.token || null;\n }\n if (!authConfig.refreshToken) {\n (0, import_auth_config.writeAuthConfig)({});\n return null;\n }\n try {\n const tokenResponse = await (0, import_oauth.refreshTokenRequest)({\n refresh_token: authConfig.refreshToken\n });\n const [tokensError, tokens] = await (0, import_oauth.processTokenResponse)(tokenResponse);\n if (tokensError || !tokens) {\n (0, import_auth_config.writeAuthConfig)({});\n return null;\n }\n const updatedConfig = {\n token: tokens.access_token,\n expiresAt: Math.floor(Date.now() / 1e3) + tokens.expires_in\n };\n if (tokens.refresh_token) {\n updatedConfig.refreshToken = tokens.refresh_token;\n }\n (0, import_auth_config.writeAuthConfig)(updatedConfig);\n return updatedConfig.token ?? null;\n } catch (error) {\n (0, import_auth_config.writeAuthConfig)({});\n return null;\n }\n}\nasync function getVercelOidcToken(authToken, projectId, teamId) {\n const url = `https://api.vercel.com/v1/projects/${projectId}/token?source=vercel-oidc-refresh${teamId ? `&teamId=${teamId}` : \"\"}`;\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${authToken}`\n }\n });\n if (!res.ok) {\n throw new import_token_error.VercelOidcTokenError(\n `Failed to refresh OIDC token: ${res.statusText}`\n );\n }\n const tokenRes = await res.json();\n assertVercelOidcTokenResponse(tokenRes);\n return tokenRes;\n}\nfunction assertVercelOidcTokenResponse(res) {\n if (!res || typeof res !== \"object\") {\n throw new TypeError(\n \"Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again\"\n );\n }\n if (!(\"token\" in res) || typeof res.token !== \"string\") {\n throw new TypeError(\n \"Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again\"\n );\n }\n}\nfunction findProjectInfo() {\n const dir = (0, import_token_io.findRootDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find project root directory. Have you linked your project with `vc link?`\"\n );\n }\n const prjPath = path.join(dir, \".vercel\", \"project.json\");\n if (!fs.existsSync(prjPath)) {\n throw new import_token_error.VercelOidcTokenError(\n \"project.json not found, have you linked your project with `vc link?`\"\n );\n }\n const prj = JSON.parse(fs.readFileSync(prjPath, \"utf8\"));\n if (typeof prj.projectId !== \"string\" && typeof prj.orgId !== \"string\") {\n throw new TypeError(\n \"Expected a string-valued projectId property. Try running `vc link` to re-link your project.\"\n );\n }\n return { projectId: prj.projectId, teamId: prj.orgId };\n}\nfunction saveToken(token, projectId) {\n const dir = (0, import_token_io.getUserDataDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find user data directory. Please reach out to Vercel support.\"\n );\n }\n const tokenPath = path.join(dir, \"com.vercel.token\", `${projectId}.json`);\n const tokenJson = JSON.stringify(token);\n fs.mkdirSync(path.dirname(tokenPath), { mode: 504, recursive: true });\n fs.writeFileSync(tokenPath, tokenJson);\n fs.chmodSync(tokenPath, 432);\n return;\n}\nfunction loadToken(projectId) {\n const dir = (0, import_token_io.getUserDataDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find user data directory. Please reach out to Vercel support.\"\n );\n }\n const tokenPath = path.join(dir, \"com.vercel.token\", `${projectId}.json`);\n if (!fs.existsSync(tokenPath)) {\n return null;\n }\n const token = JSON.parse(fs.readFileSync(tokenPath, \"utf8\"));\n assertVercelOidcTokenResponse(token);\n return token;\n}\nfunction getTokenPayload(token) {\n const tokenParts = token.split(\".\");\n if (tokenParts.length !== 3) {\n throw new import_token_error.VercelOidcTokenError(\n \"Invalid token. Please run `vc env pull` and try again\"\n );\n }\n const base64 = tokenParts[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64.padEnd(\n base64.length + (4 - base64.length % 4) % 4,\n \"=\"\n );\n return JSON.parse(Buffer.from(padded, \"base64\").toString(\"utf8\"));\n}\nfunction isExpired(token) {\n return token.exp * 1e3 < Date.now();\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n assertVercelOidcTokenResponse,\n findProjectInfo,\n getTokenPayload,\n getVercelCliToken,\n getVercelDataDir,\n getVercelOidcToken,\n isExpired,\n loadToken,\n saveToken\n});\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { a as stripAnsi, i as init_strip_ansi, t as stringWidth } from "./string-width-D78SVDLD.mjs";
|
|
2
|
+
import { t as ansi_styles_default } from "./ansi-styles-B57ln_zO.mjs";
|
|
3
|
+
|
|
4
|
+
//#region ../../node_modules/.pnpm/wrap-ansi@9.0.0/node_modules/wrap-ansi/index.js
|
|
5
|
+
init_strip_ansi();
|
|
6
|
+
const ESCAPES = new Set(["\x1B", ""]);
|
|
7
|
+
const END_CODE = 39;
|
|
8
|
+
const ANSI_ESCAPE_BELL = "\x07";
|
|
9
|
+
const ANSI_CSI = "[";
|
|
10
|
+
const ANSI_OSC = "]";
|
|
11
|
+
const ANSI_SGR_TERMINATOR = "m";
|
|
12
|
+
const ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
|
|
13
|
+
const wrapAnsiCode = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
|
|
14
|
+
const wrapAnsiHyperlink = (url) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;
|
|
15
|
+
const wordLengths = (string) => string.split(" ").map((character) => stringWidth(character));
|
|
16
|
+
const wrapWord = (rows, word, columns) => {
|
|
17
|
+
const characters = [...word];
|
|
18
|
+
let isInsideEscape = false;
|
|
19
|
+
let isInsideLinkEscape = false;
|
|
20
|
+
let visible = stringWidth(stripAnsi(rows.at(-1)));
|
|
21
|
+
for (const [index, character] of characters.entries()) {
|
|
22
|
+
const characterLength = stringWidth(character);
|
|
23
|
+
if (visible + characterLength <= columns) rows[rows.length - 1] += character;
|
|
24
|
+
else {
|
|
25
|
+
rows.push(character);
|
|
26
|
+
visible = 0;
|
|
27
|
+
}
|
|
28
|
+
if (ESCAPES.has(character)) {
|
|
29
|
+
isInsideEscape = true;
|
|
30
|
+
isInsideLinkEscape = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join("") === ANSI_ESCAPE_LINK;
|
|
31
|
+
}
|
|
32
|
+
if (isInsideEscape) {
|
|
33
|
+
if (isInsideLinkEscape) {
|
|
34
|
+
if (character === ANSI_ESCAPE_BELL) {
|
|
35
|
+
isInsideEscape = false;
|
|
36
|
+
isInsideLinkEscape = false;
|
|
37
|
+
}
|
|
38
|
+
} else if (character === ANSI_SGR_TERMINATOR) isInsideEscape = false;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
visible += characterLength;
|
|
42
|
+
if (visible === columns && index < characters.length - 1) {
|
|
43
|
+
rows.push("");
|
|
44
|
+
visible = 0;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!visible && rows.at(-1).length > 0 && rows.length > 1) rows[rows.length - 2] += rows.pop();
|
|
48
|
+
};
|
|
49
|
+
const stringVisibleTrimSpacesRight = (string) => {
|
|
50
|
+
const words = string.split(" ");
|
|
51
|
+
let last = words.length;
|
|
52
|
+
while (last > 0) {
|
|
53
|
+
if (stringWidth(words[last - 1]) > 0) break;
|
|
54
|
+
last--;
|
|
55
|
+
}
|
|
56
|
+
if (last === words.length) return string;
|
|
57
|
+
return words.slice(0, last).join(" ") + words.slice(last).join("");
|
|
58
|
+
};
|
|
59
|
+
const exec = (string, columns, options = {}) => {
|
|
60
|
+
if (options.trim !== false && string.trim() === "") return "";
|
|
61
|
+
let returnValue = "";
|
|
62
|
+
let escapeCode;
|
|
63
|
+
let escapeUrl;
|
|
64
|
+
const lengths = wordLengths(string);
|
|
65
|
+
let rows = [""];
|
|
66
|
+
for (const [index, word] of string.split(" ").entries()) {
|
|
67
|
+
if (options.trim !== false) rows[rows.length - 1] = rows.at(-1).trimStart();
|
|
68
|
+
let rowLength = stringWidth(rows.at(-1));
|
|
69
|
+
if (index !== 0) {
|
|
70
|
+
if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
|
|
71
|
+
rows.push("");
|
|
72
|
+
rowLength = 0;
|
|
73
|
+
}
|
|
74
|
+
if (rowLength > 0 || options.trim === false) {
|
|
75
|
+
rows[rows.length - 1] += " ";
|
|
76
|
+
rowLength++;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (options.hard && lengths[index] > columns) {
|
|
80
|
+
const remainingColumns = columns - rowLength;
|
|
81
|
+
const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);
|
|
82
|
+
if (Math.floor((lengths[index] - 1) / columns) < breaksStartingThisLine) rows.push("");
|
|
83
|
+
wrapWord(rows, word, columns);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {
|
|
87
|
+
if (options.wordWrap === false && rowLength < columns) {
|
|
88
|
+
wrapWord(rows, word, columns);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
rows.push("");
|
|
92
|
+
}
|
|
93
|
+
if (rowLength + lengths[index] > columns && options.wordWrap === false) {
|
|
94
|
+
wrapWord(rows, word, columns);
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
rows[rows.length - 1] += word;
|
|
98
|
+
}
|
|
99
|
+
if (options.trim !== false) rows = rows.map((row) => stringVisibleTrimSpacesRight(row));
|
|
100
|
+
const preString = rows.join("\n");
|
|
101
|
+
const pre = [...preString];
|
|
102
|
+
let preStringIndex = 0;
|
|
103
|
+
for (const [index, character] of pre.entries()) {
|
|
104
|
+
returnValue += character;
|
|
105
|
+
if (ESCAPES.has(character)) {
|
|
106
|
+
const { groups } = (/* @__PURE__ */ new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`)).exec(preString.slice(preStringIndex)) || { groups: {} };
|
|
107
|
+
if (groups.code !== void 0) {
|
|
108
|
+
const code$1 = Number.parseFloat(groups.code);
|
|
109
|
+
escapeCode = code$1 === END_CODE ? void 0 : code$1;
|
|
110
|
+
} else if (groups.uri !== void 0) escapeUrl = groups.uri.length === 0 ? void 0 : groups.uri;
|
|
111
|
+
}
|
|
112
|
+
const code = ansi_styles_default.codes.get(Number(escapeCode));
|
|
113
|
+
if (pre[index + 1] === "\n") {
|
|
114
|
+
if (escapeUrl) returnValue += wrapAnsiHyperlink("");
|
|
115
|
+
if (escapeCode && code) returnValue += wrapAnsiCode(code);
|
|
116
|
+
} else if (character === "\n") {
|
|
117
|
+
if (escapeCode && code) returnValue += wrapAnsiCode(escapeCode);
|
|
118
|
+
if (escapeUrl) returnValue += wrapAnsiHyperlink(escapeUrl);
|
|
119
|
+
}
|
|
120
|
+
preStringIndex += character.length;
|
|
121
|
+
}
|
|
122
|
+
return returnValue;
|
|
123
|
+
};
|
|
124
|
+
function wrapAnsi(string, columns, options) {
|
|
125
|
+
return String(string).normalize().replaceAll("\r\n", "\n").split("\n").map((line) => exec(line, columns, options)).join("\n");
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
//#endregion
|
|
129
|
+
export { wrapAnsi as t };
|
|
130
|
+
//# sourceMappingURL=wrap-ansi-DoQ74EEn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-ansi-DoQ74EEn.mjs","names":["code","ansiStyles"],"sources":["../../../node_modules/.pnpm/wrap-ansi@9.0.0/node_modules/wrap-ansi/index.js"],"sourcesContent":["import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|