@whatcha/cli 0.1.0 → 0.4.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.
Files changed (43) hide show
  1. package/README.md +223 -25
  2. package/dist/auth/session.js +50 -0
  3. package/dist/auth/session.js.map +1 -1
  4. package/dist/auth/token-store.js.map +1 -1
  5. package/dist/cli.js +44 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/diaries.js +14 -3
  8. package/dist/commands/diaries.js.map +1 -1
  9. package/dist/commands/diary-cover.js +54 -0
  10. package/dist/commands/diary-cover.js.map +1 -0
  11. package/dist/commands/login.js +82 -7
  12. package/dist/commands/login.js.map +1 -1
  13. package/dist/commands/profiles.js +187 -11
  14. package/dist/commands/profiles.js.map +1 -1
  15. package/dist/commands/publish.js +81 -0
  16. package/dist/commands/publish.js.map +1 -0
  17. package/dist/commands/read.js +7 -1
  18. package/dist/commands/read.js.map +1 -1
  19. package/dist/commands/shared-diary.js +255 -0
  20. package/dist/commands/shared-diary.js.map +1 -0
  21. package/dist/commands/whoami.js +50 -0
  22. package/dist/commands/whoami.js.map +1 -0
  23. package/dist/commands/wiki.js +386 -0
  24. package/dist/commands/wiki.js.map +1 -0
  25. package/dist/commands/write.js +119 -7
  26. package/dist/commands/write.js.map +1 -1
  27. package/dist/http-client.js +16 -0
  28. package/dist/http-client.js.map +1 -1
  29. package/dist/lib/append-entry.js +90 -11
  30. package/dist/lib/append-entry.js.map +1 -1
  31. package/dist/lib/entry-date.js +22 -2
  32. package/dist/lib/entry-date.js.map +1 -1
  33. package/dist/lib/entry-get.js +31 -0
  34. package/dist/lib/entry-get.js.map +1 -0
  35. package/dist/lib/image-upload.js +126 -0
  36. package/dist/lib/image-upload.js.map +1 -0
  37. package/dist/lib/personal-access-token.js +46 -0
  38. package/dist/lib/personal-access-token.js.map +1 -0
  39. package/dist/lib/profile-family.js +29 -0
  40. package/dist/lib/profile-family.js.map +1 -0
  41. package/dist/lib/publication.js +55 -0
  42. package/dist/lib/publication.js.map +1 -0
  43. package/package.json +4 -4
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDiaryCoverArgs = parseDiaryCoverArgs;
4
+ exports.runDiaryCover = runDiaryCover;
5
+ const node_util_1 = require("node:util");
6
+ const session_1 = require("../auth/session");
7
+ const errors_1 = require("../errors");
8
+ const diary_resolve_1 = require("../lib/diary-resolve");
9
+ const image_upload_1 = require("../lib/image-upload");
10
+ const output_1 = require("../lib/output");
11
+ const USAGE = "Usage: whatcha diary-cover <diary> <file> | --clear [--json]";
12
+ function parseDiaryCoverArgs(argv) {
13
+ let values, positionals;
14
+ try {
15
+ ({ values, positionals } = (0, node_util_1.parseArgs)({
16
+ args: argv,
17
+ options: {
18
+ json: { type: "boolean", default: false },
19
+ clear: { type: "boolean", default: false },
20
+ },
21
+ allowPositionals: true,
22
+ }));
23
+ }
24
+ catch (err) {
25
+ throw new errors_1.CliUsageError(err.message);
26
+ }
27
+ const [diary, image, extra] = positionals;
28
+ if (!diary)
29
+ throw new errors_1.CliUsageError(USAGE);
30
+ if (extra !== undefined)
31
+ throw new errors_1.CliUsageError(`Unexpected extra argument: "${extra}"`);
32
+ const clear = values.clear;
33
+ if (clear && image !== undefined)
34
+ throw new errors_1.CliUsageError("Give a file or --clear, not both.");
35
+ if (!clear && image === undefined)
36
+ throw new errors_1.CliUsageError(`Which image? Give a file, or --clear to remove the cover.\n${USAGE}`);
37
+ return { json: values.json, diary, image, clear };
38
+ }
39
+ async function runDiaryCover(opts, deps = {}) {
40
+ // Checked before anything is sent, so a wrong file changes nothing.
41
+ const file = opts.image !== undefined ? await (0, image_upload_1.readImageFile)(opts.image) : undefined;
42
+ const client = deps.client ?? (await (0, session_1.authenticatedClient)()).client;
43
+ const diary = await (0, diary_resolve_1.resolveDiary)(client, opts.diary);
44
+ const coverMediaAssetId = file ? await (0, image_upload_1.uploadImage)(client, diary.groupId, file) : null;
45
+ await client.patch(`/diaries/${diary.id}`, { iconKey: coverMediaAssetId ?? "" });
46
+ if (opts.json)
47
+ (0, output_1.printJson)({ ok: true, diaryId: diary.id, coverMediaAssetId });
48
+ else if (coverMediaAssetId)
49
+ (0, output_1.printLine)(`Set the cover of "${diary.name}".`);
50
+ else
51
+ (0, output_1.printLine)(`Removed the cover of "${diary.name}".`);
52
+ return { exitCode: 0 };
53
+ }
54
+ //# sourceMappingURL=diary-cover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diary-cover.js","sourceRoot":"","sources":["../../src/commands/diary-cover.ts"],"names":[],"mappings":";;AAyBA,kDAqBC;AAED,sCAgBC;AAhED,yCAAsC;AACtC,6CAAsD;AACtD,sCAA0C;AAE1C,wDAAoD;AACpD,sDAAiE;AACjE,0CAAqD;AAiBrD,MAAM,KAAK,GAAG,8DAA8D,CAAC;AAE7E,SAAgB,mBAAmB,CAAC,IAAc;IAChD,IAAI,MAAM,EAAE,WAAW,CAAC;IACxB,IAAI,CAAC;QACH,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,qBAAS,EAAC;YACnC,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBACzC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;aAC3C;YACD,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,sBAAa,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;IAC1C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,sBAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,sBAAa,CAAC,+BAA+B,KAAK,GAAG,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAgB,CAAC;IACtC,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,sBAAa,CAAC,mCAAmC,CAAC,CAAC;IAC/F,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,sBAAa,CAAC,8DAA8D,KAAK,EAAE,CAAC,CAAC;IAClI,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAe,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,IAAuB,EACvB,OAAmC,EAAE;IAErC,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,4BAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAA,6BAAmB,GAAE,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,IAAA,4BAAY,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAA,0BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,CAAC;IAEjF,IAAI,IAAI,CAAC,IAAI;QAAE,IAAA,kBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;SACxE,IAAI,iBAAiB;QAAE,IAAA,kBAAS,EAAC,qBAAqB,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;;QACtE,IAAA,kBAAS,EAAC,yBAAyB,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IACxD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzB,CAAC"}
@@ -13,6 +13,7 @@ const errors_1 = require("../errors");
13
13
  const token_store_1 = require("../auth/token-store");
