@knpkv/jira-clockify 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/dist/package.json +1 -1
- package/dist/src/bin.js +1 -15
- package/dist/src/bin.js.map +1 -1
- package/dist/src/cli/fetchTicket.js +12 -0
- package/dist/src/cli/fetchTicket.js.map +1 -1
- package/dist/src/cli/layers.js +7 -2
- package/dist/src/cli/layers.js.map +1 -1
- package/dist/src/cli/list.js +1 -0
- package/dist/src/cli/list.js.map +1 -1
- package/dist/src/cli/reconcile.js +131 -0
- package/dist/src/cli/reconcile.js.map +1 -0
- package/dist/src/cli/root.js +25 -0
- package/dist/src/cli/root.js.map +1 -0
- package/dist/src/cli/setup.js +1 -1
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/timer/log.js +5 -1
- package/dist/src/cli/timer/log.js.map +1 -1
- package/dist/src/cli/timer/start.js +6 -2
- package/dist/src/cli/timer/start.js.map +1 -1
- package/dist/src/cli/timer/stop.js +36 -2
- package/dist/src/cli/timer/stop.js.map +1 -1
- package/dist/src/cli/timer.js +4 -0
- package/dist/src/cli/timer.js.map +1 -1
- package/dist/src/services/ReconcileService.js +0 -0
- package/dist/src/services/ReconcileService.js.map +1 -0
- package/dist/src/services/TimerService.js +52 -21
- package/dist/src/services/TimerService.js.map +1 -1
- package/dist/src/tui/App.js +66 -11
- package/dist/src/tui/App.js.map +1 -1
- package/dist/src/tui/atoms/timer.js +5 -0
- package/dist/src/tui/atoms/timer.js.map +1 -1
- package/dist/src/tui/components/PopupMessage.js +7 -2
- package/dist/src/tui/components/PopupMessage.js.map +1 -1
- package/dist/test/ReconcileService.test.js +146 -0
- package/dist/test/ReconcileService.test.js.map +1 -0
- package/dist/test/TimerService.test.js +106 -4
- package/dist/test/TimerService.test.js.map +1 -1
- package/dist/test/commandSurface.test.js +42 -0
- package/dist/test/commandSurface.test.js.map +1 -0
- package/dist/test/fetchTicket.test.js +30 -3
- package/dist/test/fetchTicket.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/nvim/lua/jcf/init.lua +8 -8
- package/nvim/lua/jcf/state.lua +3 -3
- package/nvim/lua/jcf/telescope.lua +3 -3
- package/package.json +3 -3
- package/skills/jcf/SKILL.md +17 -17
- package/skills/jcf/agents/openai.yaml +1 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { describe, expect, it } from "@effect/vitest";
|
|
2
|
+
import { deltaToApply, resolvePeriod } from "../src/cli/reconcile.js";
|
|
3
|
+
import { buildReconcileRows, combineDescriptions, localDay, parseTicketKey, stripTicketPrefix } from "../src/services/ReconcileService.js";
|
|
4
|
+
describe("parseTicketKey", () => {
|
|
5
|
+
it("parses the bracket form `[KEY] summary`", () => {
|
|
6
|
+
expect(parseTicketKey("[PROJ-12] Fix the widget")).toBe("PROJ-12");
|
|
7
|
+
});
|
|
8
|
+
it("parses the colon form `KEY: summary`", () => {
|
|
9
|
+
expect(parseTicketKey("PROJ-12: Fix the widget")).toBe("PROJ-12");
|
|
10
|
+
});
|
|
11
|
+
// A bare colon prefix that isn't a ticket key must not be mistaken for one.
|
|
12
|
+
it("does not treat arbitrary `word:` prefixes as a key", () => {
|
|
13
|
+
expect(parseTicketKey("Meeting: standup")).toBeNull();
|
|
14
|
+
});
|
|
15
|
+
it("returns null for empty / missing descriptions", () => {
|
|
16
|
+
expect(parseTicketKey("")).toBeNull();
|
|
17
|
+
expect(parseTicketKey(null)).toBeNull();
|
|
18
|
+
expect(parseTicketKey(undefined)).toBeNull();
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe("localDay", () => {
|
|
22
|
+
it("formats a date as local YYYY-MM-DD", () => {
|
|
23
|
+
// Construct from local components to stay timezone-independent.
|
|
24
|
+
expect(localDay(new Date(2026, 5, 23, 9, 30))).toBe("2026-06-23");
|
|
25
|
+
expect(localDay(new Date(2026, 0, 1, 0, 0))).toBe("2026-01-01");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("buildReconcileRows", () => {
|
|
29
|
+
// Multiple entries on the same (ticket, day) on one side must sum, not duplicate.
|
|
30
|
+
it("sums per (ticket, day) bucket across both sides", () => {
|
|
31
|
+
const rows = buildReconcileRows([
|
|
32
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600 },
|
|
33
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 1800 }
|
|
34
|
+
], [{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600 }]);
|
|
35
|
+
expect(rows).toHaveLength(1);
|
|
36
|
+
expect(rows[0]).toMatchObject({ ticketKey: "PROJ-1", day: "2026-06-23", clockifySeconds: 5400, jiraSeconds: 3600 });
|
|
37
|
+
});
|
|
38
|
+
// A bucket present on only one side still appears, with 0 on the other.
|
|
39
|
+
it("includes one-sided buckets with zero on the missing side", () => {
|
|
40
|
+
const rows = buildReconcileRows([{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600 }], [{ ticketKey: "PROJ-2", day: "2026-06-24", seconds: 1800 }]);
|
|
41
|
+
expect(rows).toEqual([
|
|
42
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", clockifySeconds: 3600, jiraSeconds: 0, clockifyDescription: null },
|
|
43
|
+
{ ticketKey: "PROJ-2", day: "2026-06-24", clockifySeconds: 0, jiraSeconds: 1800, clockifyDescription: null }
|
|
44
|
+
]);
|
|
45
|
+
});
|
|
46
|
+
it("sorts by day then ticket for stable output", () => {
|
|
47
|
+
const rows = buildReconcileRows([
|
|
48
|
+
{ ticketKey: "PROJ-9", day: "2026-06-24", seconds: 60 },
|
|
49
|
+
{ ticketKey: "PROJ-2", day: "2026-06-23", seconds: 60 },
|
|
50
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 60 }
|
|
51
|
+
], []);
|
|
52
|
+
expect(rows.map((r) => `${r.day} ${r.ticketKey}`)).toEqual([
|
|
53
|
+
"2026-06-23 PROJ-1",
|
|
54
|
+
"2026-06-23 PROJ-2",
|
|
55
|
+
"2026-06-24 PROJ-9"
|
|
56
|
+
]);
|
|
57
|
+
});
|
|
58
|
+
it("returns an empty list when both sides are empty", () => {
|
|
59
|
+
expect(buildReconcileRows([], [])).toEqual([]);
|
|
60
|
+
});
|
|
61
|
+
// The Clockify description becomes the worklog comment, prefix stripped and deduped.
|
|
62
|
+
it("combines Clockify descriptions per bucket into clockifyDescription", () => {
|
|
63
|
+
const rows = buildReconcileRows([
|
|
64
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600, description: "[PROJ-1] Fix the widget" },
|
|
65
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 1800, description: "[PROJ-1] Write tests" },
|
|
66
|
+
{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 600, description: "[PROJ-1] Fix the widget" }
|
|
67
|
+
], []);
|
|
68
|
+
expect(rows[0]?.clockifyDescription).toBe("Fix the widget; Write tests");
|
|
69
|
+
});
|
|
70
|
+
it("yields a null clockifyDescription when descriptions are only the ticket prefix", () => {
|
|
71
|
+
const rows = buildReconcileRows([{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600, description: "[PROJ-1]" }], []);
|
|
72
|
+
expect(rows[0]?.clockifyDescription).toBeNull();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe("stripTicketPrefix", () => {
|
|
76
|
+
it("strips the bracket and colon ticket markers", () => {
|
|
77
|
+
expect(stripTicketPrefix("[PROJ-12] Fix the widget")).toBe("Fix the widget");
|
|
78
|
+
expect(stripTicketPrefix("PROJ-12: Fix the widget")).toBe("Fix the widget");
|
|
79
|
+
});
|
|
80
|
+
it("keeps the prefix appended after a Clockify stop comment", () => {
|
|
81
|
+
expect(stripTicketPrefix("[PROJ-12] Fix the widget | extra note")).toBe("Fix the widget | extra note");
|
|
82
|
+
});
|
|
83
|
+
it("returns empty when only the marker is present", () => {
|
|
84
|
+
expect(stripTicketPrefix("[PROJ-12]")).toBe("");
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe("combineDescriptions", () => {
|
|
88
|
+
it("strips prefixes, dedupes, and joins with '; '", () => {
|
|
89
|
+
expect(combineDescriptions(["[A-1] one", "[A-1] two", "[A-1] one"])).toBe("one; two");
|
|
90
|
+
});
|
|
91
|
+
it("returns null when nothing meaningful remains", () => {
|
|
92
|
+
expect(combineDescriptions([null, undefined, "[A-1]", " "])).toBeNull();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("deltaToApply", () => {
|
|
96
|
+
const row = (clockifySeconds, jiraSeconds) => ({
|
|
97
|
+
ticketKey: "PROJ-1",
|
|
98
|
+
day: "2026-06-23",
|
|
99
|
+
clockifySeconds,
|
|
100
|
+
jiraSeconds,
|
|
101
|
+
clockifyDescription: null
|
|
102
|
+
});
|
|
103
|
+
it("returns the gap the target is short in the chosen direction", () => {
|
|
104
|
+
expect(deltaToApply(row(7200, 3600), "clockify-to-jira")).toBe(3600);
|
|
105
|
+
expect(deltaToApply(row(3600, 7200), "jira-to-clockify")).toBe(3600);
|
|
106
|
+
});
|
|
107
|
+
// Reconciling clockify->jira never proposes shrinking Jira when Jira already has more.
|
|
108
|
+
it("returns 0 when the target already has at least as much", () => {
|
|
109
|
+
expect(deltaToApply(row(3600, 7200), "clockify-to-jira")).toBe(0);
|
|
110
|
+
expect(deltaToApply(row(7200, 3600), "jira-to-clockify")).toBe(0);
|
|
111
|
+
});
|
|
112
|
+
// Sub-minute differences are noise (Jira floors to 60s) and must not be flagged.
|
|
113
|
+
it("ignores differences under the 60s tolerance", () => {
|
|
114
|
+
expect(deltaToApply(row(3630, 3600), "clockify-to-jira")).toBe(0);
|
|
115
|
+
expect(deltaToApply(row(3660, 3600), "clockify-to-jira")).toBe(60);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe("resolvePeriod", () => {
|
|
119
|
+
// A custom window is inclusive of both days → half-open [from 00:00, until+1 00:00).
|
|
120
|
+
it("builds an inclusive custom window from --since/--until", () => {
|
|
121
|
+
const period = resolvePeriod({ week: false, since: "2026-06-01", until: "2026-06-07" });
|
|
122
|
+
expect("error" in period).toBe(false);
|
|
123
|
+
if ("error" in period)
|
|
124
|
+
return;
|
|
125
|
+
expect(localDay(period.from)).toBe("2026-06-01");
|
|
126
|
+
// `to` is exclusive: the instant just before it is still 2026-06-07.
|
|
127
|
+
expect(localDay(new Date(period.to.getTime() - 1))).toBe("2026-06-07");
|
|
128
|
+
});
|
|
129
|
+
it("spans 7 local days for --week (inclusive of today)", () => {
|
|
130
|
+
const period = resolvePeriod({ week: true, since: undefined, until: undefined });
|
|
131
|
+
expect("error" in period).toBe(false);
|
|
132
|
+
if ("error" in period)
|
|
133
|
+
return;
|
|
134
|
+
const days = Math.round((period.to.getTime() - period.from.getTime()) / (24 * 60 * 60 * 1000));
|
|
135
|
+
expect(days).toBe(7);
|
|
136
|
+
});
|
|
137
|
+
it("rejects a reversed custom window", () => {
|
|
138
|
+
const period = resolvePeriod({ week: false, since: "2026-06-07", until: "2026-06-01" });
|
|
139
|
+
expect("error" in period).toBe(true);
|
|
140
|
+
});
|
|
141
|
+
it("rejects a malformed date", () => {
|
|
142
|
+
const period = resolvePeriod({ week: false, since: "june 1", until: undefined });
|
|
143
|
+
expect("error" in period).toBe(true);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
//# sourceMappingURL=ReconcileService.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReconcileService.test.js","sourceRoot":"","sources":["../../test/ReconcileService.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -143,6 +143,18 @@ const MockJiraAuthLayer = Layer.succeed(JiraAuth, {
|
|
|
143
143
|
getCurrentUser: () => Effect.succeed(null),
|
|
144
144
|
isLoggedIn: () => Effect.succeed(true)
|
|
145
145
|
});
|
|
146
|
+
// JiraAuth with no usable token — postJiraWorklog short-circuits to NotLoggedIn.
|
|
147
|
+
const MockJiraAuthLoggedOutLayer = Layer.succeed(JiraAuth, {
|
|
148
|
+
configure: () => Effect.void,
|
|
149
|
+
isConfigured: () => Effect.succeed(false),
|
|
150
|
+
login: () => Effect.void,
|
|
151
|
+
logout: () => Effect.void,
|
|
152
|
+
getAccessToken: () => Effect.succeed(Redacted.make("")),
|
|
153
|
+
getCloudId: () => Effect.succeed(""),
|
|
154
|
+
getSiteUrl: () => Effect.succeed(""),
|
|
155
|
+
getCurrentUser: () => Effect.succeed(null),
|
|
156
|
+
isLoggedIn: () => Effect.succeed(false)
|
|
157
|
+
});
|
|
146
158
|
// Mock HttpClient that returns 201 for Jira worklog POST
|
|
147
159
|
const MockHttpClientLayer = Layer.succeed(HttpClient.HttpClient, HttpClient.make((request) => Effect.succeed(HttpClientResponse.fromWeb(request, new Response(JSON.stringify({ id: "wl-1" }), {
|
|
148
160
|
status: 201,
|
|
@@ -153,9 +165,23 @@ const MockHttpClientFailLayer = Layer.succeed(HttpClient.HttpClient, HttpClient.
|
|
|
153
165
|
status: 400,
|
|
154
166
|
headers: { "content-type": "application/json" }
|
|
155
167
|
})))));
|
|
168
|
+
// HttpClient that fails the Jira worklog POST `failures` times, then succeeds —
|
|
169
|
+
// models a transient Jira outage so a retry can recover.
|
|
170
|
+
const makeFlakyHttpClientLayer = (failures) => {
|
|
171
|
+
let calls = 0;
|
|
172
|
+
return Layer.succeed(HttpClient.HttpClient, HttpClient.make((request) => Effect.succeed(HttpClientResponse.fromWeb(request, calls++ < failures
|
|
173
|
+
? new Response(JSON.stringify({ errorMessages: ["nope"] }), {
|
|
174
|
+
status: 400,
|
|
175
|
+
headers: { "content-type": "application/json" }
|
|
176
|
+
})
|
|
177
|
+
: new Response(JSON.stringify({ id: "wl-1" }), {
|
|
178
|
+
status: 201,
|
|
179
|
+
headers: { "content-type": "application/json" }
|
|
180
|
+
})))));
|
|
181
|
+
};
|
|
156
182
|
const TestLayer = timerLayer.pipe(Layer.provide(MockClockifyLayer), Layer.provide(MockJiraApiClientLayer), Layer.provide(MockClockifyAuthLayer), Layer.provide(MockConfigLayer), Layer.provide(MockStateWriterLayer), Layer.provide(MockJiraAuthLayer), Layer.provide(MockHttpClientLayer));
|
|
157
|
-
// Build a TimerService layer with overridden Clockify / HttpClient mocks.
|
|
158
|
-
const makeTestLayer = (clockify = mockClockify, httpLayer = MockHttpClientLayer) => timerLayer.pipe(Layer.provide(Layer.succeed(ClockifyApiClient, clockify)), Layer.provide(MockJiraApiClientLayer), Layer.provide(MockClockifyAuthLayer), Layer.provide(MockConfigLayer), Layer.provide(MockStateWriterLayer), Layer.provide(
|
|
183
|
+
// Build a TimerService layer with overridden Clockify / HttpClient / JiraAuth mocks.
|
|
184
|
+
const makeTestLayer = (clockify = mockClockify, httpLayer = MockHttpClientLayer, jiraAuthLayer = MockJiraAuthLayer) => timerLayer.pipe(Layer.provide(Layer.succeed(ClockifyApiClient, clockify)), Layer.provide(MockJiraApiClientLayer), Layer.provide(MockClockifyAuthLayer), Layer.provide(MockConfigLayer), Layer.provide(MockStateWriterLayer), Layer.provide(jiraAuthLayer), Layer.provide(httpLayer));
|
|
159
185
|
// ---------------------------------------------------------------------------
|
|
160
186
|
// Tests
|
|
161
187
|
// ---------------------------------------------------------------------------
|
|
@@ -196,7 +222,7 @@ describe("TimerService", () => {
|
|
|
196
222
|
yield* svc.start(makeTicket());
|
|
197
223
|
const result = yield* svc.stop();
|
|
198
224
|
expect(result.clockifyLogged).toBe(true);
|
|
199
|
-
expect(result.
|
|
225
|
+
expect(result.jiraWorklog?._tag).toBe("Posted");
|
|
200
226
|
const state = yield* SubscriptionRef.get(svc.state);
|
|
201
227
|
expect(state.active).toBe(false);
|
|
202
228
|
expect(state.ticketKey).toBeNull();
|
|
@@ -240,7 +266,7 @@ describe("TimerService", () => {
|
|
|
240
266
|
yield* svc.start(makeTicket());
|
|
241
267
|
// Stop immediately — elapsed ~0ms, should still log with 60s floor
|
|
242
268
|
const result = yield* svc.stop();
|
|
243
|
-
expect(result.
|
|
269
|
+
expect(result.jiraWorklog?._tag).toBe("Posted");
|
|
244
270
|
expect(result.clockifyLogged).toBe(true);
|
|
245
271
|
}).pipe(Effect.provide(TestLayer)));
|
|
246
272
|
});
|
|
@@ -468,6 +494,82 @@ describe("TimerService", () => {
|
|
|
468
494
|
expect(createdEntries).toHaveLength(0);
|
|
469
495
|
}).pipe(Effect.provide(TestLayer)));
|
|
470
496
|
});
|
|
497
|
+
describe("worklog retry", () => {
|
|
498
|
+
// A successful stop leaves nothing to retry — outcome Posted, no retry params.
|
|
499
|
+
it.effect("stop reports Posted with no retry params when Jira succeeds", () => Effect.gen(function* () {
|
|
500
|
+
resetCaptures();
|
|
501
|
+
const svc = yield* TimerService;
|
|
502
|
+
yield* svc.start(makeTicket());
|
|
503
|
+
const result = yield* svc.stop({ comment: "done" });
|
|
504
|
+
expect(result.jiraWorklog?._tag).toBe("Posted");
|
|
505
|
+
expect(result.worklog).toBeNull();
|
|
506
|
+
}).pipe(Effect.provide(TestLayer)));
|
|
507
|
+
// A transient Jira failure (4xx) must report Failed with a message and surface retry params.
|
|
508
|
+
it.effect("stop reports Failed with a message and retry params when Jira rejects", () => Effect.gen(function* () {
|
|
509
|
+
resetCaptures();
|
|
510
|
+
const svc = yield* TimerService;
|
|
511
|
+
yield* svc.start(makeTicket());
|
|
512
|
+
const result = yield* svc.stop({ comment: "done" });
|
|
513
|
+
expect(result.clockifyLogged).toBe(true);
|
|
514
|
+
expect(result.jiraWorklog?._tag).toBe("Failed");
|
|
515
|
+
if (result.jiraWorklog?._tag === "Failed") {
|
|
516
|
+
// The Jira error body is summarised into the message.
|
|
517
|
+
expect(result.jiraWorklog.message).toContain("400");
|
|
518
|
+
expect(result.jiraWorklog.message).toContain("nope");
|
|
519
|
+
}
|
|
520
|
+
expect(result.worklog).not.toBeNull();
|
|
521
|
+
expect(result.worklog?.ticketKey).toBe("PROJ-123");
|
|
522
|
+
expect(result.worklog?.comment).toBe("done");
|
|
523
|
+
}).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientFailLayer))));
|
|
524
|
+
// Not logged in must report NotLoggedIn (unrecoverable) and expose NO retry params.
|
|
525
|
+
it.effect("stop reports NotLoggedIn and no retry params when there is no token", () => Effect.gen(function* () {
|
|
526
|
+
resetCaptures();
|
|
527
|
+
const svc = yield* TimerService;
|
|
528
|
+
yield* svc.start(makeTicket());
|
|
529
|
+
const result = yield* svc.stop({ comment: "done" });
|
|
530
|
+
expect(result.clockifyLogged).toBe(true);
|
|
531
|
+
expect(result.jiraWorklog?._tag).toBe("NotLoggedIn");
|
|
532
|
+
// NotLoggedIn can't be fixed by retrying, so the retry payload is withheld.
|
|
533
|
+
expect(result.worklog).toBeNull();
|
|
534
|
+
}).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientLayer, MockJiraAuthLoggedOutLayer))));
|
|
535
|
+
// logWorklog reposts in isolation and succeeds once Jira recovers — the retry round-trip.
|
|
536
|
+
it.effect("logWorklog recovers after a transient Jira failure", () => Effect.gen(function* () {
|
|
537
|
+
resetCaptures();
|
|
538
|
+
const svc = yield* TimerService;
|
|
539
|
+
yield* svc.start(makeTicket());
|
|
540
|
+
const result = yield* svc.stop({ comment: "done" });
|
|
541
|
+
expect(result.jiraWorklog?._tag).toBe("Failed");
|
|
542
|
+
expect(result.worklog).not.toBeNull();
|
|
543
|
+
// Jira was flaky on the first POST (during stop) but recovers on retry.
|
|
544
|
+
const retried = yield* svc.logWorklog(result.worklog);
|
|
545
|
+
expect(retried._tag).toBe("Posted");
|
|
546
|
+
}).pipe(Effect.provide(makeTestLayer(mockClockify, makeFlakyHttpClientLayer(1)))));
|
|
547
|
+
// A retry against a still-down Jira reports Failed (with reason) rather than crashing.
|
|
548
|
+
it.effect("logWorklog reports Failed while Jira is still failing", () => Effect.gen(function* () {
|
|
549
|
+
resetCaptures();
|
|
550
|
+
const svc = yield* TimerService;
|
|
551
|
+
const retried = yield* svc.logWorklog({
|
|
552
|
+
ticketKey: "PROJ-123",
|
|
553
|
+
startedAt: new Date("2025-01-01T09:00:00.000Z"),
|
|
554
|
+
durationSeconds: 600,
|
|
555
|
+
comment: "done"
|
|
556
|
+
});
|
|
557
|
+
expect(retried._tag).toBe("Failed");
|
|
558
|
+
if (retried._tag === "Failed")
|
|
559
|
+
expect(retried.message).toContain("400");
|
|
560
|
+
}).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientFailLayer))));
|
|
561
|
+
// logWorklog reports NotLoggedIn when there is no token, so callers can skip retrying.
|
|
562
|
+
it.effect("logWorklog reports NotLoggedIn when there is no token", () => Effect.gen(function* () {
|
|
563
|
+
resetCaptures();
|
|
564
|
+
const svc = yield* TimerService;
|
|
565
|
+
const retried = yield* svc.logWorklog({
|
|
566
|
+
ticketKey: "PROJ-123",
|
|
567
|
+
startedAt: new Date("2025-01-01T09:00:00.000Z"),
|
|
568
|
+
durationSeconds: 600
|
|
569
|
+
});
|
|
570
|
+
expect(retried._tag).toBe("NotLoggedIn");
|
|
571
|
+
}).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientLayer, MockJiraAuthLoggedOutLayer))));
|
|
572
|
+
});
|
|
471
573
|
describe("start backdating", () => {
|
|
472
574
|
// A backdated start records the corrected start time on the Clockify entry and state
|
|
473
575
|
it.effect("uses the provided startedAt instead of now", () => Effect.gen(function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimerService.test.js","sourceRoot":"","sources":["../../test/TimerService.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimerService.test.js","sourceRoot":"","sources":["../../test/TimerService.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, expect, it } from "@effect/vitest";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { Command } from "effect/unstable/cli";
|
|
4
|
+
import { HeadlessLayer } from "../src/cli/layers.js";
|
|
5
|
+
import { root } from "../src/cli/root.js";
|
|
6
|
+
const run = (args) => Command.runWith(root, { version: "0.0.0-test" })(args).pipe(Effect.provide(HeadlessLayer), Effect.exit);
|
|
7
|
+
describe("jcf command surface", () => {
|
|
8
|
+
const canonicalCommands = [
|
|
9
|
+
["timer"],
|
|
10
|
+
["timer", "start", "--help"],
|
|
11
|
+
["timer", "stop", "--help"],
|
|
12
|
+
["timer", "discard", "--help"],
|
|
13
|
+
["timer", "status", "--help"],
|
|
14
|
+
["timer", "log", "--help"],
|
|
15
|
+
["timer", "edit", "--help"],
|
|
16
|
+
["issue", "list", "--help"],
|
|
17
|
+
["sync", "reconcile", "--help"]
|
|
18
|
+
];
|
|
19
|
+
for (const args of canonicalCommands) {
|
|
20
|
+
it.effect(`accepts canonical command: jcf ${args.join(" ")}`, () => Effect.gen(function* () {
|
|
21
|
+
const exit = yield* run(args);
|
|
22
|
+
expect(exit._tag).toBe("Success");
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
const legacyCommands = [
|
|
26
|
+
["start"],
|
|
27
|
+
["stop"],
|
|
28
|
+
["discard"],
|
|
29
|
+
["status"],
|
|
30
|
+
["log"],
|
|
31
|
+
["edit"],
|
|
32
|
+
["list"],
|
|
33
|
+
["reconcile"]
|
|
34
|
+
];
|
|
35
|
+
for (const args of legacyCommands) {
|
|
36
|
+
it.effect(`rejects removed legacy command: jcf ${args.join(" ")}`, () => Effect.gen(function* () {
|
|
37
|
+
const exit = yield* run(args);
|
|
38
|
+
expect(exit._tag).toBe("Failure");
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=commandSurface.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandSurface.test.js","sourceRoot":"","sources":["../../test/commandSurface.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEzC,MAAM,GAAG,GAAG,CAAC,IAA2B,EAAE,EAAE,CAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACzD,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAC7B,MAAM,CAAC,IAAI,CACZ,CAAA;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,iBAAiB,GAAG;QACxB,CAAC,OAAO,CAAC;QACT,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC5B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3B,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9B,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC7B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC1B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3B,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;KACvB,CAAA;IAEV,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,kCAAkC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CACjE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAE7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,CAAC,OAAO,CAAC;QACT,CAAC,MAAM,CAAC;QACR,CAAC,SAAS,CAAC;QACX,CAAC,QAAQ,CAAC;QACV,CAAC,KAAK,CAAC;QACP,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,CAAC;QACR,CAAC,WAAW,CAAC;KACL,CAAA;IAEV,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,uCAAuC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CACtE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAE7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "@effect/vitest";
|
|
2
2
|
import { JiraApiClient } from "@knpkv/jira-api-client";
|
|
3
|
+
import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
|
|
3
4
|
import * as Effect from "effect/Effect";
|
|
4
5
|
import * as Layer from "effect/Layer";
|
|
5
6
|
import { fetchTicketByKey } from "../src/cli/fetchTicket.js";
|
|
@@ -17,6 +18,15 @@ const makeJiraLayer = (resolve) => Layer.succeed(JiraApiClient, {
|
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
});
|
|
21
|
+
// JiraAuth mock — only `isLoggedIn` matters for fetchTicketByKey.
|
|
22
|
+
const makeAuthLayer = (loggedIn) => Layer.succeed(JiraAuth, {
|
|
23
|
+
isLoggedIn: () => Effect.succeed(loggedIn)
|
|
24
|
+
});
|
|
25
|
+
// JiraAuth whose isLoggedIn fails with a platform error (e.g. unreadable token file).
|
|
26
|
+
const makeAuthFailLayer = (message) => Layer.succeed(JiraAuth, {
|
|
27
|
+
isLoggedIn: () => Effect.fail({ message })
|
|
28
|
+
});
|
|
29
|
+
const LoggedIn = makeAuthLayer(true);
|
|
20
30
|
const issueFixture = {
|
|
21
31
|
key: "PROJ-7",
|
|
22
32
|
fields: {
|
|
@@ -46,17 +56,34 @@ describe("fetchTicketByKey", () => {
|
|
|
46
56
|
expect(result.ticket.assignee).toBe("Dev");
|
|
47
57
|
expect(result.ticket.type).toBe("Story");
|
|
48
58
|
expect(result.ticket.labels).toEqual(["backend", "api"]);
|
|
49
|
-
}).pipe(Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } })))));
|
|
59
|
+
}).pipe(Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } }))), Effect.provide(LoggedIn)));
|
|
50
60
|
// A 404 must map to NotFound (genuine "no such issue")
|
|
51
61
|
it.effect("returns NotFound on a 404", () => Effect.gen(function* () {
|
|
52
62
|
const result = yield* fetchTicketByKey("PROJ-404");
|
|
53
63
|
expect(result._tag).toBe("NotFound");
|
|
54
|
-
}).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["not found"] }, response: { ok: false, status: 404 } })))));
|
|
64
|
+
}).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["not found"] }, response: { ok: false, status: 404 } }))), Effect.provide(LoggedIn)));
|
|
55
65
|
// A non-404 failure (auth/network) must map to FetchError, NOT NotFound —
|
|
56
66
|
// so a 401 is never reported to the user as "Ticket not found".
|
|
57
67
|
it.effect("returns FetchError on a 401 (distinct from NotFound)", () => Effect.gen(function* () {
|
|
58
68
|
const result = yield* fetchTicketByKey("PROJ-1");
|
|
59
69
|
expect(result._tag).toBe("FetchError");
|
|
60
|
-
}).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["unauthorized"] }, response: { ok: false, status: 401 } })))));
|
|
70
|
+
}).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["unauthorized"] }, response: { ok: false, status: 401 } }))), Effect.provide(LoggedIn)));
|
|
71
|
+
// Not logged in must short-circuit to NotLoggedIn — an unauthenticated request
|
|
72
|
+
// 404s on a malformed URL and would otherwise masquerade as "ticket not found".
|
|
73
|
+
it.effect("returns NotLoggedIn when not authenticated", () => Effect.gen(function* () {
|
|
74
|
+
const result = yield* fetchTicketByKey("PROJ-7");
|
|
75
|
+
expect(result._tag).toBe("NotLoggedIn");
|
|
76
|
+
}).pipe(
|
|
77
|
+
// The Jira client would succeed, but the login check must short-circuit first.
|
|
78
|
+
Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } }))), Effect.provide(makeAuthLayer(false))));
|
|
79
|
+
// A genuine platform error reading the token must NOT masquerade as NotLoggedIn —
|
|
80
|
+
// it is a real failure and should route to FetchError (only a clean absent token is NotLoggedIn).
|
|
81
|
+
it.effect("returns FetchError when the login check fails with a platform error", () => Effect.gen(function* () {
|
|
82
|
+
const result = yield* fetchTicketByKey("PROJ-7");
|
|
83
|
+
expect(result._tag).toBe("FetchError");
|
|
84
|
+
if (result._tag !== "FetchError")
|
|
85
|
+
return;
|
|
86
|
+
expect(result.message).toBe("token file unreadable");
|
|
87
|
+
}).pipe(Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } }))), Effect.provide(makeAuthFailLayer("token file unreadable"))));
|
|
61
88
|
});
|
|
62
89
|
//# sourceMappingURL=fetchTicket.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTicket.test.js","sourceRoot":"","sources":["../../test/fetchTicket.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,aAAa,GAAG,CACpB,OAA6F,EAC7F,EAAE,CACF,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE;IAC3B,EAAE,EAAE;QACF,MAAM,EAAE;YACN,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACtC;KACF;CACO,CAAC,CAAA;AAEb,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE;QACN,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;QAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC1B,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QAChC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC5B,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAC1B,OAAO,EAAE,0BAA0B;KACpC;CACF,CAAA;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,8EAA8E;IAC9E,EAAE,CAAC,MAAM,CAAC,0CAA0C,EAAE,GAAG,EAAE,CACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAM;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"fetchTicket.test.js","sourceRoot":"","sources":["../../test/fetchTicket.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,aAAa,GAAG,CACpB,OAA6F,EAC7F,EAAE,CACF,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE;IAC3B,EAAE,EAAE;QACF,MAAM,EAAE;YACN,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACtC;KACF;CACO,CAAC,CAAA;AAEb,kEAAkE;AAClE,MAAM,aAAa,GAAG,CAAC,QAAiB,EAAE,EAAE,CAC1C,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;IACtB,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;CAClC,CAAC,CAAA;AAEb,sFAAsF;AACtF,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC5C,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;IACtB,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClC,CAAC,CAAA;AAEb,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;AAEpC,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE;QACN,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;QAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC1B,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QAChC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC5B,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAC1B,OAAO,EAAE,0BAA0B;KACpC;CACF,CAAA;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,8EAA8E;IAC9E,EAAE,CAAC,MAAM,CAAC,0CAA0C,EAAE,GAAG,EAAE,CACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAM;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAClG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CACzB,CAAC,CAAA;IAEJ,uDAAuD;IACvD,EAAE,CAAC,MAAM,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAC1C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CACZ,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CACzG,EACD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CACzB,CAAC,CAAA;IAEJ,0EAA0E;IAC1E,gEAAgE;IAChE,EAAE,CAAC,MAAM,CAAC,sDAAsD,EAAE,GAAG,EAAE,CACrE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxC,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CACZ,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAC5G,EACD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CACzB,CAAC,CAAA;IAEJ,+EAA+E;IAC/E,gFAAgF;IAChF,EAAE,CAAC,MAAM,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACzC,CAAC,CAAC,CAAC,IAAI;IACL,+EAA+E;IAC/E,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAClG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CACrC,CAAC,CAAA;IAEJ,kFAAkF;IAClF,kGAAkG;IAClG,EAAE,CAAC,MAAM,CAAC,qEAAqE,EAAE,GAAG,EAAE,CACpF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;YAAE,OAAM;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACtD,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAClG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAC3D,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|