getmyenv 0.3.3 → 0.3.4
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 +9 -9
- package/dist/bin.js +23 -0
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -19
- package/dist/cli.js.map +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +9 -14
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/link.d.ts +2 -2
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +40 -13
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +6 -11
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +10 -17
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/token.d.ts +12 -13
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/commands/token.js +30 -154
- package/dist/commands/token.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +9 -18
- package/dist/commands/whoami.js.map +1 -1
- package/dist/lib/api.d.ts +12 -10
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +40 -55
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/bootstrap.d.ts +6 -5
- package/dist/lib/bootstrap.d.ts.map +1 -1
- package/dist/lib/bootstrap.js +15 -19
- package/dist/lib/bootstrap.js.map +1 -1
- package/dist/lib/credentials.d.ts +14 -36
- package/dist/lib/credentials.d.ts.map +1 -1
- package/dist/lib/credentials.js +41 -181
- package/dist/lib/credentials.js.map +1 -1
- package/dist/lib/fs.js +2 -2
- package/dist/lib/fs.js.map +1 -1
- package/dist/lib/pek.d.ts +1 -1
- package/dist/lib/pek.d.ts.map +1 -1
- package/dist/lib/pek.js +1 -1
- package/dist/lib/pek.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/token.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { exec } from "node:child_process";
|
|
2
2
|
import pc from "picocolors";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { ApiClient, resolveApiUrl } from "../lib/api.js";
|
|
3
|
+
import { readLine, readProjectMeta } from "../lib/fs.js";
|
|
4
|
+
import { clearFolderToken, readFolderToken, tokenFilePath, writeFolderToken, } from "../lib/credentials.js";
|
|
5
|
+
import { ApiClient, resolveApiUrl, } from "../lib/api.js";
|
|
7
6
|
import { linkCommand } from "./link.js";
|
|
8
7
|
function maskToken(token) {
|
|
9
8
|
const t = token.trim();
|
|
@@ -23,39 +22,6 @@ function openBrowser(url) {
|
|
|
23
22
|
function sleep(ms) {
|
|
24
23
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
25
24
|
}
|
|
26
|
-
export function tokenListCommand() {
|
|
27
|
-
const store = readCredentialsV2();
|
|
28
|
-
console.log(pc.bold("\ngetmyenv token list\n"));
|
|
29
|
-
console.log(pc.dim(`File: ${credentialsFilePath()}\n`));
|
|
30
|
-
if (hasRetiredCredentialsFile() && !store) {
|
|
31
|
-
console.log(pc.yellow("Old credentials file retired. Run: npx getmyenv token\n"));
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
if (!store || Object.keys(store.tokens).length === 0) {
|
|
35
|
-
console.log(pc.dim("No saved tokens. Run: npx getmyenv token\n"));
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const defaultId = store.default != null ? String(store.default) : undefined;
|
|
39
|
-
for (const [id, entry] of Object.entries(store.tokens)) {
|
|
40
|
-
const mark = defaultId === id ? "*" : " ";
|
|
41
|
-
console.log(`${mark} ${id} ${entry.projectName} ${entry.cliScope} ${maskToken(entry.token)}`);
|
|
42
|
-
if (entry.apiUrl)
|
|
43
|
-
console.log(pc.dim(` API: ${entry.apiUrl}`));
|
|
44
|
-
}
|
|
45
|
-
console.log("");
|
|
46
|
-
if (defaultId) {
|
|
47
|
-
console.log(pc.dim(`Default: ${defaultId} (*). Use: token use <name|id>\n`));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
export function tokenUseCommand(nameOrId) {
|
|
51
|
-
console.log(pc.bold("\ngetmyenv token use\n"));
|
|
52
|
-
const match = findTokenByNameOrId(nameOrId.trim());
|
|
53
|
-
if (!match) {
|
|
54
|
-
throw new Error(`No saved token matches "${nameOrId}". Run: npx getmyenv token list`);
|
|
55
|
-
}
|
|
56
|
-
setDefaultProject(match.projectId);
|
|
57
|
-
console.log(`${pc.green("✓")} Default token: ${match.entry.projectName} (${match.projectId}, ${match.entry.cliScope})\n`);
|
|
58
|
-
}
|
|
59
25
|
async function saveVerifiedToken(token, apiUrl, opts) {
|
|
60
26
|
const client = new ApiClient(apiUrl, token);
|
|
61
27
|
let who;
|
|
@@ -67,34 +33,25 @@ async function saveVerifiedToken(token, apiUrl, opts) {
|
|
|
67
33
|
throw new Error(`Could not verify token: ${msg}`);
|
|
68
34
|
}
|
|
69
35
|
const scope = who.cliScope === "production" ? "production" : "development";
|
|
70
|
-
const file =
|
|
36
|
+
const file = writeFolderToken({
|
|
71
37
|
token,
|
|
72
38
|
apiUrl,
|
|
73
|
-
projectName: who.projectName,
|
|
74
39
|
cliScope: scope,
|
|
75
|
-
|
|
76
|
-
|
|
40
|
+
projectId: who.projectId,
|
|
41
|
+
projectName: who.projectName,
|
|
42
|
+
label: who.label ?? undefined,
|
|
43
|
+
});
|
|
44
|
+
console.log(`\n${pc.green("✓")} Authorized this folder: ${file}`);
|
|
77
45
|
console.log(pc.dim(`Token: ${who.label ?? scope} · ${who.projectName} · ${scope}`));
|
|
78
46
|
console.log(pc.dim(`API: ${apiUrl}`));
|
|
79
47
|
console.log(pc.dim(`Project: ${who.projectId}\n`));
|
|
80
48
|
const meta = readProjectMeta();
|
|
81
|
-
if (!opts.skipLinkOffer &&
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
});
|
|
86
|
-
if (doLink) {
|
|
87
|
-
await linkCommand(undefined, { apiUrl });
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
console.log(pc.dim("Run: npx getmyenv link\n"));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (!opts.skipLinkOffer) {
|
|
96
|
-
console.log("Next: npx getmyenv link then npx getmyenv run -- <cmd>\n");
|
|
49
|
+
if (!opts.skipLinkOffer && !meta?.projectId) {
|
|
50
|
+
// First-time in this folder: link now so verbs work without another prompt.
|
|
51
|
+
await linkCommand(undefined, { apiUrl, skipPushOffer: true, force: true });
|
|
52
|
+
return;
|
|
97
53
|
}
|
|
54
|
+
console.log("Next: npx getmyenv run -- <cmd>\n");
|
|
98
55
|
}
|
|
99
56
|
async function tokenViaPaste(opts, apiUrl) {
|
|
100
57
|
const cliPage = `${apiUrl.replace(/\/$/, "")}/cli`;
|
|
@@ -139,6 +96,7 @@ async function tokenViaBrowser(opts, apiUrl) {
|
|
|
139
96
|
throw new Error(`Could not poll CLI auth: ${msg}`);
|
|
140
97
|
}
|
|
141
98
|
if (poll.status === "approved" && poll.token) {
|
|
99
|
+
process.stdout.write("\n");
|
|
142
100
|
await saveVerifiedToken(poll.token, apiUrl, opts);
|
|
143
101
|
return;
|
|
144
102
|
}
|
|
@@ -156,19 +114,16 @@ async function tokenViaBrowser(opts, apiUrl) {
|
|
|
156
114
|
throw new Error("CLI authorization timed out. Run: npx getmyenv token");
|
|
157
115
|
}
|
|
158
116
|
/**
|
|
159
|
-
* Authorize a per-project CLI token
|
|
117
|
+
* Authorize a per-project CLI token in this folder. Not a full account login.
|
|
160
118
|
* Default: browser flow. Use --paste to type/paste a token from /cli.
|
|
119
|
+
* Re-running overwrites the existing token in `.getmyenv/token.json`.
|
|
161
120
|
*/
|
|
162
121
|
export async function tokenCommand(opts = {}) {
|
|
163
122
|
console.log(pc.bold("\ngetmyenv token\n"));
|
|
164
|
-
console.log(pc.dim("
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
const store = readCredentialsV2();
|
|
169
|
-
const count = store ? Object.keys(store.tokens).length : 0;
|
|
170
|
-
if (count > 0) {
|
|
171
|
-
console.log(pc.dim(`${count} token(s) already saved. A new token replaces the entry for its project.\n`));
|
|
123
|
+
console.log(pc.dim("Authorizes this folder with a per-project CLI token. Not a full account login.\n"));
|
|
124
|
+
const existing = readFolderToken();
|
|
125
|
+
if (existing) {
|
|
126
|
+
console.log(pc.dim(`Replacing existing token: ${existing.projectName} (${existing.cliScope}, ${maskToken(existing.token)}) at ${tokenFilePath()}\n`));
|
|
172
127
|
}
|
|
173
128
|
const apiUrl = opts.apiUrl?.trim() ||
|
|
174
129
|
process.env.GETMYENV_API_URL?.trim() ||
|
|
@@ -179,95 +134,16 @@ export async function tokenCommand(opts = {}) {
|
|
|
179
134
|
}
|
|
180
135
|
await tokenViaBrowser(opts, apiUrl);
|
|
181
136
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
console.log(`${pc.green("✓")} Cleared local wrapped-key.json`);
|
|
191
|
-
}
|
|
192
|
-
console.log("");
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
const store = readCredentialsV2();
|
|
196
|
-
const ids = store ? Object.keys(store.tokens) : [];
|
|
197
|
-
if (!store || ids.length === 0) {
|
|
198
|
-
console.log(pc.dim("No saved tokens.\n"));
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const meta = readProjectMeta();
|
|
202
|
-
let projectId;
|
|
203
|
-
let clearAll = false;
|
|
204
|
-
if (meta?.projectId != null && store.tokens[String(meta.projectId)]) {
|
|
205
|
-
projectId = String(meta.projectId);
|
|
206
|
-
}
|
|
207
|
-
else if (ids.length === 1) {
|
|
208
|
-
projectId = ids[0];
|
|
209
|
-
}
|
|
210
|
-
else if (process.stdin.isTTY) {
|
|
211
|
-
const labels = ids.map((id) => {
|
|
212
|
-
const e = store.tokens[id];
|
|
213
|
-
return `${e.projectName} (${id}, ${e.cliScope})`;
|
|
214
|
-
});
|
|
215
|
-
labels.push("All saved tokens");
|
|
216
|
-
const pick = await promptChoice("Remove which token?", labels, 0);
|
|
217
|
-
if (pick === labels.length - 1) {
|
|
218
|
-
clearAll = true;
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
projectId = ids[pick];
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
throw new Error("Multiple tokens saved. Re-run in a linked project folder, or use an interactive terminal.");
|
|
226
|
-
}
|
|
227
|
-
if (clearAll) {
|
|
228
|
-
if (process.stdin.isTTY) {
|
|
229
|
-
const ok = await promptConfirm("Remove all saved CLI tokens?", {
|
|
230
|
-
defaultYes: false,
|
|
231
|
-
});
|
|
232
|
-
if (!ok) {
|
|
233
|
-
console.log(pc.dim("Kept credentials.\n"));
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
const path = credentialsFilePath();
|
|
238
|
-
if (clearAllCredentials()) {
|
|
239
|
-
console.log(`${pc.green("✓")} Cleared all credentials at ${path}`);
|
|
240
|
-
}
|
|
241
|
-
if (opts.fresh) {
|
|
242
|
-
clearWrappedKey();
|
|
243
|
-
console.log(`${pc.green("✓")} Cleared local wrapped-key.json`);
|
|
244
|
-
}
|
|
245
|
-
console.log("");
|
|
137
|
+
/**
|
|
138
|
+
* Remove the token for this folder. Convenience alias for `link --clear`.
|
|
139
|
+
* Kept as a courtesy; the underlying store is one folder = one token.
|
|
140
|
+
*/
|
|
141
|
+
export async function tokenClearCommand() {
|
|
142
|
+
console.log(pc.bold("\ngetmyenv token clear\n"));
|
|
143
|
+
if (clearFolderToken()) {
|
|
144
|
+
console.log(`${pc.green("✓")} Removed ${tokenFilePath()}\n`);
|
|
246
145
|
return;
|
|
247
146
|
}
|
|
248
|
-
|
|
249
|
-
const label = entry ? `${entry.projectName} (${projectId})` : projectId;
|
|
250
|
-
if (process.stdin.isTTY) {
|
|
251
|
-
const ok = await promptConfirm(`Remove saved token for ${label}?`, {
|
|
252
|
-
defaultYes: true,
|
|
253
|
-
});
|
|
254
|
-
if (!ok) {
|
|
255
|
-
console.log(pc.dim("Kept credentials.\n"));
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
if (removeTokenEntry(projectId)) {
|
|
260
|
-
console.log(`${pc.green("✓")} Removed token for ${label}`);
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
console.log(pc.dim(`No saved token for ${label}`));
|
|
264
|
-
}
|
|
265
|
-
const linkedId = meta?.projectId != null ? String(meta.projectId) : null;
|
|
266
|
-
if (opts.fresh || (linkedId && linkedId === String(projectId))) {
|
|
267
|
-
if (clearWrappedKey()) {
|
|
268
|
-
console.log(`${pc.green("✓")} Cleared local wrapped-key.json`);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
console.log("");
|
|
147
|
+
console.log(pc.dim("No token in this folder.\n"));
|
|
272
148
|
}
|
|
273
149
|
//# sourceMappingURL=token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,SAAS,EACT,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAUxC,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACjC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GACP,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,aAAa,GAAG,GAAG;QACrB,CAAC,CAAC,QAAQ,KAAK,QAAQ;YACrB,CAAC,CAAC,SAAS,GAAG,GAAG;YACjB,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,KAAa,EACb,MAAc,EACd,IAAe;IAEf,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,GAAmB,CAAC;IACxB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAiB,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,GACT,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAE/D,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,KAAK;QACL,MAAM;QACN,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;KAC9B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,WAAW,MAAM,KAAK,EAAE,CAAC,CACvE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC5C,4EAA4E;QAC5E,MAAM,WAAW,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAe,EAAE,MAAc;IAC1D,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAe,EAAE,MAAc;IAC5D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAMrC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAW,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAChD,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAK7B,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CACzB,KAAK,EACL,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CACtE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,EAAE,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CACtE,CAAC;QACF,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAkB,EAAE;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CACJ,kFAAkF,CACnF,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CACJ,6BAA6B,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,aAAa,EAAE,IAAI,CACjI,CACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE;QACpC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACjD,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,aAAa,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAaA,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAQF,wBAAsB,aAAa,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCxE"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import pc from "picocolors";
|
|
2
|
-
import {
|
|
2
|
+
import { readFolderToken, tokenFilePath, } from "../lib/credentials.js";
|
|
3
3
|
import { readProjectMeta } from "../lib/fs.js";
|
|
4
4
|
import { ApiClient, ensureSessionToken, resolveApiUrl, } from "../lib/api.js";
|
|
5
5
|
function maskToken(token) {
|
|
@@ -10,13 +10,12 @@ function maskToken(token) {
|
|
|
10
10
|
}
|
|
11
11
|
export async function whoamiCommand(opts = {}) {
|
|
12
12
|
console.log(pc.bold("\ngetmyenv whoami\n"));
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const apiUrl = resolveApiUrl(opts.apiUrl, meta?.projectId);
|
|
13
|
+
const token = await ensureSessionToken();
|
|
14
|
+
const apiUrl = resolveApiUrl(opts.apiUrl);
|
|
16
15
|
const client = new ApiClient(apiUrl, token);
|
|
17
16
|
const who = await client.request("GET", "/api/cli/whoami");
|
|
18
|
-
const
|
|
19
|
-
const
|
|
17
|
+
const folder = readFolderToken();
|
|
18
|
+
const meta = readProjectMeta();
|
|
20
19
|
console.log(`Token label: ${who.label ?? who.cliScope}`);
|
|
21
20
|
console.log(`Token scope: ${who.cliScope}`);
|
|
22
21
|
console.log(`Project: ${who.projectName} (${who.projectId})`);
|
|
@@ -28,21 +27,13 @@ export async function whoamiCommand(opts = {}) {
|
|
|
28
27
|
}
|
|
29
28
|
console.log(`defaultEnv: ${meta?.defaultEnv ?? who.cliScope}`);
|
|
30
29
|
console.log(`API: ${apiUrl}`);
|
|
31
|
-
console.log(`
|
|
30
|
+
console.log(`Auth: ${tokenFilePath()}`);
|
|
32
31
|
if (process.env.GETMYENV_TOKEN?.trim()) {
|
|
33
32
|
console.log(pc.dim("Source: GETMYENV_TOKEN"));
|
|
34
33
|
}
|
|
35
|
-
else if (
|
|
36
|
-
console.log(pc.dim(`Source:
|
|
37
|
-
|
|
38
|
-
console.log(pc.dim(`Token: ${maskToken(resolved.token)}`));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (store) {
|
|
42
|
-
console.log(pc.dim(`Saved tokens: ${Object.keys(store.tokens).length}`));
|
|
43
|
-
}
|
|
44
|
-
else if (hasRetiredCredentialsFile()) {
|
|
45
|
-
console.log(pc.dim("Saved tokens: (retired file; run token)"));
|
|
34
|
+
else if (folder) {
|
|
35
|
+
console.log(pc.dim(`Source: folder token`));
|
|
36
|
+
console.log(pc.dim(`Token: ${maskToken(folder.token)}`));
|
|
46
37
|
}
|
|
47
38
|
console.log("");
|
|
48
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,aAAa,GAEd,MAAM,eAAe,CAAC;AAMvB,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACjC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAmB,EAAE;IACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAiB,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAE/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IACnE,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,GACjD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAC1D,EAAE,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,iBAAiB,aAAa,EAAE,EAAE,CAAC,CAAC;IAEhD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/lib/api.d.ts
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* CLI API client. Never logs response bodies that may contain ciphertext details
|
|
3
3
|
* beyond what is needed; never prints secret plaintext.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { type CliScope } from "./credentials.js";
|
|
6
6
|
/** Keep in sync with packages/cli/package.json version. */
|
|
7
|
-
export declare const CLI_VERSION = "0.3.
|
|
7
|
+
export declare const CLI_VERSION = "0.3.4";
|
|
8
8
|
export type WhoamiResponse = {
|
|
9
9
|
projectId: string;
|
|
10
10
|
projectName: string;
|
|
@@ -12,8 +12,8 @@ export type WhoamiResponse = {
|
|
|
12
12
|
label: string | null;
|
|
13
13
|
allowedCidrs?: string[];
|
|
14
14
|
};
|
|
15
|
-
/** Resolve API base:
|
|
16
|
-
export declare function resolveApiUrl(cliOverride?: string,
|
|
15
|
+
/** Resolve API base: CLI override → env var → folder token/meta → production. */
|
|
16
|
+
export declare function resolveApiUrl(cliOverride?: string, _hint?: unknown): string;
|
|
17
17
|
export declare class ApiClient {
|
|
18
18
|
private baseUrl;
|
|
19
19
|
private token?;
|
|
@@ -21,12 +21,14 @@ export declare class ApiClient {
|
|
|
21
21
|
private headers;
|
|
22
22
|
request<T>(method: string, path: string, body?: unknown, extraHeaders?: Record<string, string>): Promise<T>;
|
|
23
23
|
}
|
|
24
|
-
/** Env /
|
|
25
|
-
export declare function getSessionToken(
|
|
24
|
+
/** Env / folder token only (no prompt). Prefer ensureSessionToken for interactive commands. */
|
|
25
|
+
export declare function getSessionToken(): string | undefined;
|
|
26
|
+
/** True when the folder is already authorized (env or .getmyenv/token.json). */
|
|
27
|
+
export declare function hasSessionToken(): boolean;
|
|
26
28
|
/**
|
|
27
|
-
* Env →
|
|
28
|
-
* Non-TTY
|
|
29
|
+
* Env → folder token. When missing, TTY runs the browser auth flow (via tokenCommand)
|
|
30
|
+
* and writes `.getmyenv/token.json`. Non-TTY throws.
|
|
29
31
|
*/
|
|
30
|
-
export declare function ensureSessionToken(
|
|
31
|
-
export {
|
|
32
|
+
export declare function ensureSessionToken(_hint?: unknown): Promise<string>;
|
|
33
|
+
export { readFolderToken, writeFolderToken, tokenFilePath, } from "./credentials.js";
|
|
32
34
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,kBAAkB,CAAC;AAE1B,2DAA2D;AAC3D,eAAO,MAAM,WAAW,UAAU,CAAC;AAInC,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAU3E;AAED,qBAAa,SAAS;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK,CAAC;gBADN,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,YAAA;IAGxB,OAAO,CAAC,OAAO;IAWT,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC;CAmBd;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAIpD;AAED,gFAAgF;AAChF,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
package/dist/lib/api.js
CHANGED
|
@@ -3,22 +3,24 @@
|
|
|
3
3
|
* beyond what is needed; never prints secret plaintext.
|
|
4
4
|
*/
|
|
5
5
|
import pc from "picocolors";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { readProjectMeta } from "./fs.js";
|
|
7
|
+
import { readFolderToken, } from "./credentials.js";
|
|
8
8
|
/** Keep in sync with packages/cli/package.json version. */
|
|
9
|
-
export const CLI_VERSION = "0.3.
|
|
9
|
+
export const CLI_VERSION = "0.3.4";
|
|
10
10
|
const PRODUCTION_API = "https://getmyenv.com";
|
|
11
|
-
/** Resolve API base:
|
|
12
|
-
export function resolveApiUrl(cliOverride,
|
|
11
|
+
/** Resolve API base: CLI override → env var → folder token/meta → production. */
|
|
12
|
+
export function resolveApiUrl(cliOverride, _hint) {
|
|
13
13
|
if (cliOverride?.trim())
|
|
14
14
|
return cliOverride.trim();
|
|
15
15
|
if (process.env.GETMYENV_API_URL?.trim()) {
|
|
16
16
|
return process.env.GETMYENV_API_URL.trim();
|
|
17
17
|
}
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
const token = readFolderToken();
|
|
19
|
+
if (token?.apiUrl)
|
|
20
|
+
return token.apiUrl;
|
|
21
|
+
const meta = readProjectMeta();
|
|
22
|
+
if (meta?.apiUrl)
|
|
23
|
+
return meta.apiUrl;
|
|
22
24
|
return PRODUCTION_API;
|
|
23
25
|
}
|
|
24
26
|
export class ApiClient {
|
|
@@ -62,59 +64,42 @@ export class ApiClient {
|
|
|
62
64
|
return (await res.json());
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
/** Env / folder token only (no prompt). Prefer ensureSessionToken for interactive commands. */
|
|
68
|
+
export function getSessionToken() {
|
|
69
|
+
const env = process.env.GETMYENV_TOKEN?.trim();
|
|
70
|
+
if (env)
|
|
71
|
+
return env;
|
|
72
|
+
return readFolderToken()?.token;
|
|
67
73
|
}
|
|
68
|
-
/**
|
|
69
|
-
export function
|
|
70
|
-
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
const linked = preferredProjectId ?? readProjectMeta()?.projectId ?? null;
|
|
74
|
-
return resolveStoredToken(linked)?.token;
|
|
74
|
+
/** True when the folder is already authorized (env or .getmyenv/token.json). */
|
|
75
|
+
export function hasSessionToken() {
|
|
76
|
+
return !!getSessionToken();
|
|
75
77
|
}
|
|
76
78
|
/**
|
|
77
|
-
* Env →
|
|
78
|
-
* Non-TTY
|
|
79
|
+
* Env → folder token. When missing, TTY runs the browser auth flow (via tokenCommand)
|
|
80
|
+
* and writes `.getmyenv/token.json`. Non-TTY throws.
|
|
79
81
|
*/
|
|
80
|
-
export async function ensureSessionToken(
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
console.log(pc.yellow(`${retiredCredentialsHint()}\n`));
|
|
87
|
-
}
|
|
88
|
-
const existing = resolveStoredToken(linked);
|
|
89
|
-
if (existing) {
|
|
82
|
+
export async function ensureSessionToken(_hint) {
|
|
83
|
+
const env = process.env.GETMYENV_TOKEN?.trim();
|
|
84
|
+
if (env)
|
|
85
|
+
return env;
|
|
86
|
+
const existing = readFolderToken();
|
|
87
|
+
if (existing)
|
|
90
88
|
return existing.token;
|
|
91
|
-
}
|
|
92
89
|
if (!process.stdin.isTTY) {
|
|
93
|
-
throw new Error("No CLI token. Run: npx getmyenv token (or set GETMYENV_TOKEN for CI)");
|
|
94
|
-
}
|
|
95
|
-
const apiBase = resolveApiUrl(undefined, linked).replace(/\/$/, "");
|
|
96
|
-
console.log(pc.dim(`Create or copy a token: ${apiBase}/cli`));
|
|
97
|
-
console.log("");
|
|
98
|
-
const token = (await readLine("Paste CLI token: ")).trim();
|
|
99
|
-
if (!token) {
|
|
100
|
-
throw new Error("No token entered. Run: npx getmyenv token");
|
|
101
|
-
}
|
|
102
|
-
const apiUrl = resolveApiUrl(undefined, linked);
|
|
103
|
-
try {
|
|
104
|
-
const client = new ApiClient(apiUrl, token);
|
|
105
|
-
const who = await client.request("GET", "/api/cli/whoami");
|
|
106
|
-
const file = upsertTokenEntry(who.projectId, {
|
|
107
|
-
token,
|
|
108
|
-
apiUrl,
|
|
109
|
-
projectName: who.projectName,
|
|
110
|
-
cliScope: who.cliScope,
|
|
111
|
-
});
|
|
112
|
-
console.log(`${pc.green("✓")} Saved CLI token to ${file}\n`);
|
|
90
|
+
throw new Error("No CLI token in this folder. Run: npx getmyenv token (or set GETMYENV_TOKEN for CI)");
|
|
113
91
|
}
|
|
114
|
-
|
|
115
|
-
|
|
92
|
+
// Lazy import to avoid a cycle (token → link → api).
|
|
93
|
+
const { tokenCommand } = await import("../commands/token.js");
|
|
94
|
+
await tokenCommand({ skipLinkOffer: true });
|
|
95
|
+
const after = readFolderToken();
|
|
96
|
+
if (!after) {
|
|
97
|
+
throw new Error("Authorization did not complete. Run: npx getmyenv token");
|
|
116
98
|
}
|
|
117
|
-
return token;
|
|
99
|
+
return after.token;
|
|
118
100
|
}
|
|
119
|
-
export {
|
|
101
|
+
export { readFolderToken, writeFolderToken, tokenFilePath, } from "./credentials.js";
|
|
102
|
+
// picocolors is referenced by callers; re-export nothing here.
|
|
103
|
+
void pc;
|
|
104
|
+
void {};
|
|
120
105
|
//# sourceMappingURL=api.js.map
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/bootstrap.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { type WhoamiResponse } from "
|
|
1
|
+
import { type WhoamiResponse } from "./api.js";
|
|
2
2
|
export type BootstrapOpts = {
|
|
3
3
|
apiUrl?: string;
|
|
4
4
|
/** Skip confirm when linking (e.g. push --create). */
|
|
5
5
|
forceLink?: boolean;
|
|
6
|
-
/** Verb for confirm copy
|
|
7
|
-
action: "push" | "pull";
|
|
6
|
+
/** Verb for confirm copy. */
|
|
7
|
+
action: "push" | "pull" | "run" | "backup" | "restore";
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
|
-
* Ensure
|
|
11
|
-
*
|
|
10
|
+
* Ensure this folder is authorized (token) and linked to a project.
|
|
11
|
+
* TTY-only bootstrap; CI passes GETMYENV_TOKEN and either commits
|
|
12
|
+
* `.getmyenv/project.json` or runs `link --force` first.
|
|
12
13
|
*/
|
|
13
14
|
export declare function ensureTokenAndLink(opts: BootstrapOpts): Promise<{
|
|
14
15
|
who: WhoamiResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACxD,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IACrE,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CA+DD"}
|