14
14
  const gotrue_client_1 = require("../auth/gotrue-client");
15
15
  const jwt_1 = require("../lib/jwt");
16
+ const personal_access_token_1 = require("../lib/personal-access-token");
16
17
  const output_1 = require("../lib/output");
17
18
  function parseLoginArgs(argv) {
18
19
  let values;
@@ -24,6 +25,7 @@ function parseLoginArgs(argv) {
24
25
  email: { type: "string" },
25
26
  password: { type: "string" },
26
27
  token: { type: "string" },
28
+ key: { type: "string" },
27
29
  "api-url": { type: "string" },
28
30
  },
29
31
  allowPositionals: false,
@@ -37,6 +39,7 @@ function parseLoginArgs(argv) {
37
39
  email: values.email,
38
40
  password: values.password,
39
41
  token: values.token,
42
+ key: values.key,
40
43
  apiUrl: values["api-url"] ?? (0, config_1.apiBaseUrl)(),
41
44
  };
42
45
  }
@@ -84,6 +87,9 @@ async function resolveCredentials(opts) {
84
87
  return { email, password };
85
88
  }
86
89
  async function runLogin(opts, deps = {}) {
90
+ const key = resolveKey(opts);
91
+ if (key)
92
+ return finishLogin(await loginWithKey(opts, deps, key), opts, deps);
87
93
  const token = opts.token ?? process.env.WHATCHA_TOKEN;
88
94
  if (token)
89
95
  return finishLogin(await loginWithToken(opts, deps, token), opts, deps);
@@ -99,6 +105,67 @@ async function runLogin(opts, deps = {}) {
99
105
  return reportRefusal(err, opts);
100
106
  }
101
107
  }
