@knpkv/jira-clockify 1.5.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -5
- package/dist/package.json +15 -5
- package/dist/src/bin.js +16 -5
- package/dist/src/bin.js.map +1 -1
- package/dist/src/cli/CommandFailed.d.ts +27 -0
- package/dist/src/cli/CommandFailed.d.ts.map +1 -0
- package/dist/src/cli/CommandFailed.js +25 -0
- package/dist/src/cli/CommandFailed.js.map +1 -0
- package/dist/src/cli/auth.d.ts +23 -3
- package/dist/src/cli/auth.d.ts.map +1 -1
- package/dist/src/cli/auth.js +123 -102
- package/dist/src/cli/auth.js.map +1 -1
- package/dist/src/cli/config.d.ts +2 -1
- package/dist/src/cli/config.d.ts.map +1 -1
- package/dist/src/cli/config.js +43 -29
- package/dist/src/cli/config.js.map +1 -1
- package/dist/src/cli/fetchTicket.d.ts +3 -3
- package/dist/src/cli/fetchTicket.d.ts.map +1 -1
- package/dist/src/cli/fetchTicket.js +7 -7
- package/dist/src/cli/fetchTicket.js.map +1 -1
- package/dist/src/cli/layers.d.ts +6 -5
- package/dist/src/cli/layers.d.ts.map +1 -1
- package/dist/src/cli/layers.js +16 -15
- package/dist/src/cli/layers.js.map +1 -1
- package/dist/src/cli/list.d.ts +3 -2
- package/dist/src/cli/list.d.ts.map +1 -1
- package/dist/src/cli/list.js +11 -5
- package/dist/src/cli/list.js.map +1 -1
- package/dist/src/cli/reconcile.d.ts +12 -3
- package/dist/src/cli/reconcile.d.ts.map +1 -1
- package/dist/src/cli/reconcile.js +71 -23
- package/dist/src/cli/reconcile.js.map +1 -1
- package/dist/src/cli/root.d.ts.map +1 -1
- package/dist/src/cli/root.js +3 -3
- package/dist/src/cli/root.js.map +1 -1
- package/dist/src/cli/setup.d.ts +14 -4
- package/dist/src/cli/setup.d.ts.map +1 -1
- package/dist/src/cli/setup.js +45 -94
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/timer/discard.d.ts +1 -1
- package/dist/src/cli/timer/discard.d.ts.map +1 -1
- package/dist/src/cli/timer/discard.js +2 -1
- package/dist/src/cli/timer/discard.js.map +1 -1
- package/dist/src/cli/timer/log.d.ts +1 -1
- package/dist/src/cli/timer/log.d.ts.map +1 -1
- package/dist/src/cli/timer/log.js +2 -1
- package/dist/src/cli/timer/log.js.map +1 -1
- package/dist/src/cli/timer/start.d.ts +2 -1
- package/dist/src/cli/timer/start.d.ts.map +1 -1
- package/dist/src/cli/timer/start.js +6 -8
- package/dist/src/cli/timer/start.js.map +1 -1
- package/dist/src/cli/timer/stop.d.ts +1 -1
- package/dist/src/cli/timer/stop.d.ts.map +1 -1
- package/dist/src/cli/timer.d.ts.map +1 -1
- package/dist/src/cli/timer.js +8 -1
- package/dist/src/cli/timer.js.map +1 -1
- package/dist/src/cli/unknownCommand.d.ts +24 -0
- package/dist/src/cli/unknownCommand.d.ts.map +1 -0
- package/dist/src/cli/unknownCommand.js +84 -0
- package/dist/src/cli/unknownCommand.js.map +1 -0
- package/dist/src/cli/watch.d.ts +2 -2
- package/dist/src/cli/watch.d.ts.map +1 -1
- package/dist/src/services/ConfigService.d.ts +2 -0
- package/dist/src/services/ConfigService.d.ts.map +1 -1
- package/dist/src/services/ConfigService.js +2 -1
- package/dist/src/services/ConfigService.js.map +1 -1
- package/dist/src/services/IssueFacts.d.ts +2 -2
- package/dist/src/services/IssueFacts.d.ts.map +1 -1
- package/dist/src/services/IssueFacts.js +5 -5
- package/dist/src/services/IssueFacts.js.map +1 -1
- package/dist/src/services/JiraAccess.d.ts +140 -0
- package/dist/src/services/JiraAccess.d.ts.map +1 -0
- package/dist/src/services/JiraAccess.js +204 -0
- package/dist/src/services/JiraAccess.js.map +1 -0
- package/dist/src/services/ProviderSnapshots.d.ts +2 -2
- package/dist/src/services/ProviderSnapshots.d.ts.map +1 -1
- package/dist/src/services/ProviderSnapshots.js +14 -24
- package/dist/src/services/ProviderSnapshots.js.map +1 -1
- package/dist/src/services/ReconcileService.d.ts +2 -2
- package/dist/src/services/ReconcileService.d.ts.map +1 -1
- package/dist/src/services/ReconcileService.js +11 -4
- package/dist/src/services/ReconcileService.js.map +1 -1
- package/dist/src/services/SavedEntries.d.ts +1 -1
- package/dist/src/services/SavedEntries.d.ts.map +1 -1
- package/dist/src/services/TimerService.d.ts +3 -3
- package/dist/src/services/TimerService.d.ts.map +1 -1
- package/dist/src/services/TimerService.js +6 -17
- package/dist/src/services/TimerService.js.map +1 -1
- package/dist/src/testing/fakeHeadless.d.ts +1 -1
- package/dist/src/testing/fakeHeadless.d.ts.map +1 -1
- package/dist/src/testing/fakeHeadless.js +17 -7
- package/dist/src/testing/fakeHeadless.js.map +1 -1
- package/dist/src/tui/App.js +1 -1
- package/dist/src/tui/atoms/runtime.d.ts +1 -1
- package/dist/src/tui/atoms/runtime.d.ts.map +1 -1
- package/dist/src/utils/hints.d.ts +4 -2
- package/dist/src/utils/hints.d.ts.map +1 -1
- package/dist/src/utils/hints.js +4 -2
- package/dist/src/utils/hints.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/skills/jcf/SKILL.md +9 -6
package/dist/src/cli/setup.js
CHANGED
|
@@ -3,109 +3,64 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
|
|
8
|
-
import { Console, Effect, Predicate, Redacted, Schema } from "effect";
|
|
6
|
+
import { Console, Effect, Option, Predicate } from "effect";
|
|
9
7
|
import { Prompt } from "effect/cli";
|
|
10
|
-
import * as HttpClient from "effect/http/HttpClient";
|
|
11
8
|
import * as Path from "effect/Path";
|
|
12
9
|
import * as ChildProcess from "effect/process/ChildProcess";
|
|
13
10
|
import { ClockifyAuth } from "../services/ClockifyAuth.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
const ClockifySetupWorkspace = Schema.Struct({
|
|
20
|
-
id: Schema.NonEmptyString,
|
|
21
|
-
name: Schema.NonEmptyString
|
|
22
|
-
});
|
|
23
|
-
const decodeClockifySetupUser = Schema.decodeUnknownEffect(ClockifySetupUser);
|
|
24
|
-
const decodeClockifySetupWorkspaces = Schema.decodeUnknownEffect(Schema.Array(ClockifySetupWorkspace));
|
|
11
|
+
import { JiraAccess } from "../services/JiraAccess.js";
|
|
12
|
+
import { CONNECT_JIRA_COMMAND } from "../utils/hints.js";
|
|
13
|
+
import { connectClockify, connectJiraWithToken } from "./auth.js";
|
|
14
|
+
import { CommandFailed, requireTerminal } from "./CommandFailed.js";
|
|
25
15
|
// ---------------------------------------------------------------------------
|
|
26
16
|
// First-run setup
|
|
27
17
|
// ---------------------------------------------------------------------------
|
|
18
|
+
/** Runs one system's setup; a failure is printed and the wizard moves on, so the other can still connect. */
|
|
19
|
+
const attempt = (setup) => setup.pipe(Effect.as(true), Effect.catch((error) => Console.log(`${error.message}\n`).pipe(Effect.as(false))));
|
|
20
|
+
/**
|
|
21
|
+
* Before the TUI: when neither system is connected, offer to connect each, either skippable. With one
|
|
22
|
+
* connected it goes straight on; the TUI and `jcf auth status` say what the other needs. Without a
|
|
23
|
+
* terminal to ask in, it prints the two commands and fails.
|
|
24
|
+
*/
|
|
28
25
|
export const checkAuthOrSetup = Effect.gen(function* () {
|
|
29
26
|
const clockifyAuth = yield* ClockifyAuth;
|
|
30
|
-
const
|
|
27
|
+
const access = yield* JiraAccess;
|
|
28
|
+
const jiraOk = Option.isSome(yield* access.connection.pipe(Effect.orElseSucceed(() => Option.none())));
|
|
31
29
|
const clockifyOk = yield* clockifyAuth.isConfigured;
|
|
32
|
-
|
|
33
|
-
if (clockifyOk && jiraOk)
|
|
30
|
+
if (jiraOk || clockifyOk)
|
|
34
31
|
return true;
|
|
35
|
-
yield*
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
yield* Console.log("
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!
|
|
61
|
-
yield*
|
|
62
|
-
|
|
63
|
-
const apiKey = yield* Prompt.String({ message: "Enter Clockify API key:" });
|
|
64
|
-
if (!apiKey) {
|
|
65
|
-
yield* Console.log("Skipped. Run: jcf auth clockify setup\n");
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
const httpClient = yield* HttpClient.HttpClient;
|
|
69
|
-
const client = makeClockifyApi(httpClient, {
|
|
70
|
-
apiKey: Redacted.make(apiKey),
|
|
71
|
-
baseUrl: "https://api.clockify.me/api"
|
|
32
|
+
yield* requireTerminal(`Connect Jira with ${CONNECT_JIRA_COMMAND}, or Clockify with jcf auth clockify setup.`);
|
|
33
|
+
yield* Console.log("jcf records your time in Jira and Clockify. Connect either or both; you can add the other later.\n");
|
|
34
|
+
yield* Console.log("Jira");
|
|
35
|
+
const jira = yield* Prompt.Select({
|
|
36
|
+
message: "How should jcf reach Jira?",
|
|
37
|
+
choices: [
|
|
38
|
+
{ title: "Connect with an API token (recommended)", value: "token" },
|
|
39
|
+
{ title: "Use my own Atlassian OAuth app (advanced)", value: "oauth" },
|
|
40
|
+
{ title: "Skip Jira for now", value: "skip" }
|
|
41
|
+
]
|
|
42
|
+
});
|
|
43
|
+
const jiraConnected = jira === "token"
|
|
44
|
+
? yield* attempt(connectJiraWithToken({ site: Option.none(), email: Option.none() }))
|
|
45
|
+
: false;
|
|
46
|
+
if (jira === "oauth")
|
|
47
|
+
yield* Console.log("Run jcf auth jira create; it walks you through the Atlassian console.\n");
|
|
48
|
+
yield* Console.log("Clockify");
|
|
49
|
+
const clockify = yield* Prompt.Select({
|
|
50
|
+
message: "Connect Clockify?",
|
|
51
|
+
choices: [
|
|
52
|
+
{ title: "Connect with an API key", value: "key" },
|
|
53
|
+
{ title: "Skip Clockify for now", value: "skip" }
|
|
54
|
+
]
|
|
55
|
+
});
|
|
56
|
+
const clockifyConnected = clockify === "key" ? yield* attempt(connectClockify(Option.none())) : false;
|
|
57
|
+
if (!jiraConnected && !clockifyConnected) {
|
|
58
|
+
return yield* new CommandFailed({
|
|
59
|
+
message: `Nothing is connected yet. Run ${CONNECT_JIRA_COMMAND} or jcf auth clockify setup.`
|
|
72
60
|
});
|
|
73
|
-
const user = yield* client.getLoggedUser(undefined).pipe(Effect.flatMap(decodeClockifySetupUser), Effect.catch(() => Effect.succeed(null)));
|
|
74
|
-
if (!user) {
|
|
75
|
-
yield* Console.log("✗ Invalid API key. Run: jcf auth clockify setup\n");
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
yield* Console.log(`Authenticated as: ${user.name} (${user.email})`);
|
|
79
|
-
const workspaces = yield* client.getWorkspacesOfUser(undefined).pipe(Effect.flatMap(decodeClockifySetupWorkspaces), Effect.catch(() => Effect.succeed([])));
|
|
80
|
-
let workspaceId = "";
|
|
81
|
-
let workspaceName = "";
|
|
82
|
-
if (workspaces.length === 1) {
|
|
83
|
-
const workspace = workspaces[0];
|
|
84
|
-
if (workspace !== undefined) {
|
|
85
|
-
workspaceId = workspace.id;
|
|
86
|
-
workspaceName = workspace.name;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else if (workspaces.length > 1) {
|
|
90
|
-
workspaceId = yield* Prompt.Select({
|
|
91
|
-
message: "Select workspace:",
|
|
92
|
-
choices: workspaces.map((workspace) => ({ title: workspace.name, value: workspace.id }))
|
|
93
|
-
});
|
|
94
|
-
workspaceName = workspaces.find((workspace) => workspace.id === workspaceId)?.name ?? "";
|
|
95
|
-
}
|
|
96
|
-
if (workspaceId) {
|
|
97
|
-
yield* clockifyAuth.save({
|
|
98
|
-
apiKey,
|
|
99
|
-
workspaceId,
|
|
100
|
-
userId: user.id,
|
|
101
|
-
baseUrl: "https://api.clockify.me/api"
|
|
102
|
-
});
|
|
103
|
-
yield* Console.log(`✓ Clockify configured (workspace: ${workspaceName})\n`);
|
|
104
|
-
}
|
|
105
61
|
}
|
|
106
|
-
yield* Console.log("─── Setup complete! ───\n");
|
|
107
62
|
return true;
|
|
108
|
-
});
|
|
63
|
+
}).pipe(Effect.catchTag("QuitError", () => Effect.fail(new CommandFailed({ message: "Setup stopped; nothing more was connected." }))));
|
|
109
64
|
// ---------------------------------------------------------------------------
|
|
110
65
|
// TUI launcher
|
|
111
66
|
// ---------------------------------------------------------------------------
|
|
@@ -139,11 +94,7 @@ export const launchTui = (args) => Effect.gen(function* () {
|
|
|
139
94
|
}
|
|
140
95
|
});
|
|
141
96
|
export const launchTuiOrSetup = (args) => Effect.gen(function* () {
|
|
142
|
-
|
|
143
|
-
if (!ready) {
|
|
144
|
-
yield* Console.log("Setup incomplete. Run 'jcf auth status' to check.");
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
97
|
+
yield* checkAuthOrSetup;
|
|
147
98
|
yield* launchTui(args);
|
|
148
99
|
});
|
|
149
100
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Command, Prompt } from "effect/cli";
|
|
2
2
|
import { TimerService } from "../../services/TimerService.js";
|
|
3
|
-
export declare const discard: Command.Command<"discard", {}, {}, import("effect/Terminal").QuitError | import("../../services/TimerService.js").TimerError, TimerService | Prompt.Environment>;
|
|
3
|
+
export declare const discard: Command.Command<"discard", {}, {}, import("../CommandFailed.js").CommandFailed | import("effect/Terminal").QuitError | import("../../services/TimerService.js").TimerError, TimerService | Prompt.Environment>;
|
|
4
4
|
//# sourceMappingURL=discard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discard.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/discard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"discard.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/discard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAG7D,eAAO,MAAM,OAAO,gNAkCnB,CAAA"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { Console, Effect, SubscriptionRef } from "effect";
|
|
7
7
|
import { Command, Prompt } from "effect/cli";
|
|
8
8
|
import { TimerService } from "../../services/TimerService.js";
|
|
9
|
+
import { toCommandFailed } from "../CommandFailed.js";
|
|
9
10
|
export const discard = Command.make("discard", {}, () => Effect.gen(function* () {
|
|
10
11
|
const timer = yield* TimerService;
|
|
11
12
|
yield* timer.detectRunning;
|
|
@@ -27,7 +28,7 @@ export const discard = Command.make("discard", {}, () => Effect.gen(function* ()
|
|
|
27
28
|
yield* Console.log("Cancelled.");
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
|
-
yield* timer.discard.pipe(Effect.
|
|
31
|
+
yield* timer.discard.pipe(Effect.mapError(toCommandFailed));
|
|
31
32
|
yield* Console.log("Timer discarded. Clockify entry deleted.");
|
|
32
33
|
}));
|
|
33
34
|
//# sourceMappingURL=discard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discard.js","sourceRoot":"","sources":["../../../../src/cli/timer/discard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"discard.js","sourceRoot":"","sources":["../../../../src/cli/timer/discard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CACjC,SAAS,EACT,EAAE,EACF,GAAG,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACjC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAA;IAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,CAAA;IACrF,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;IAE3F,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;YACtC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;SAClC;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAA;IAE3D,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;AAChE,CAAC,CAAC,CACL,CAAA"}
|
|
@@ -12,5 +12,5 @@ export declare const log: Command.Command<"log", {
|
|
|
12
12
|
readonly date: Option.Option<string>;
|
|
13
13
|
readonly at: Option.Option<string>;
|
|
14
14
|
readonly comment: Option.Option<string>;
|
|
15
|
-
}, {},
|
|
15
|
+
}, {}, import("../CommandFailed.js").CommandFailed, import("../../services/JiraAccess.js").JiraAccess | import("@knpkv/jira-api-client").JiraApiClient | TimerService>;
|
|
16
16
|
//# sourceMappingURL=log.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAoB,OAAO,EAAmB,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAoB,OAAO,EAAmB,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAW7D,eAAO,MAAM,GAAG;;;;;;sKAiFf,CAAA"}
|
|
@@ -7,6 +7,7 @@ import { Console, Effect, Option } from "effect";
|
|
|
7
7
|
import { Argument as Args, Command, Flag as Options } from "effect/cli";
|
|
8
8
|
import { TimerService } from "../../services/TimerService.js";
|
|
9
9
|
import { formatDuration, isFullIsoTimestamp, parseDuration, parseStartTime } from "../../utils/time.js";
|
|
10
|
+
import { toCommandFailed } from "../CommandFailed.js";
|
|
10
11
|
import { fetchTicketByKey, NOT_LOGGED_IN_HINT } from "../fetchTicket.js";
|
|
11
12
|
/** Today's calendar day in the user's *local* timezone as `YYYY-MM-DD`. */
|
|
12
13
|
const localToday = () => {
|
|
@@ -64,7 +65,7 @@ export const log = Command.make("log", {
|
|
|
64
65
|
start: started,
|
|
65
66
|
durationSeconds: totalSeconds,
|
|
66
67
|
comment: Option.isSome(comment) ? comment.value : undefined
|
|
67
|
-
}).pipe(Effect.
|
|
68
|
+
}).pipe(Effect.mapError(toCommandFailed));
|
|
68
69
|
if (result) {
|
|
69
70
|
yield* Console.log(` Clockify: ${result.clockifyLogged ? "✓" : "✗"}`);
|
|
70
71
|
yield* Console.log(` Jira worklog: ${result.jiraWorklogLogged ? "✓" : "✗"}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/cli/timer/log.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/cli/timer/log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAExE,2EAA2E;AAC3E,MAAM,UAAU,GAAG,GAAW,EAAE;IAC9B,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;IACpB,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AAClH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAC7B,KAAK,EACL;IACE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAC1D;IACD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,eAAe,CAAC,kCAAkC,CAAC,EAC3D,OAAO,CAAC,QAAQ,CACjB;IACD,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC3B,OAAO,CAAC,eAAe,CAAC,gDAAgD,CAAC,EACzE,OAAO,CAAC,QAAQ,CACjB;IACD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACrC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAC1C,OAAO,CAAC,QAAQ,CACjB;CACF,EACD,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QAC/C,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;QAChF,OAAM;IACR,CAAC;IAED,yEAAyE;IACzE,mEAAmE;IACnE,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;QAC/E,OAAM;IACR,CAAC;IAED,uEAAuE;IACvE,qEAAqE;IACrE,uDAAuD;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;IACtD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,OAAO,WAAW,CAAC,CAAC,CAAA;IACxE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;QAC9E,OAAM;IACR,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACnC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACtC,OAAM;IACR,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,qBAAqB,CAAC,CAAA;QACtD,OAAM;IACR,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QACvE,OAAM;IACR,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAChE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,cAAc,CAAC,YAAY,CAAC,KAAK,YAAY,IAAI,CAAC,CAAA;IACpF,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAE1D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;QAC5C,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,YAAY;QAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAA;IAEzC,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1E,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/E,CAAC;AACH,CAAC,CAAC,CACL,CAAA"}
|
|
@@ -10,6 +10,7 @@ import { ClockifyAuth } from "../../services/ClockifyAuth.js";
|
|
|
10
10
|
import { ConfigService } from "../../services/ConfigService.js";
|
|
11
11
|
import { TicketService } from "../../services/TicketService.js";
|
|
12
12
|
import { TimerService } from "../../services/TimerService.js";
|
|
13
|
+
import { CommandFailed } from "../CommandFailed.js";
|
|
13
14
|
export declare const start: Command.Command<"start", {
|
|
14
15
|
readonly key: Option.Option<string>;
|
|
15
16
|
readonly project: Option.Option<string>;
|
|
@@ -17,5 +18,5 @@ export declare const start: Command.Command<"start", {
|
|
|
17
18
|
readonly saveDefaults: boolean;
|
|
18
19
|
readonly ago: Option.Option<string>;
|
|
19
20
|
readonly since: Option.Option<string>;
|
|
20
|
-
}, {}, import("effect/Terminal").QuitError | import("../../services/TicketService.js").TicketError | import("../../services/TimerService.js").TimerError, ClockifyApiClient | ClockifyAuth | ConfigService | import("
|
|
21
|
+
}, {}, CommandFailed | import("effect/Terminal").QuitError | import("../../services/TicketService.js").TicketError | import("../../services/TimerService.js").TimerError, ClockifyApiClient | ClockifyAuth | ConfigService | import("../../services/JiraAccess.js").JiraAccess | import("@knpkv/jira-api-client").JiraApiClient | TicketService | TimerService | Prompt.Environment>;
|
|
21
22
|
//# sourceMappingURL=start.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAgB,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAA0B,MAAM,EAAmB,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAoB,OAAO,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAgB,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAA0B,MAAM,EAAmB,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAoB,OAAO,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE7D,OAAO,EAAE,aAAa,EAAgC,MAAM,qBAAqB,CAAA;AAWjF,eAAO,MAAM,KAAK;;;;;;;oXA8LjB,CAAA"}
|
|
@@ -11,6 +11,7 @@ import { ConfigService } from "../../services/ConfigService.js";
|
|
|
11
11
|
import { TicketService } from "../../services/TicketService.js";
|
|
12
12
|
import { TimerService } from "../../services/TimerService.js";
|
|
13
13
|
import { formatElapsed, parseDuration, parseStartTime } from "../../utils/time.js";
|
|
14
|
+
import { CommandFailed, requireJira, toCommandFailed } from "../CommandFailed.js";
|
|
14
15
|
import { fetchTicketByKey, NOT_LOGGED_IN_HINT } from "../fetchTicket.js";
|
|
15
16
|
import { fuzzySelect } from "../fuzzySelect.js";
|
|
16
17
|
const replaceTimerAction = "replace";
|
|
@@ -79,13 +80,14 @@ export const start = Command.make("start", {
|
|
|
79
80
|
return;
|
|
80
81
|
}
|
|
81
82
|
// Refresh tickets for selection
|
|
83
|
+
yield* requireJira;
|
|
82
84
|
yield* ticketService.refresh;
|
|
83
85
|
yield* Effect.sleep("600 millis");
|
|
84
86
|
const { tickets: allTickets } = yield* SubscriptionRef.get(ticketService.state);
|
|
85
87
|
let ticket;
|
|
86
88
|
if (key._tag === "None") {
|
|
87
89
|
if (allTickets.length === 0) {
|
|
88
|
-
yield* Console.log("No
|
|
90
|
+
yield* Console.log("No open Jira issues are assigned to you. Start one by key: jcf timer start PROJ-123");
|
|
89
91
|
return;
|
|
90
92
|
}
|
|
91
93
|
const selectedKey = yield* fuzzySelect({
|
|
@@ -105,10 +107,8 @@ export const start = Command.make("start", {
|
|
|
105
107
|
else {
|
|
106
108
|
// Key provided — fetch from Jira to validate and get title
|
|
107
109
|
const fetched = yield* fetchTicketByKey(key.value);
|
|
108
|
-
if (fetched._tag === "NotLoggedIn")
|
|
109
|
-
yield*
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
110
|
+
if (fetched._tag === "NotLoggedIn")
|
|
111
|
+
return yield* new CommandFailed({ message: NOT_LOGGED_IN_HINT });
|
|
112
112
|
if (fetched._tag === "NotFound") {
|
|
113
113
|
yield* Console.log(`Ticket ${key.value} not found in Jira.`);
|
|
114
114
|
return;
|
|
@@ -168,9 +168,7 @@ export const start = Command.make("start", {
|
|
|
168
168
|
});
|
|
169
169
|
yield* Console.log("Defaults saved to ~/.jcf/config.json");
|
|
170
170
|
}
|
|
171
|
-
|
|
172
|
-
if (!started)
|
|
173
|
-
return;
|
|
171
|
+
yield* timer.start(ticket, { projectId, billable: billableVal, startedAt }).pipe(Effect.mapError(toCommandFailed));
|
|
174
172
|
const startedSuffix = startedAt
|
|
175
173
|
? ` (started ${formatElapsed(Math.floor((nowMs - startedAt.getTime()) / 1000))} ago)`
|
|
176
174
|
: "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/cli/timer/start.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/cli/timer/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,5 +44,5 @@ export declare const stop: Command.Command<"stop", {
|
|
|
44
44
|
readonly project: Option.Option<string>;
|
|
45
45
|
readonly billable: Option.Option<boolean>;
|
|
46
46
|
readonly at: Option.Option<string>;
|
|
47
|
-
}, {}, QuitError | TimerError, ClockifyApiClient | ClockifyAuth | ConfigService | import("
|
|
47
|
+
}, {}, QuitError | TimerError, ClockifyApiClient | ClockifyAuth | ConfigService | import("../../services/JiraAccess.js").JiraAccess | import("@knpkv/jira-api-client").JiraApiClient | TimerService | Prompt.Environment>;
|
|
48
48
|
//# sourceMappingURL=stop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAA4B,MAAM,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAA;AAClF,OAAO,EAAE,OAAO,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,KAAK,EAAsB,UAAU,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAiB7D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,WAAY;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3C,KAAG,MAAM,CAAC,MAAM,CACf,MAAM,GAAG,SAAS,EAClB,SAAS,EACT,YAAY,GAAG,iBAAiB,GAAG,aAAa,GAAG,MAAM,CAAC,WAAW,CAsCnE,CAAA;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,WAAY;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAA;CAC3C,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,CAAC,WAAW,CAyBhF,CAAA;AAEJ,eAAO,MAAM,IAAI;;;;
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/cli/timer/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAA4B,MAAM,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAA;AAClF,OAAO,EAAE,OAAO,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,KAAK,EAAsB,UAAU,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAiB7D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,WAAY;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3C,KAAG,MAAM,CAAC,MAAM,CACf,MAAM,GAAG,SAAS,EAClB,SAAS,EACT,YAAY,GAAG,iBAAiB,GAAG,aAAa,GAAG,MAAM,CAAC,WAAW,CAsCnE,CAAA;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,WAAY;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAA;CAC3C,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,CAAC,WAAW,CAyBhF,CAAA;AAEJ,eAAO,MAAM,IAAI;;;;yNAoNhB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../../src/cli/timer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE7E,KAAK,eAAe,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,GAAG,OAAO,OAAO,GAAG,OAAO,SAAS,GAAG,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;AAEhH,eAAO,MAAM,KAAK,EAAE,OAAO,CAAC,OAAO,CACjC,OAAO,EACP,EAAE,EACF,EAAE,EACF,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../../src/cli/timer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE7E,KAAK,eAAe,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,GAAG,OAAO,OAAO,GAAG,OAAO,SAAS,GAAG,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;AAEhH,eAAO,MAAM,KAAK,EAAE,OAAO,CAAC,OAAO,CACjC,OAAO,EACP,EAAE,EACF,EAAE,EACF,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAelC,CAAA"}
|
package/dist/src/cli/timer.js
CHANGED
|
@@ -7,5 +7,12 @@ import { Command } from "effect/cli";
|
|
|
7
7
|
import * as Console from "effect/Console";
|
|
8
8
|
import { discard, edit, log, start, statusCmd, stop } from "./timer/index.js";
|
|
9
9
|
export { discard, edit, log, start, statusCmd, stop } from "./timer/index.js";
|
|
10
|
-
export const timer = Command.make("timer", {}, () => Console.log("Usage: jcf timer <start|stop|discard|status|log|edit>")).pipe(Command.withDescription("
|
|
10
|
+
export const timer = Command.make("timer", {}, () => Console.log("Usage: jcf timer <start|stop|discard|status|log|edit>")).pipe(Command.withDescription("Track time on a Jira issue"), Command.withSubcommands([
|
|
11
|
+
start.pipe(Command.withDescription("Start a timer on a Jira issue, in Clockify")),
|
|
12
|
+
stop.pipe(Command.withDescription("Stop the timer and save the time to Clockify and a Jira worklog")),
|
|
13
|
+
discard.pipe(Command.withDescription("Discard the running timer and delete its Clockify entry")),
|
|
14
|
+
statusCmd.pipe(Command.withDescription("Show the running timer")),
|
|
15
|
+
log.pipe(Command.withDescription("Log time you already spent on a Jira issue")),
|
|
16
|
+
edit.pipe(Command.withDescription("Change the running timer's start time or issue"))
|
|
17
|
+
]));
|
|
11
18
|
//# sourceMappingURL=timer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/cli/timer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAI7E,MAAM,CAAC,MAAM,KAAK,GAMd,OAAO,CAAC,IAAI,CACd,OAAO,EACP,EAAE,EACF,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAC3E,CAAC,IAAI,CACJ,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/cli/timer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAI7E,MAAM,CAAC,MAAM,KAAK,GAMd,OAAO,CAAC,IAAI,CACd,OAAO,EACP,EAAE,EACF,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAC3E,CAAC,IAAI,CACJ,OAAO,CAAC,eAAe,CAAC,4BAA4B,CAAC,EACrD,OAAO,CAAC,eAAe,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,4CAA4C,CAAC,CAAC;IACjF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iEAAiE,CAAC,CAAC;IACrG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,yDAAyD,CAAC,CAAC;IAChG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACjE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,4CAA4C,CAAC,CAAC;IAC/E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,gDAAgD,CAAC,CAAC;CACrF,CAAC,CACH,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one line jcf prints for a command it does not have, instead of the whole help followed by the
|
|
3
|
+
* error at the bottom.
|
|
4
|
+
*
|
|
5
|
+
* effect/cli prints a command's full help before its "Unknown subcommand" error and offers no hook to
|
|
6
|
+
* skip it, so the arguments are checked against the command tree first. Only what is certainly a
|
|
7
|
+
* command name is judged; anything after a command's own flag is left to effect/cli.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** The part of an effect/cli command this check reads. */
|
|
12
|
+
export interface CommandTree {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly unlisted: boolean;
|
|
15
|
+
readonly subcommands: ReadonlyArray<{
|
|
16
|
+
readonly commands: ReadonlyArray<CommandTree>;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The error line for `args` run against `root`, or `undefined` when every command name in them is
|
|
21
|
+
* real (or the first one is preceded by a command's own flag, which effect/cli judges itself).
|
|
22
|
+
*/
|
|
23
|
+
export declare const unknownCommandLine: (args: ReadonlyArray<string>, root: CommandTree) => string | undefined;
|
|
24
|
+
//# sourceMappingURL=unknownCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknownCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/unknownCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAA;CACvF;AA0DD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SAAU,aAAa,CAAC,MAAM,CAAC,QAAQ,WAAW,KAAG,MAAM,GAAG,SAqB5F,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one line jcf prints for a command it does not have, instead of the whole help followed by the
|
|
3
|
+
* error at the bottom.
|
|
4
|
+
*
|
|
5
|
+
* effect/cli prints a command's full help before its "Unknown subcommand" error and offers no hook to
|
|
6
|
+
* skip it, so the arguments are checked against the command tree first. Only what is certainly a
|
|
7
|
+
* command name is judged; anything after a command's own flag is left to effect/cli.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** effect/cli's global flags that take a value, so the value is not mistaken for a command. */
|
|
12
|
+
const valueFlags = ["--completions", "--log-level"];
|
|
13
|
+
/** Where the common second-level commands live, for a first argument that names one of them. */
|
|
14
|
+
const nestedCommands = new Map([
|
|
15
|
+
["status", ["jcf auth status", "jcf timer status"]],
|
|
16
|
+
["start", ["jcf timer start"]],
|
|
17
|
+
["stop", ["jcf timer stop"]],
|
|
18
|
+
["log", ["jcf timer log"]],
|
|
19
|
+
["list", ["jcf issue list"]],
|
|
20
|
+
["reconcile", ["jcf sync reconcile"]],
|
|
21
|
+
["show", ["jcf config show"]],
|
|
22
|
+
["login", ["jcf auth jira token"]],
|
|
23
|
+
["week", ["jcf sync reconcile --week", "the week view: jcf-web"]]
|
|
24
|
+
]);
|
|
25
|
+
const distance = (left, right) => {
|
|
26
|
+
const previous = Array.from({ length: right.length + 1 }, (_, index) => index);
|
|
27
|
+
for (let row = 1; row <= left.length; row++) {
|
|
28
|
+
let diagonal = previous[0] ?? 0;
|
|
29
|
+
previous[0] = row;
|
|
30
|
+
for (let column = 1; column <= right.length; column++) {
|
|
31
|
+
const above = previous[column] ?? 0;
|
|
32
|
+
previous[column] = Math.min(above + 1, (previous[column - 1] ?? 0) + 1, diagonal + (left[row - 1] === right[column - 1] ? 0 : 1));
|
|
33
|
+
diagonal = above;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return previous[right.length] ?? 0;
|
|
37
|
+
};
|
|
38
|
+
/** The names at the smallest distance from `word`, within two edits. */
|
|
39
|
+
const nearest = (word, names) => {
|
|
40
|
+
const scored = names.map((name) => ({ name, score: distance(name, word) })).filter(({ score }) => score <= 2);
|
|
41
|
+
const best = Math.min(...scored.map(({ score }) => score));
|
|
42
|
+
return scored.filter(({ score }) => score === best).map(({ name }) => name);
|
|
43
|
+
};
|
|
44
|
+
const unknownLine = (path, word, command) => {
|
|
45
|
+
const prefix = path.join(" ");
|
|
46
|
+
const nested = path.length === 1 ? nestedCommands.get(word) : undefined;
|
|
47
|
+
const close = nearest(word, command.subcommands.flatMap((group) => group.commands).filter((child) => !child.unlisted).map((child) => child.name));
|
|
48
|
+
const hint = nested !== undefined
|
|
49
|
+
? ` Did you mean ${nested.join(" or ")}?`
|
|
50
|
+
: close.length > 0
|
|
51
|
+
? ` Did you mean ${close.map((name) => `${prefix} ${name}`).join(" or ")}?`
|
|
52
|
+
: "";
|
|
53
|
+
return `${prefix}: unknown command "${word}".${hint} Run ${prefix} --help for the commands.`;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* The error line for `args` run against `root`, or `undefined` when every command name in them is
|
|
57
|
+
* real (or the first one is preceded by a command's own flag, which effect/cli judges itself).
|
|
58
|
+
*/
|
|
59
|
+
export const unknownCommandLine = (args, root) => {
|
|
60
|
+
const path = [root.name];
|
|
61
|
+
let command = root;
|
|
62
|
+
for (let index = 0; index < args.length; index++) {
|
|
63
|
+
const word = args[index] ?? "";
|
|
64
|
+
if (word.startsWith("-")) {
|
|
65
|
+
if (valueFlags.includes(word)) {
|
|
66
|
+
index++;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (word.startsWith("--log-level=") || word.startsWith("--completions="))
|
|
70
|
+
continue;
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
const children = command.subcommands.flatMap((group) => group.commands);
|
|
74
|
+
if (children.length === 0)
|
|
75
|
+
return undefined;
|
|
76
|
+
const child = children.find((candidate) => candidate.name === word);
|
|
77
|
+
if (child === undefined)
|
|
78
|
+
return unknownLine(path, word, command);
|
|
79
|
+
path.push(child.name);
|
|
80
|
+
command = child;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=unknownCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknownCommand.js","sourceRoot":"","sources":["../../../src/cli/unknownCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,+FAA+F;AAC/F,MAAM,UAAU,GAA0B,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;AAE1E,gGAAgG;AAChG,MAAM,cAAc,GAAG,IAAI,GAAG,CAAgC;IAC5D,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IACnD,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9B,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAClC,CAAC,MAAM,EAAE,CAAC,2BAA2B,EAAE,wBAAwB,CAAC,CAAC;CAClE,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE;IACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAC9E,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC5C,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACjB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACnC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CACzB,KAAK,GAAG,CAAC,EACT,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAC/B,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAA;YACD,QAAQ,GAAG,KAAK,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,wEAAwE;AACxE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAA4B,EAAyB,EAAE;IACpF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;IAC7G,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,IAA2B,EAAE,IAAY,EAAE,OAAoB,EAAU,EAAE;IAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvE,MAAM,KAAK,GAAG,OAAO,CACnB,IAAI,EACJ,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACrH,CAAA;IACD,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS;QAC/B,CAAC,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;QACzC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;YAC3E,CAAC,CAAC,EAAE,CAAA;IACN,OAAO,GAAG,MAAM,sBAAsB,IAAI,KAAK,IAAI,QAAQ,MAAM,2BAA2B,CAAA;AAC9F,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAA2B,EAAE,IAAiB,EAAsB,EAAE;IACvG,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,KAAK,EAAE,CAAA;gBACP,SAAQ;YACV,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAAE,SAAQ;YAClF,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACnE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAChE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,GAAG,KAAK,CAAA;IACjB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|