108
+ /**
109
+ * Which personal access key to log in with, if any (#1663).
110
+ *
111
+ * `--key` is the explicit form. `--token` and WHATCHA_TOKEN predate keys and
112
+ * mean a refresh token, but a key is unmistakable by its prefix -- the same
113
+ * prefix the server itself goes by -- so a key handed to either is used as a
114
+ * key rather than sent to /auth/refresh to fail there. WHATCHA_KEY is the
115
+ * environment form of `--key`. Flags win over the environment: a person who
116
+ * typed `--email`, `--password` or `--token` meant that, whatever a
117
+ * WHATCHA_KEY left in the shell says.
118
+ */
119
+ function resolveKey(opts) {
120
+ if (opts.key !== undefined && opts.token !== undefined) {
121
+ throw new errors_1.CliUsageError("Give --key or --token, not both.");
122
+ }
123
+ if (opts.key !== undefined)
124
+ return checkedKey(opts.key, "--key");
125
+ if (opts.token !== undefined)
126
+ return (0, personal_access_token_1.looksLikePersonalAccessToken)(opts.token) ? checkedKey(opts.token, "--token") : undefined;
127
+ if (opts.email !== undefined || opts.password !== undefined)
128
+ return undefined;
129
+ const envKey = process.env.WHATCHA_KEY?.trim();
130
+ if (envKey)
131
+ return checkedKey(envKey, "WHATCHA_KEY");
132
+ const envToken = process.env.WHATCHA_TOKEN?.trim();
133
+ if (envToken && (0, personal_access_token_1.looksLikePersonalAccessToken)(envToken))
134
+ return checkedKey(envToken, "WHATCHA_TOKEN");
135
+ return undefined;
136
+ }
137
+ function checkedKey(raw, from) {
138
+ const key = raw.trim();
139
+ if (!(0, personal_access_token_1.looksLikePersonalAccessToken)(key)) {
140
+ throw new errors_1.CliUsageError(`${from} takes a personal access key (it starts with "whatcha_pat_"; issue one in ${personal_access_token_1.WHERE_KEYS_ARE_ISSUED}). ` +
141
+ "For a refresh token, use --token / WHATCHA_TOKEN.");
142
+ }
143
+ if (!(0, personal_access_token_1.isWellFormedPersonalAccessToken)(key)) {
144
+ throw new errors_1.CliUsageError(`${from} starts like a personal access key but is not a complete one -- it may have been cut off when it was copied.`);
145
+ }
146
+ return key;
147
+ }
148
+ /**
149
+ * A personal access key (#1469 / PR #1550) is the Bearer credential itself:
150
+ * nothing to exchange, nothing to refresh, no captcha anywhere on the path.
151
+ * `GET /me` is both the check that the key works and where the id/email for
152
+ * the confirmation line come from. A revoked or expired key surfaces as
153
+ * KEY_REVOKED / KEY_EXPIRED (lib/personal-access-token.ts), straight from
154
+ * here, before anything is saved.
155
+ */
156
+ async function loginWithKey(opts, deps, key) {
157
+ const client = deps.client ? new session_1.KeyErrorClient(deps.client) : (0, session_1.personalAccessTokenClient)(opts.apiUrl, key);
158
+ const me = await client.get("/me");
159
+ return {
160
+ userId: me.id,
161
+ email: me.email ?? null,
162
+ accessToken: key,
163
+ refreshToken: "",
164
+ // Never consulted for a key (auth/session.ts checks authKind first).
165
+ expiresIn: 0,
166
+ authKind: "key",
167
+ };
168
+ }
102
169
  /**
103
170
  * The escape hatch issue #1428 asks for: skip the password grant (and
104
171
  * whatever captcha it is gated behind) entirely by handing `whatcha` a
@@ -174,9 +241,9 @@ function reportRefusal(err, opts) {
174
241
  // a captcha rejection, unlike /auth/login's generic 401.
175
242
  message = err.looksLikeCaptchaFailure()
176
243
  ? "Sign-in needs a captcha challenge (Cloudflare Turnstile) that this terminal cannot solve " +
177
- "(issue #1428). This account needs a token issued another way -- ask whoever manages it to sign " +
178
- "in once from a browser that can pass the challenge, then run `whatcha login --token <refresh-token>` " +
179
- "or set WHATCHA_TOKEN, instead of retrying a password sign-in here."
244
+ "(issue #1428). Use a personal access key instead: issue one in " +
245
+ `${personal_access_token_1.WHERE_KEYS_ARE_ISSUED}, then run \`whatcha login --key <key>\` or set WHATCHA_KEY, ` +
246
+ "instead of retrying a password sign-in here."
180
247
  : `Sign-in was refused: ${err.message}`;
181
248
  }
182
249
  else if (err instanceof errors_1.ApiError && err.status === 401) {
@@ -184,8 +251,8 @@ function reportRefusal(err, opts) {
184
251
  "Sign-in was refused. This could be a wrong email/password, or it could be that GoTrue is demanding " +
185
252
  "a captcha challenge (Cloudflare Turnstile) this terminal cannot solve (issue #1428) -- /auth/login " +
186
253
  "answers both the same generic way, so whatcha cannot tell them apart here. If the password is right, " +
187
- "do not keep retrying it: this account needs a token issued another way. Sign in once from a browser " +
188
- "that can pass the challenge, then run `whatcha login --token <refresh-token>` or set WHATCHA_TOKEN.";
254
+ "do not keep retrying it: use a personal access key instead. Issue one in " +
255
+ `${personal_access_token_1.WHERE_KEYS_ARE_ISSUED}, then run \`whatcha login --key <key>\` or set WHATCHA_KEY.`;
189
256
  }
190
257
  else {
191
258
  throw err;
@@ -204,13 +271,21 @@ async function finishLogin(session, opts, deps) {
204
271
  accessToken: session.accessToken,
205
272
  refreshToken: session.refreshToken,
206
273
  expiresAt: Date.now() + session.expiresIn * 1000,
274
+ authKind: session.authKind ?? "session",
207
275
  }, deps.stores ?? (0, token_store_1.candidateStores)());
208
276
  // Never the tokens themselves -- see lib/output.ts's header comment.
209
277
  if (opts.json) {
210
- (0, output_1.printJson)({ ok: true, userId: session.userId, email: session.email, credentialStore: store.name });
278
+ (0, output_1.printJson)({
279
+ ok: true,
280
+ userId: session.userId,
281
+ email: session.email,
282
+ credentialStore: store.name,
283
+ ...(session.authKind === "key" ? { authKind: "key" } : {}),
284
+ });
211
285
  }
212
286
  else {
213
- (0, output_1.printLine)(`Logged in as ${session.email ?? session.userId}. Session saved to ${store.name}.`);
287
+ const how = session.authKind === "key" ? " with a personal access key" : "";
288
+ (0, output_1.printLine)(`Logged in as ${session.email ?? session.userId}${how}. Session saved to ${store.name}.`);
214
289
  }
215
290
  return { exitCode: 0 };
216
291
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,20 @@ exports.parseProfilesArgs = parseProfilesArgs;
4
4
  exports.runProfiles = runProfiles;
5
5
  exports.parseRemoveArgs = parseRemoveArgs;
6
6
  exports.runRemove = runRemove;
7
+ exports.parseAddArgs = parseAddArgs;
8
+ exports.parseAvatarArgs = parseAvatarArgs;
9
+ exports.runAvatar = runAvatar;
10
+ exports.runAdd = runAdd;
7
11
  exports.parseSwitchArgs = parseSwitchArgs;
8
12
  exports.runSwitch = runSwitch;
9
13
  const node_util_1 = require("node:util");
10
14
  const session_1 = require("../auth/session");
11
15
  const token_store_1 = require("../auth/token-store");
12
16
  const errors_1 = require("../errors");
17
+ const config_1 = require("../config");
18
+ const image_upload_1 = require("../lib/image-upload");
13
19
  const output_1 = require("../lib/output");
20
+ const profile_family_1 = require("../lib/profile-family");
14
21
  function parseProfilesArgs(argv) {
15
22
  let values;
16
23
  try {
@@ -73,9 +80,8 @@ function parseRemoveArgs(argv) {
73
80
  async function runRemove(opts, deps = {}) {
74
81
  const resolved = deps.client ? null : await (0, session_1.authenticatedClient)();
75
82
  const client = deps.client ?? resolved.client;
76
- const wanted = opts.target.replace(/^@/, "").toLowerCase();
77
83
  const switcher = await client.get("/me/profiles");
78
- const target = switcher.profiles.find((p) => p.id === opts.target || (p.username ?? "").toLowerCase() === wanted);
84
+ const target = (0, profile_family_1.findProfile)(switcher.profiles, opts.target);
79
85
  if (!target) {
80
86
  throw new errors_1.CliUsageError(`No profile "${opts.target}". Run \`whatcha profiles\` to see them.`);
81
87
  }
@@ -86,6 +92,162 @@ async function runRemove(opts, deps = {}) {
86
92
  (0, output_1.printLine)(`Deleted @${target.username ?? target.id}.`);
87
93
  return { exitCode: 0 };
88
94
  }
95
+ /** The API's rules for a sub-profile (sub-profiles-service.ts), checked before anything is sent. */
96
+ const HANDLE_RE = /^[A-Za-z0-9][A-Za-z0-9_-]{2,29}$/;
97
+ const MAX_DISPLAY_NAME = 80;
98
+ /** `POST /me/avatar` takes at most 5 MB -- less than an upload's 40. */
99
+ const MAX_AVATAR_BYTES = 5 * 1024 * 1024;
100
+ function parseAddArgs(argv) {
101
+ let values;
102
+ let positionals;
103
+ try {
104
+ ({ values, positionals } = (0, node_util_1.parseArgs)({
105
+ args: argv,
106
+ options: {
107
+ json: { type: "boolean", default: false },
108
+ name: { type: "string" },
109
+ avatar: { type: "string" },
110
+ },
111
+ allowPositionals: true,
112
+ }));
113
+ }
114
+ catch (err) {
115
+ throw new errors_1.CliUsageError(err.message);
116
+ }
117
+ if (!positionals[0]) {
118
+ throw new errors_1.CliUsageError("Which @handle? Run `whatcha profile-add <@handle> --name <display name>`.");
119
+ }
120
+ if (positionals.length > 1) {
121
+ throw new errors_1.CliUsageError(`One @handle per call; quote a --name with spaces (got "${positionals.join(" ")}").`);
122
+ }
123
+ const username = positionals[0].replace(/^@/, "");
124
+ if (!HANDLE_RE.test(username)) {
125
+ throw new errors_1.CliUsageError("A @handle is 3-30 letters, digits, _ or -, and starts with a letter or digit.");
126
+ }
127
+ const displayName = values.name?.trim();
128
+ if (!displayName)
129
+ throw new errors_1.CliUsageError("--name is required: the profile's display name.");
130
+ if (displayName.length > MAX_DISPLAY_NAME) {
131
+ throw new errors_1.CliUsageError(`--name is at most ${MAX_DISPLAY_NAME} characters.`);
132
+ }
133
+ return { username, displayName, avatar: values.avatar, json: values.json };
134
+ }
135
+ /** Reads an avatar file and checks it against `POST /me/avatar`'s limits. */
136
+ async function readAvatarFile(path) {
137
+ const avatar = await (0, image_upload_1.readImageFile)(path);
138
+ if (avatar.bytes.length > MAX_AVATAR_BYTES) {
139
+ throw new errors_1.CliUsageError(`${avatar.path} is over 5 MB; an avatar is at most 5 MB.`);
140
+ }
141
+ return avatar;
142
+ }
143
+ /** `POST /me/avatar` as whoever `client` is. The new avatar's URL. */
144
+ async function setAvatar(client, avatar) {
145
+ const set = await client.post("/me/avatar", {
146
+ fileName: avatar.fileName,
147
+ contentType: avatar.contentType,
148
+ dataBase64: Buffer.from(avatar.bytes).toString("base64"),
149
+ });
150
+ return set.avatarUrl;
151
+ }
152
+ function parseAvatarArgs(argv) {
153
+ let values;
154
+ let positionals;
155
+ try {
156
+ ({ values, positionals } = (0, node_util_1.parseArgs)({
157
+ args: argv,
158
+ options: { json: { type: "boolean", default: false } },
159
+ allowPositionals: true,
160
+ }));
161
+ }
162
+ catch (err) {
163
+ throw new errors_1.CliUsageError(err.message);
164
+ }
165
+ const [target, file, extra] = positionals;
166
+ if (!target || !file)
167
+ throw new errors_1.CliUsageError("Usage: whatcha profile-avatar <@handle> <file> [--json]");
168
+ if (extra !== undefined)
169
+ throw new errors_1.CliUsageError(`Unexpected extra argument: "${extra}"`);
170
+ return { target, file, json: values.json };
171
+ }
172
+ /**
173
+ * Change an existing profile's avatar (#50) -- until now only `profile-add
174
+ * --avatar` could set one, at creation. The profile the CLI is signed in
175
+ * as sets its own; another of this login's sub-profiles is set through a
176
+ * session for it, used once and dropped, as `profile-add` does. The account
177
+ * itself cannot be reached from a sub-profile (the API refuses that on
178
+ * purpose), so that case says to switch back first.
179
+ */
180
+ async function runAvatar(opts, deps = {}) {
181
+ const avatar = await readAvatarFile(opts.file);
182
+ const resolved = deps.client ? null : await (0, session_1.authenticatedClient)();
183
+ const client = deps.client ?? resolved.client;
184
+ const session = deps.session ?? resolved.session;
185
+ const forToken = deps.clientForToken ?? (0, profile_family_1.bearerClients)(resolved?.session.apiBaseUrl || (0, config_1.apiBaseUrl)());
186
+ const switcher = await client.get("/me/profiles");
187
+ const target = (0, profile_family_1.findProfile)(switcher.profiles, opts.target);
188
+ if (!target) {
189
+ throw new errors_1.CliUsageError(`No profile "${opts.target}". Run \`whatcha profiles\` to see them.`);
190
+ }
191
+ let asTarget;
192
+ if (target.id === session.userId)
193
+ asTarget = client;
194
+ else if (target.parentProfileId === null) {
195
+ throw new errors_1.CliUsageError("That is the account. Run `whatcha switch --account` first, then this again.");
196
+ }
197
+ else
198
+ asTarget = await (0, profile_family_1.clientAsProfile)(client, target.id, forToken);
199
+ const avatarUrl = await setAvatar(asTarget, avatar);
200
+ if (opts.json)
201
+ (0, output_1.printJson)({ ok: true, profileId: target.id, avatarUrl });
202
+ else
203
+ (0, output_1.printLine)(`Changed the avatar of @${target.username ?? target.id}.`);
204
+ return { exitCode: 0 };
205
+ }
206
+ /**
207
+ * Create a sub-profile (#1699): `POST /me/profiles`, the call the app's
208
+ * "Add a profile" dialog makes. The plan's limit and a taken @handle are
209
+ * the API's call -- `whatcha profiles --json` shows `remaining`.
210
+ *
211
+ * `--avatar` is set the way the profile would set it itself: a session for
212
+ * the new profile, used once for `POST /me/avatar` and dropped (see
213
+ * lib/profile-family.ts). The CLI stays signed in as it was -- creating a
214
+ * profile is not switching to it. The file is checked before the profile
215
+ * is created, so a wrong file creates nothing; if the profile is created
216
+ * and only the avatar then fails, that is reported (exit status 2) rather
217
+ * than undone -- the profile is real and usable, just without a picture.
218
+ */
219
+ async function runAdd(opts, deps = {}) {
220
+ const avatar = opts.avatar !== undefined ? await readAvatarFile(opts.avatar) : undefined;
221
+ const resolved = deps.client ? null : await (0, session_1.authenticatedClient)();
222
+ const client = deps.client ?? resolved.client;
223
+ const forToken = deps.clientForToken ?? (0, profile_family_1.bearerClients)(resolved?.session.apiBaseUrl || (0, config_1.apiBaseUrl)());
224
+ let profile = await client.post("/me/profiles", {
225
+ username: opts.username,
226
+ displayName: opts.displayName,
227
+ });
228
+ let avatarError = null;
229
+ if (avatar) {
230
+ try {
231
+ const asProfile = await (0, profile_family_1.clientAsProfile)(client, profile.id, forToken);
232
+ profile = { ...profile, avatarUrl: await setAvatar(asProfile, avatar) };
233
+ }
234
+ catch (err) {
235
+ if (!(err instanceof errors_1.ApiError))
236
+ throw err;
237
+ avatarError = { code: err.code, message: err.message };
238
+ }
239
+ }
240
+ if (opts.json)
241
+ (0, output_1.printJson)({ ok: true, profile, avatarError });
242
+ else
243
+ (0, output_1.printLine)(`Created @${profile.username ?? opts.username} (${label(profile)}). Run \`whatcha switch @${profile.username ?? opts.username}\` to write as it.`);
244
+ if (avatarError) {
245
+ (0, output_1.printErrorLine)(`WARNING: the profile was created, but its avatar could not be set (${avatarError.code}: ${avatarError.message}). ` +
246
+ `Try again with \`whatcha profile-avatar @${profile.username ?? opts.username} <file>\`.`);
247
+ return { exitCode: 2 };
248
+ }
249
+ return { exitCode: 0 };
250
+ }
89
251
  function parseSwitchArgs(argv) {
90
252
  let values;
91
253
  let positionals;
@@ -118,25 +280,34 @@ async function runSwitch(opts, deps = {}) {
118
280
  const client = deps.client ?? resolved.client;
119
281
  const session = (deps.session ?? resolved.session);
120
282
  if (opts.toAccount) {
283
+ const { accountRefreshToken: _dropped, accountKey, ...rest } = session;
284
+ if (accountKey) {
285
+ // Logged in with a personal access key (#1663): the way back is the
286
+ // key itself, which needs no refresh.
287
+ await (0, session_1.saveSession)({ ...rest, accessToken: accountKey, refreshToken: "", expiresAt: 0, authKind: "key" }, stores);
288
+ if (opts.json)
289
+ (0, output_1.printJson)({ ok: true, switchedTo: "account" });
290
+ else
291
+ (0, output_1.printLine)("Back on the account.");
292
+ return { exitCode: 0 };
293
+ }
121
294
  const back = session.accountRefreshToken;
122
295
  if (!back) {
123
296
  throw new errors_1.CliUsageError("Already on the account.");
124
297
  }
125
- const { accountRefreshToken: _dropped, ...rest } = session;
126
298
  // An access token cannot be derived here, so the stored one is left
127
299
  // expired on purpose: authenticatedClient() refreshes from the refresh
128
300
  // token on the very next command, which is the same path a session that
129
301
  // sat unused overnight takes.
130
- await (0, session_1.saveSession)({ ...rest, refreshToken: back, expiresAt: 0 }, stores);
302
+ await (0, session_1.saveSession)({ ...rest, refreshToken: back, expiresAt: 0, authKind: "session" }, stores);
131
303
  if (opts.json)
132
304
  (0, output_1.printJson)({ ok: true, switchedTo: "account" });
133
305
  else
134
306
  (0, output_1.printLine)("Back on the account.");
135
307
  return { exitCode: 0 };
136
308
  }
137
- const wanted = opts.target.replace(/^@/, "").toLowerCase();
138
309
  const switcher = await client.get("/me/profiles");
139
- const target = switcher.profiles.find((p) => p.id === opts.target || (p.username ?? "").toLowerCase() === wanted);
310
+ const target = (0, profile_family_1.findProfile)(switcher.profiles, opts.target);
140
311
  if (!target) {
141
312
  throw new errors_1.CliUsageError(`No profile "${opts.target}". Run \`whatcha profiles\` to see them.`);
142
313
  }
@@ -151,12 +322,16 @@ async function runSwitch(opts, deps = {}) {
151
322
  return { exitCode: 0 };
152
323
  }
153
324
  const issued = await client.post(`/me/profiles/${target.id}/session`, {});
154
- // The account's refresh token is carried over BEFORE the session is
325
+ // The account's credential is carried over BEFORE the session is
155
326
  // replaced: after this save it is the only copy, and losing it would
156
- // strand the CLI inside a sub-profile.
157
- const stash = session.accountRefreshToken ?? session.refreshToken;
327
+ // strand the CLI inside a sub-profile. A key login (#1663) has no refresh
328
+ // token, so what is kept is the key; once switched, the session itself is
329
+ // an ordinary sub-profile session either way.
330
+ const fromKey = session.accountKey ?? (session.authKind === "key" ? session.accessToken : undefined);
331
+ const stash = fromKey ? undefined : (session.accountRefreshToken ?? session.refreshToken);
332
+ const { accountRefreshToken: _r, accountKey: _k, ...base } = session;
158
333
  const next = {
159
- ...session,
334
+ ...base,
160
335
  userId: issued.profileId,
161
336
  // A sub-profile has no address of its own; the internal one the API
162
337
  // holds for GoTrue is never handed out and must not be stored here.
@@ -164,7 +339,8 @@ async function runSwitch(opts, deps = {}) {
164
339
  accessToken: issued.accessToken,
165
340
  refreshToken: issued.refreshToken,
166
341
  expiresAt: Date.now() + issued.expiresIn * 1000,
167
- accountRefreshToken: stash,
342
+ authKind: "session",
343
+ ...(fromKey ? { accountKey: fromKey } : { accountRefreshToken: stash }),
168
344
  };
169
345
  await (0, session_1.saveSession)(next, stores);
170
346
  if (opts.json)
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePublishArgs = parsePublishArgs;
4
+ exports.runPublish = runPublish;
5
+ const node_util_1 = require("node:util");
6
+ const session_1 = require("../auth/session");
7
+ const config_1 = require("../config");
8
+ const errors_1 = require("../errors");
9
+ const diary_resolve_1 = require("../lib/diary-resolve");
10
+ const output_1 = require("../lib/output");
11
+ const publication_1 = require("../lib/publication");
12
+ function parsePublishArgs(argv) {
13
+ let values;
14
+ let positionals;
15
+ try {
16
+ ({ values, positionals } = (0, node_util_1.parseArgs)({
17
+ args: argv,
18
+ options: {
19
+ json: { type: "boolean", default: false },
20
+ off: { type: "boolean", default: false },
21
+ },
22
+ allowPositionals: true,
23
+ }));
24
+ }
25
+ catch (err) {
26
+ throw new errors_1.CliUsageError(err.message);
27
+ }
28
+ if (!positionals[0])
29
+ throw new errors_1.CliUsageError("Which diary? Run `whatcha publish <diary> [--off]`.");
30
+ if (positionals.length > 1) {
31
+ throw new errors_1.CliUsageError(`One diary per call; quote a name with spaces (got "${positionals.join(" ")}").`);
32
+ }
33
+ return { diary: positionals[0], off: values.off, json: values.json };
34
+ }
35
+ async function runPublish(opts, deps = {}) {
36
+ const resolved = deps.client ? null : await (0, session_1.authenticatedClient)();
37
+ const client = deps.client ?? resolved.client;
38
+ const base = deps.apiBaseUrl ?? (resolved?.session.apiBaseUrl || (0, config_1.apiBaseUrl)());
39
+ const diary = await (0, diary_resolve_1.resolveDiary)(client, opts.diary);
40
+ if (diary.groupType === "personal") {
41
+ throw new errors_1.CliUsageError(`"${diary.name}" is on your personal shelf, which cannot be published. ` +
42
+ "Start a diary of its own to publish: whatcha diary-new <name>");
43
+ }
44
+ // The group first: it is the step most likely to be refused (not the
45
+ // owner), and nothing should have changed when it is.
46
+ const publication = await client.put(`/groups/${diary.groupId}/publication`, {
47
+ isPublic: !opts.off,
48
+ });
49
+ let openedToGroup = false;
50
+ if (!opts.off) {
51
+ const detail = await client.get(`/diaries/${diary.id}`);
52
+ if (detail.visibility === "private") {
53
+ await client.put(`/diaries/${diary.id}/visibility`, { visibility: "group" });
54
+ openedToGroup = true;
55
+ }
56
+ }
57
+ const url = publication.isPublic ? (0, publication_1.publicDiaryUrl)(base, diary.id) : null;
58
+ if (opts.json) {
59
+ (0, output_1.printJson)({
60
+ ok: true,
61
+ diaryId: diary.id,
62
+ groupId: diary.groupId,
63
+ groupName: diary.groupName,
64
+ isPublic: publication.isPublic,
65
+ url,
66
+ openedToGroup,
67
+ });
68
+ return { exitCode: 0 };
69
+ }
70
+ if (url) {
71
+ (0, output_1.printLine)(`Published "${diary.name}": ${url}`);
72
+ if (openedToGroup)
73
+ (0, output_1.printLine)("It was kept to its creator; it is now open to the group's members as well.");
74
+ (0, output_1.printLine)(`Publishing is the group's: every diary in "${diary.groupName}" its members can read is public too.`);
75
+ }
76
+ else {
77
+ (0, output_1.printLine)(`"${diary.name}" is no longer public (nor is anything else in "${diary.groupName}").`);
78
+ }
79
+ return { exitCode: 0 };
80
+ }
81
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}