@usemonoid/cli 0.2.4 → 0.2.5
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/dist/build-program.js +1 -1
- package/dist/{chunk-S6A25RUL.js → chunk-RYRGM7VH.js} +2 -2
- package/dist/{generated-D63AKUXJ.js → generated-5NCK6WE3.js} +57 -58
- package/dist/generated-5NCK6WE3.js.map +1 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/generated-D63AKUXJ.js.map +0 -1
- /package/dist/{chunk-S6A25RUL.js.map → chunk-RYRGM7VH.js.map} +0 -0
package/dist/build-program.js
CHANGED
|
@@ -1081,7 +1081,7 @@ To use the MONOid CLI from an AI agent or script:
|
|
|
1081
1081
|
});
|
|
1082
1082
|
}
|
|
1083
1083
|
async function registerGeneratedCommands(program, helpers) {
|
|
1084
|
-
const mod = await import("./generated-
|
|
1084
|
+
const mod = await import("./generated-5NCK6WE3.js").catch(() => null);
|
|
1085
1085
|
if (mod?.register) {
|
|
1086
1086
|
mod.register(program, helpers);
|
|
1087
1087
|
}
|
|
@@ -1220,4 +1220,4 @@ export {
|
|
|
1220
1220
|
createProgramForCLI,
|
|
1221
1221
|
getProgramForDocs
|
|
1222
1222
|
};
|
|
1223
|
-
//# sourceMappingURL=chunk-
|
|
1223
|
+
//# sourceMappingURL=chunk-RYRGM7VH.js.map
|
|
@@ -74,7 +74,6 @@ async function runBulk(options) {
|
|
|
74
74
|
// src/commands/generated/index.ts
|
|
75
75
|
function register(program, helpers) {
|
|
76
76
|
const { getOutputFormat, requireToken, exitWithError, getBaseUrl, syncRootOptsFromCommand } = helpers;
|
|
77
|
-
const baseUrl = getBaseUrl();
|
|
78
77
|
const organisationsCmd = program.command("organisations").description("organisations resource");
|
|
79
78
|
organisationsCmd.command("list").description("List organisations").option("--limit <n>", "Max results").option("--offset <n>", "Skip n results").hook("preAction", (thisCommand) => {
|
|
80
79
|
syncRootOptsFromCommand(thisCommand);
|
|
@@ -84,7 +83,7 @@ function register(program, helpers) {
|
|
|
84
83
|
const query = {};
|
|
85
84
|
if (opts.limit != null) query.limit = opts.limit;
|
|
86
85
|
if (opts.offset != null) query.offset = opts.offset;
|
|
87
|
-
const res = await apiRequest({ method: "GET", path: "organisations", token, baseUrl, query });
|
|
86
|
+
const res = await apiRequest({ method: "GET", path: "organisations", token, baseUrl: getBaseUrl(), query });
|
|
88
87
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
89
88
|
const data = res.data?.data ?? [];
|
|
90
89
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -97,7 +96,7 @@ function register(program, helpers) {
|
|
|
97
96
|
const query = {};
|
|
98
97
|
if (opts.includeMembers != null) query.includeMembers = opts.includeMembers;
|
|
99
98
|
if (opts.includePlan != null) query.includePlan = opts.includePlan;
|
|
100
|
-
const res = await apiRequest({ method: "GET", path: "organisations/" + encodeURIComponent(id), token, baseUrl, query });
|
|
99
|
+
const res = await apiRequest({ method: "GET", path: "organisations/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
101
100
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
102
101
|
const data = res.data?.data ?? res.data;
|
|
103
102
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -113,7 +112,7 @@ function register(program, helpers) {
|
|
|
113
112
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
114
113
|
if (opts.ifNotExists) {
|
|
115
114
|
}
|
|
116
|
-
const res = await apiRequest({ method: "POST", path: "organisations", token, baseUrl, body });
|
|
115
|
+
const res = await apiRequest({ method: "POST", path: "organisations", token, baseUrl: getBaseUrl(), body });
|
|
117
116
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
118
117
|
const data = res.data?.data ?? res.data;
|
|
119
118
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -132,7 +131,7 @@ function register(program, helpers) {
|
|
|
132
131
|
const bodyFromFlags2 = {};
|
|
133
132
|
if (opts.name != null) bodyFromFlags2.name = opts.name;
|
|
134
133
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
135
|
-
const res2 = await apiRequest({ method: "PATCH", path: "organisations/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
134
|
+
const res2 = await apiRequest({ method: "PATCH", path: "organisations/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
136
135
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
137
136
|
},
|
|
138
137
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -143,7 +142,7 @@ function register(program, helpers) {
|
|
|
143
142
|
const bodyFromFlags = {};
|
|
144
143
|
if (opts.name != null) bodyFromFlags.name = opts.name;
|
|
145
144
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
146
|
-
const res = await apiRequest({ method: "PATCH", path: "organisations/" + encodeURIComponent(id), token, baseUrl, body });
|
|
145
|
+
const res = await apiRequest({ method: "PATCH", path: "organisations/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
147
146
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
148
147
|
const data = res.data?.data ?? res.data;
|
|
149
148
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -159,7 +158,7 @@ function register(program, helpers) {
|
|
|
159
158
|
const { data, summary } = await runBulk({
|
|
160
159
|
items: ids,
|
|
161
160
|
runOne: async (id2) => {
|
|
162
|
-
const res2 = await apiRequest({ method: "DELETE", path: "organisations/" + encodeURIComponent(id2), token, baseUrl });
|
|
161
|
+
const res2 = await apiRequest({ method: "DELETE", path: "organisations/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
163
162
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
164
163
|
},
|
|
165
164
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -167,7 +166,7 @@ function register(program, helpers) {
|
|
|
167
166
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
168
167
|
return;
|
|
169
168
|
}
|
|
170
|
-
const res = await apiRequest({ method: "DELETE", path: "organisations/" + encodeURIComponent(id), token, baseUrl });
|
|
169
|
+
const res = await apiRequest({ method: "DELETE", path: "organisations/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
171
170
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
172
171
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
173
172
|
});
|
|
@@ -194,7 +193,7 @@ function register(program, helpers) {
|
|
|
194
193
|
if (opts.updatedAtEq != null) query.updatedAtEq = opts.updatedAtEq;
|
|
195
194
|
if (opts.updatedAtGte != null) query.updatedAtGte = opts.updatedAtGte;
|
|
196
195
|
if (opts.updatedAtLte != null) query.updatedAtLte = opts.updatedAtLte;
|
|
197
|
-
const res = await apiRequest({ method: "GET", path: "containers", token, baseUrl, query });
|
|
196
|
+
const res = await apiRequest({ method: "GET", path: "containers", token, baseUrl: getBaseUrl(), query });
|
|
198
197
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
199
198
|
const data = res.data?.data ?? [];
|
|
200
199
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -207,7 +206,7 @@ function register(program, helpers) {
|
|
|
207
206
|
const query = {};
|
|
208
207
|
if (opts.includeLinks != null) query.includeLinks = opts.includeLinks;
|
|
209
208
|
if (opts.linkedProvider != null) query.linkedProvider = opts.linkedProvider;
|
|
210
|
-
const res = await apiRequest({ method: "GET", path: "containers/" + encodeURIComponent(id), token, baseUrl, query });
|
|
209
|
+
const res = await apiRequest({ method: "GET", path: "containers/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
211
210
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
212
211
|
const data = res.data?.data ?? res.data;
|
|
213
212
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -224,7 +223,7 @@ function register(program, helpers) {
|
|
|
224
223
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
225
224
|
if (opts.ifNotExists) {
|
|
226
225
|
}
|
|
227
|
-
const res = await apiRequest({ method: "POST", path: "containers", token, baseUrl, body });
|
|
226
|
+
const res = await apiRequest({ method: "POST", path: "containers", token, baseUrl: getBaseUrl(), body });
|
|
228
227
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
229
228
|
const data = res.data?.data ?? res.data;
|
|
230
229
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -244,7 +243,7 @@ function register(program, helpers) {
|
|
|
244
243
|
if (opts.name != null) bodyFromFlags2.name = opts.name;
|
|
245
244
|
if (opts.description != null) bodyFromFlags2.description = opts.description;
|
|
246
245
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
247
|
-
const res2 = await apiRequest({ method: "PATCH", path: "containers/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
246
|
+
const res2 = await apiRequest({ method: "PATCH", path: "containers/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
248
247
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
249
248
|
},
|
|
250
249
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -256,7 +255,7 @@ function register(program, helpers) {
|
|
|
256
255
|
if (opts.name != null) bodyFromFlags.name = opts.name;
|
|
257
256
|
if (opts.description != null) bodyFromFlags.description = opts.description;
|
|
258
257
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
259
|
-
const res = await apiRequest({ method: "PATCH", path: "containers/" + encodeURIComponent(id), token, baseUrl, body });
|
|
258
|
+
const res = await apiRequest({ method: "PATCH", path: "containers/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
260
259
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
261
260
|
const data = res.data?.data ?? res.data;
|
|
262
261
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -272,7 +271,7 @@ function register(program, helpers) {
|
|
|
272
271
|
const { data, summary } = await runBulk({
|
|
273
272
|
items: ids,
|
|
274
273
|
runOne: async (id2) => {
|
|
275
|
-
const res2 = await apiRequest({ method: "DELETE", path: "containers/" + encodeURIComponent(id2), token, baseUrl });
|
|
274
|
+
const res2 = await apiRequest({ method: "DELETE", path: "containers/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
276
275
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
277
276
|
},
|
|
278
277
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -280,7 +279,7 @@ function register(program, helpers) {
|
|
|
280
279
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
281
280
|
return;
|
|
282
281
|
}
|
|
283
|
-
const res = await apiRequest({ method: "DELETE", path: "containers/" + encodeURIComponent(id), token, baseUrl });
|
|
282
|
+
const res = await apiRequest({ method: "DELETE", path: "containers/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
284
283
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
285
284
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
286
285
|
});
|
|
@@ -306,7 +305,7 @@ function register(program, helpers) {
|
|
|
306
305
|
if (opts.updatedAtEq != null) query.updatedAtEq = opts.updatedAtEq;
|
|
307
306
|
if (opts.updatedAtGte != null) query.updatedAtGte = opts.updatedAtGte;
|
|
308
307
|
if (opts.updatedAtLte != null) query.updatedAtLte = opts.updatedAtLte;
|
|
309
|
-
const res = await apiRequest({ method: "GET", path: "projects", token, baseUrl, query });
|
|
308
|
+
const res = await apiRequest({ method: "GET", path: "projects", token, baseUrl: getBaseUrl(), query });
|
|
310
309
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
311
310
|
const data = res.data?.data ?? [];
|
|
312
311
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -319,7 +318,7 @@ function register(program, helpers) {
|
|
|
319
318
|
const query = {};
|
|
320
319
|
if (opts.includeCategory != null) query.includeCategory = opts.includeCategory;
|
|
321
320
|
if (opts.includeLabels != null) query.includeLabels = opts.includeLabels;
|
|
322
|
-
const res = await apiRequest({ method: "GET", path: "projects/" + encodeURIComponent(id), token, baseUrl, query });
|
|
321
|
+
const res = await apiRequest({ method: "GET", path: "projects/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
323
322
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
324
323
|
const data = res.data?.data ?? res.data;
|
|
325
324
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -337,7 +336,7 @@ function register(program, helpers) {
|
|
|
337
336
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
338
337
|
if (opts.ifNotExists) {
|
|
339
338
|
}
|
|
340
|
-
const res = await apiRequest({ method: "POST", path: "projects", token, baseUrl, body });
|
|
339
|
+
const res = await apiRequest({ method: "POST", path: "projects", token, baseUrl: getBaseUrl(), body });
|
|
341
340
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
342
341
|
const data = res.data?.data ?? res.data;
|
|
343
342
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -359,7 +358,7 @@ function register(program, helpers) {
|
|
|
359
358
|
if (opts.status != null) bodyFromFlags2.status = opts.status;
|
|
360
359
|
if (opts.containerId != null) bodyFromFlags2.containerId = opts.containerId;
|
|
361
360
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
362
|
-
const res2 = await apiRequest({ method: "PATCH", path: "projects/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
361
|
+
const res2 = await apiRequest({ method: "PATCH", path: "projects/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
363
362
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
364
363
|
},
|
|
365
364
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -373,7 +372,7 @@ function register(program, helpers) {
|
|
|
373
372
|
if (opts.status != null) bodyFromFlags.status = opts.status;
|
|
374
373
|
if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;
|
|
375
374
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
376
|
-
const res = await apiRequest({ method: "PATCH", path: "projects/" + encodeURIComponent(id), token, baseUrl, body });
|
|
375
|
+
const res = await apiRequest({ method: "PATCH", path: "projects/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
377
376
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
378
377
|
const data = res.data?.data ?? res.data;
|
|
379
378
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -389,7 +388,7 @@ function register(program, helpers) {
|
|
|
389
388
|
const { data, summary } = await runBulk({
|
|
390
389
|
items: ids,
|
|
391
390
|
runOne: async (id2) => {
|
|
392
|
-
const res2 = await apiRequest({ method: "DELETE", path: "projects/" + encodeURIComponent(id2), token, baseUrl });
|
|
391
|
+
const res2 = await apiRequest({ method: "DELETE", path: "projects/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
393
392
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
394
393
|
},
|
|
395
394
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -397,7 +396,7 @@ function register(program, helpers) {
|
|
|
397
396
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
398
397
|
return;
|
|
399
398
|
}
|
|
400
|
-
const res = await apiRequest({ method: "DELETE", path: "projects/" + encodeURIComponent(id), token, baseUrl });
|
|
399
|
+
const res = await apiRequest({ method: "DELETE", path: "projects/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
401
400
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
402
401
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
403
402
|
});
|
|
@@ -412,7 +411,7 @@ function register(program, helpers) {
|
|
|
412
411
|
if (opts.offset != null) query.offset = opts.offset;
|
|
413
412
|
if (opts.entityType != null) query.entityType = opts.entityType;
|
|
414
413
|
if (opts.organisationId != null) query.organisationId = opts.organisationId;
|
|
415
|
-
const res = await apiRequest({ method: "GET", path: "categories", token, baseUrl, query });
|
|
414
|
+
const res = await apiRequest({ method: "GET", path: "categories", token, baseUrl: getBaseUrl(), query });
|
|
416
415
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
417
416
|
const data = res.data?.data ?? [];
|
|
418
417
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -423,7 +422,7 @@ function register(program, helpers) {
|
|
|
423
422
|
const token = requireToken();
|
|
424
423
|
if (!token) exitWithError(401, "Missing or invalid token");
|
|
425
424
|
const query = {};
|
|
426
|
-
const res = await apiRequest({ method: "GET", path: "categories/" + encodeURIComponent(id), token, baseUrl, query });
|
|
425
|
+
const res = await apiRequest({ method: "GET", path: "categories/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
427
426
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
428
427
|
const data = res.data?.data ?? res.data;
|
|
429
428
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -441,7 +440,7 @@ function register(program, helpers) {
|
|
|
441
440
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
442
441
|
if (opts.ifNotExists) {
|
|
443
442
|
}
|
|
444
|
-
const res = await apiRequest({ method: "POST", path: "categories", token, baseUrl, body });
|
|
443
|
+
const res = await apiRequest({ method: "POST", path: "categories", token, baseUrl: getBaseUrl(), body });
|
|
445
444
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
446
445
|
const data = res.data?.data ?? res.data;
|
|
447
446
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -463,7 +462,7 @@ function register(program, helpers) {
|
|
|
463
462
|
if (opts.entityType != null) bodyFromFlags2.entityType = opts.entityType;
|
|
464
463
|
if (opts.organisationId != null) bodyFromFlags2.organisationId = opts.organisationId;
|
|
465
464
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
466
|
-
const res2 = await apiRequest({ method: "PATCH", path: "categories/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
465
|
+
const res2 = await apiRequest({ method: "PATCH", path: "categories/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
467
466
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
468
467
|
},
|
|
469
468
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -477,7 +476,7 @@ function register(program, helpers) {
|
|
|
477
476
|
if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;
|
|
478
477
|
if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;
|
|
479
478
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
480
|
-
const res = await apiRequest({ method: "PATCH", path: "categories/" + encodeURIComponent(id), token, baseUrl, body });
|
|
479
|
+
const res = await apiRequest({ method: "PATCH", path: "categories/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
481
480
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
482
481
|
const data = res.data?.data ?? res.data;
|
|
483
482
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -493,7 +492,7 @@ function register(program, helpers) {
|
|
|
493
492
|
const { data, summary } = await runBulk({
|
|
494
493
|
items: ids,
|
|
495
494
|
runOne: async (id2) => {
|
|
496
|
-
const res2 = await apiRequest({ method: "DELETE", path: "categories/" + encodeURIComponent(id2), token, baseUrl });
|
|
495
|
+
const res2 = await apiRequest({ method: "DELETE", path: "categories/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
497
496
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
498
497
|
},
|
|
499
498
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -501,7 +500,7 @@ function register(program, helpers) {
|
|
|
501
500
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
502
501
|
return;
|
|
503
502
|
}
|
|
504
|
-
const res = await apiRequest({ method: "DELETE", path: "categories/" + encodeURIComponent(id), token, baseUrl });
|
|
503
|
+
const res = await apiRequest({ method: "DELETE", path: "categories/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
505
504
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
506
505
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
507
506
|
});
|
|
@@ -534,7 +533,7 @@ function register(program, helpers) {
|
|
|
534
533
|
if (opts.scheduledAtEq != null) query.scheduledAtEq = opts.scheduledAtEq;
|
|
535
534
|
if (opts.scheduledAtGte != null) query.scheduledAtGte = opts.scheduledAtGte;
|
|
536
535
|
if (opts.scheduledAtLte != null) query.scheduledAtLte = opts.scheduledAtLte;
|
|
537
|
-
const res = await apiRequest({ method: "GET", path: "tasks", token, baseUrl, query });
|
|
536
|
+
const res = await apiRequest({ method: "GET", path: "tasks", token, baseUrl: getBaseUrl(), query });
|
|
538
537
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
539
538
|
const data = res.data?.data ?? [];
|
|
540
539
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -551,7 +550,7 @@ function register(program, helpers) {
|
|
|
551
550
|
if (opts.includeLabels != null) query.includeLabels = opts.includeLabels;
|
|
552
551
|
if (opts.includeRelatedTasks != null) query.includeRelatedTasks = opts.includeRelatedTasks;
|
|
553
552
|
if (opts.includeNotes != null) query.includeNotes = opts.includeNotes;
|
|
554
|
-
const res = await apiRequest({ method: "GET", path: "tasks/" + encodeURIComponent(id), token, baseUrl, query });
|
|
553
|
+
const res = await apiRequest({ method: "GET", path: "tasks/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
555
554
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
556
555
|
const data = res.data?.data ?? res.data;
|
|
557
556
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -578,7 +577,7 @@ function register(program, helpers) {
|
|
|
578
577
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
579
578
|
if (opts.ifNotExists) {
|
|
580
579
|
}
|
|
581
|
-
const res = await apiRequest({ method: "POST", path: "tasks", token, baseUrl, body });
|
|
580
|
+
const res = await apiRequest({ method: "POST", path: "tasks", token, baseUrl: getBaseUrl(), body });
|
|
582
581
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
583
582
|
const data = res.data?.data ?? res.data;
|
|
584
583
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -610,7 +609,7 @@ function register(program, helpers) {
|
|
|
610
609
|
if (opts.dueDate != null) bodyFromFlags2.dueDate = opts.dueDate;
|
|
611
610
|
if (opts.scheduledAt != null) bodyFromFlags2.scheduledAt = opts.scheduledAt;
|
|
612
611
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
613
|
-
const res2 = await apiRequest({ method: "PATCH", path: "tasks/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
612
|
+
const res2 = await apiRequest({ method: "PATCH", path: "tasks/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
614
613
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
615
614
|
},
|
|
616
615
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -634,7 +633,7 @@ function register(program, helpers) {
|
|
|
634
633
|
if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;
|
|
635
634
|
if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;
|
|
636
635
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
637
|
-
const res = await apiRequest({ method: "PATCH", path: "tasks/" + encodeURIComponent(id), token, baseUrl, body });
|
|
636
|
+
const res = await apiRequest({ method: "PATCH", path: "tasks/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
638
637
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
639
638
|
const data = res.data?.data ?? res.data;
|
|
640
639
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -650,7 +649,7 @@ function register(program, helpers) {
|
|
|
650
649
|
const { data, summary } = await runBulk({
|
|
651
650
|
items: ids,
|
|
652
651
|
runOne: async (id2) => {
|
|
653
|
-
const res2 = await apiRequest({ method: "DELETE", path: "tasks/" + encodeURIComponent(id2), token, baseUrl });
|
|
652
|
+
const res2 = await apiRequest({ method: "DELETE", path: "tasks/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
654
653
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
655
654
|
},
|
|
656
655
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -658,7 +657,7 @@ function register(program, helpers) {
|
|
|
658
657
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
659
658
|
return;
|
|
660
659
|
}
|
|
661
|
-
const res = await apiRequest({ method: "DELETE", path: "tasks/" + encodeURIComponent(id), token, baseUrl });
|
|
660
|
+
const res = await apiRequest({ method: "DELETE", path: "tasks/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
662
661
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
663
662
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
664
663
|
});
|
|
@@ -679,7 +678,7 @@ function register(program, helpers) {
|
|
|
679
678
|
if (opts.organisationId != null) query.organisationId = opts.organisationId;
|
|
680
679
|
if (opts.sharedWithUserId != null) query.sharedWithUserId = opts.sharedWithUserId;
|
|
681
680
|
if (opts.isTemplate != null) query.isTemplate = opts.isTemplate;
|
|
682
|
-
const res = await apiRequest({ method: "GET", path: "routine_blocks", token, baseUrl, query });
|
|
681
|
+
const res = await apiRequest({ method: "GET", path: "routine_blocks", token, baseUrl: getBaseUrl(), query });
|
|
683
682
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
684
683
|
const data = res.data?.data ?? [];
|
|
685
684
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -690,7 +689,7 @@ function register(program, helpers) {
|
|
|
690
689
|
const token = requireToken();
|
|
691
690
|
if (!token) exitWithError(401, "Missing or invalid token");
|
|
692
691
|
const query = {};
|
|
693
|
-
const res = await apiRequest({ method: "GET", path: "routine_blocks/" + encodeURIComponent(id), token, baseUrl, query });
|
|
692
|
+
const res = await apiRequest({ method: "GET", path: "routine_blocks/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
694
693
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
695
694
|
const data = res.data?.data ?? res.data;
|
|
696
695
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -715,7 +714,7 @@ function register(program, helpers) {
|
|
|
715
714
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
716
715
|
if (opts.ifNotExists) {
|
|
717
716
|
}
|
|
718
|
-
const res = await apiRequest({ method: "POST", path: "routine_blocks", token, baseUrl, body });
|
|
717
|
+
const res = await apiRequest({ method: "POST", path: "routine_blocks", token, baseUrl: getBaseUrl(), body });
|
|
719
718
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
720
719
|
const data = res.data?.data ?? res.data;
|
|
721
720
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -744,7 +743,7 @@ function register(program, helpers) {
|
|
|
744
743
|
if (opts.blockType != null) bodyFromFlags2.blockType = opts.blockType;
|
|
745
744
|
if (opts.color != null) bodyFromFlags2.color = opts.color;
|
|
746
745
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
747
|
-
const res2 = await apiRequest({ method: "PATCH", path: "routine_blocks/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
746
|
+
const res2 = await apiRequest({ method: "PATCH", path: "routine_blocks/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
748
747
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
749
748
|
},
|
|
750
749
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -765,7 +764,7 @@ function register(program, helpers) {
|
|
|
765
764
|
if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;
|
|
766
765
|
if (opts.color != null) bodyFromFlags.color = opts.color;
|
|
767
766
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
768
|
-
const res = await apiRequest({ method: "PATCH", path: "routine_blocks/" + encodeURIComponent(id), token, baseUrl, body });
|
|
767
|
+
const res = await apiRequest({ method: "PATCH", path: "routine_blocks/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
769
768
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
770
769
|
const data = res.data?.data ?? res.data;
|
|
771
770
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -781,7 +780,7 @@ function register(program, helpers) {
|
|
|
781
780
|
const { data, summary } = await runBulk({
|
|
782
781
|
items: ids,
|
|
783
782
|
runOne: async (id2) => {
|
|
784
|
-
const res2 = await apiRequest({ method: "DELETE", path: "routine_blocks/" + encodeURIComponent(id2), token, baseUrl });
|
|
783
|
+
const res2 = await apiRequest({ method: "DELETE", path: "routine_blocks/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
785
784
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
786
785
|
},
|
|
787
786
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -789,7 +788,7 @@ function register(program, helpers) {
|
|
|
789
788
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
790
789
|
return;
|
|
791
790
|
}
|
|
792
|
-
const res = await apiRequest({ method: "DELETE", path: "routine_blocks/" + encodeURIComponent(id), token, baseUrl });
|
|
791
|
+
const res = await apiRequest({ method: "DELETE", path: "routine_blocks/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
793
792
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
794
793
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
795
794
|
});
|
|
@@ -804,7 +803,7 @@ function register(program, helpers) {
|
|
|
804
803
|
if (opts.offset != null) query.offset = opts.offset;
|
|
805
804
|
if (opts.date != null) query.date = opts.date;
|
|
806
805
|
if (opts.type != null) query.type = opts.type;
|
|
807
|
-
const res = await apiRequest({ method: "GET", path: "reviews", token, baseUrl, query });
|
|
806
|
+
const res = await apiRequest({ method: "GET", path: "reviews", token, baseUrl: getBaseUrl(), query });
|
|
808
807
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
809
808
|
const data = res.data?.data ?? [];
|
|
810
809
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -815,7 +814,7 @@ function register(program, helpers) {
|
|
|
815
814
|
const token = requireToken();
|
|
816
815
|
if (!token) exitWithError(401, "Missing or invalid token");
|
|
817
816
|
const query = {};
|
|
818
|
-
const res = await apiRequest({ method: "GET", path: "reviews/" + encodeURIComponent(id), token, baseUrl, query });
|
|
817
|
+
const res = await apiRequest({ method: "GET", path: "reviews/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });
|
|
819
818
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
820
819
|
const data = res.data?.data ?? res.data;
|
|
821
820
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -834,7 +833,7 @@ function register(program, helpers) {
|
|
|
834
833
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
835
834
|
if (opts.ifNotExists) {
|
|
836
835
|
}
|
|
837
|
-
const res = await apiRequest({ method: "POST", path: "reviews", token, baseUrl, body });
|
|
836
|
+
const res = await apiRequest({ method: "POST", path: "reviews", token, baseUrl: getBaseUrl(), body });
|
|
838
837
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
839
838
|
const data = res.data?.data ?? res.data;
|
|
840
839
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -856,7 +855,7 @@ function register(program, helpers) {
|
|
|
856
855
|
if (opts.sleepTime != null) bodyFromFlags2.sleepTime = opts.sleepTime;
|
|
857
856
|
if (opts.steps != null) bodyFromFlags2.steps = opts.steps;
|
|
858
857
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
859
|
-
const res2 = await apiRequest({ method: "PATCH", path: "reviews/" + encodeURIComponent(id2), token, baseUrl, body: body2 });
|
|
858
|
+
const res2 = await apiRequest({ method: "PATCH", path: "reviews/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
860
859
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
861
860
|
},
|
|
862
861
|
toResult: (id2, ok, status, data3, err) => ok ? { _id: id2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -870,7 +869,7 @@ function register(program, helpers) {
|
|
|
870
869
|
if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;
|
|
871
870
|
if (opts.steps != null) bodyFromFlags.steps = opts.steps;
|
|
872
871
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
873
|
-
const res = await apiRequest({ method: "PATCH", path: "reviews/" + encodeURIComponent(id), token, baseUrl, body });
|
|
872
|
+
const res = await apiRequest({ method: "PATCH", path: "reviews/" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });
|
|
874
873
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
875
874
|
const data = res.data?.data ?? res.data;
|
|
876
875
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -886,7 +885,7 @@ function register(program, helpers) {
|
|
|
886
885
|
const { data, summary } = await runBulk({
|
|
887
886
|
items: ids,
|
|
888
887
|
runOne: async (id2) => {
|
|
889
|
-
const res2 = await apiRequest({ method: "DELETE", path: "reviews/" + encodeURIComponent(id2), token, baseUrl });
|
|
888
|
+
const res2 = await apiRequest({ method: "DELETE", path: "reviews/" + encodeURIComponent(id2), token, baseUrl: getBaseUrl() });
|
|
890
889
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
891
890
|
},
|
|
892
891
|
toResult: (id2, ok, status, _d, err) => ok ? { _id: id2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -894,7 +893,7 @@ function register(program, helpers) {
|
|
|
894
893
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
895
894
|
return;
|
|
896
895
|
}
|
|
897
|
-
const res = await apiRequest({ method: "DELETE", path: "reviews/" + encodeURIComponent(id), token, baseUrl });
|
|
896
|
+
const res = await apiRequest({ method: "DELETE", path: "reviews/" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });
|
|
898
897
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
899
898
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
900
899
|
});
|
|
@@ -908,7 +907,7 @@ function register(program, helpers) {
|
|
|
908
907
|
if (opts.limit != null) query.limit = opts.limit;
|
|
909
908
|
if (opts.offset != null) query.offset = opts.offset;
|
|
910
909
|
if (opts.dates != null) query.dates = opts.dates;
|
|
911
|
-
const res = await apiRequest({ method: "GET", path: "daily_notes", token, baseUrl, query });
|
|
910
|
+
const res = await apiRequest({ method: "GET", path: "daily_notes", token, baseUrl: getBaseUrl(), query });
|
|
912
911
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
913
912
|
const data = res.data?.data ?? [];
|
|
914
913
|
printOutput(getOutputFormat(), data, false);
|
|
@@ -919,7 +918,7 @@ function register(program, helpers) {
|
|
|
919
918
|
const token = requireToken();
|
|
920
919
|
if (!token) exitWithError(401, "Missing or invalid token");
|
|
921
920
|
const query = {};
|
|
922
|
-
const res = await apiRequest({ method: "GET", path: "daily_notes/" + encodeURIComponent(date), token, baseUrl, query });
|
|
921
|
+
const res = await apiRequest({ method: "GET", path: "daily_notes/" + encodeURIComponent(date), token, baseUrl: getBaseUrl(), query });
|
|
923
922
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
924
923
|
const data = res.data?.data ?? res.data;
|
|
925
924
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -935,7 +934,7 @@ function register(program, helpers) {
|
|
|
935
934
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
936
935
|
if (opts.ifNotExists) {
|
|
937
936
|
}
|
|
938
|
-
const res = await apiRequest({ method: "POST", path: "daily_notes", token, baseUrl, body });
|
|
937
|
+
const res = await apiRequest({ method: "POST", path: "daily_notes", token, baseUrl: getBaseUrl(), body });
|
|
939
938
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
940
939
|
const data = res.data?.data ?? res.data;
|
|
941
940
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -954,7 +953,7 @@ function register(program, helpers) {
|
|
|
954
953
|
const bodyFromFlags2 = {};
|
|
955
954
|
if (opts.content != null) bodyFromFlags2.content = opts.content;
|
|
956
955
|
const body2 = mergeBody(bodyFromFlags2, opts.body);
|
|
957
|
-
const res2 = await apiRequest({ method: "PATCH", path: "daily_notes/" + encodeURIComponent(date2), token, baseUrl, body: body2 });
|
|
956
|
+
const res2 = await apiRequest({ method: "PATCH", path: "daily_notes/" + encodeURIComponent(date2), token, baseUrl: getBaseUrl(), body: body2 });
|
|
958
957
|
return { ok: res2.ok, status: res2.status || 0, data: res2.data, error: res2.error };
|
|
959
958
|
},
|
|
960
959
|
toResult: (date2, ok, status, data3, err) => ok ? { _id: date2, status: "updated" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -965,7 +964,7 @@ function register(program, helpers) {
|
|
|
965
964
|
const bodyFromFlags = {};
|
|
966
965
|
if (opts.content != null) bodyFromFlags.content = opts.content;
|
|
967
966
|
const body = mergeBody(bodyFromFlags, opts.body);
|
|
968
|
-
const res = await apiRequest({ method: "PATCH", path: "daily_notes/" + encodeURIComponent(date), token, baseUrl, body });
|
|
967
|
+
const res = await apiRequest({ method: "PATCH", path: "daily_notes/" + encodeURIComponent(date), token, baseUrl: getBaseUrl(), body });
|
|
969
968
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
970
969
|
const data = res.data?.data ?? res.data;
|
|
971
970
|
printOutput(getOutputFormat(), data ?? {}, false);
|
|
@@ -981,7 +980,7 @@ function register(program, helpers) {
|
|
|
981
980
|
const { data, summary } = await runBulk({
|
|
982
981
|
items: dates,
|
|
983
982
|
runOne: async (date2) => {
|
|
984
|
-
const res2 = await apiRequest({ method: "DELETE", path: "daily_notes/" + encodeURIComponent(date2), token, baseUrl });
|
|
983
|
+
const res2 = await apiRequest({ method: "DELETE", path: "daily_notes/" + encodeURIComponent(date2), token, baseUrl: getBaseUrl() });
|
|
985
984
|
return { ok: res2.ok, status: res2.status || 0, error: res2.error };
|
|
986
985
|
},
|
|
987
986
|
toResult: (date2, ok, status, _d, err) => ok ? { _id: date2, status: "deleted" } : { error: true, statusCode: status, message: err ?? "Failed" }
|
|
@@ -989,7 +988,7 @@ function register(program, helpers) {
|
|
|
989
988
|
printOutput(getOutputFormat(), { data, summary }, false);
|
|
990
989
|
return;
|
|
991
990
|
}
|
|
992
|
-
const res = await apiRequest({ method: "DELETE", path: "daily_notes/" + encodeURIComponent(date), token, baseUrl });
|
|
991
|
+
const res = await apiRequest({ method: "DELETE", path: "daily_notes/" + encodeURIComponent(date), token, baseUrl: getBaseUrl() });
|
|
993
992
|
if (!res.ok) exitWithError(res.status || 500, res.error ?? "Request failed");
|
|
994
993
|
if (getOutputFormat() === "json") console.log(JSON.stringify({ data: null, deleted: true }));
|
|
995
994
|
});
|
|
@@ -997,4 +996,4 @@ function register(program, helpers) {
|
|
|
997
996
|
export {
|
|
998
997
|
register
|
|
999
998
|
};
|
|
1000
|
-
//# sourceMappingURL=generated-
|
|
999
|
+
//# sourceMappingURL=generated-5NCK6WE3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/merge-body.ts","../src/lib/bulk.ts","../src/commands/generated/index.ts"],"sourcesContent":["/**\n * Merge optional JSON body (from --body) with object built from flags.\n * Flags override keys in body when both are provided.\n */\nexport function mergeBody(\n bodyFromFlags: Record<string, unknown>,\n bodyOption: string | undefined,\n): Record<string, unknown> {\n let base: Record<string, unknown> = {};\n if (bodyOption?.trim()) {\n try {\n base = JSON.parse(bodyOption) as Record<string, unknown>;\n } catch {\n // ignore invalid JSON\n }\n }\n return { ...base, ...bodyFromFlags };\n}\n","const MAX_IDS = 25;\nconst CONCURRENCY = 5;\nconst MAX_RETRIES = 3;\n\nexport function parseIds(idsFlag: string | undefined): string[] {\n if (!idsFlag?.trim()) return [];\n return idsFlag.split(\",\").map((s) => s.trim()).filter(Boolean);\n}\n\nexport function parseDates(datesFlag: string | undefined): string[] {\n return parseIds(datesFlag);\n}\n\nexport function validateBulkIds(ids: string[], resourceLabel: string): void {\n if (ids.length > MAX_IDS) {\n throw new Error(\n `${resourceLabel}: max ${MAX_IDS} IDs per invocation (got ${ids.length}). Use multiple invocations for more.`,\n );\n }\n}\n\nexport interface BulkTaskResult {\n _id?: string;\n status?: \"updated\" | \"deleted\";\n error?: boolean;\n statusCode?: number;\n message?: string;\n}\n\nexport interface BulkRunOptions<T> {\n items: string[];\n concurrency?: number;\n runOne: (id: string) => Promise<{ ok: boolean; status: number; data?: T; error?: string }>;\n toResult: (id: string, ok: boolean, status: number, data?: T, error?: string) => BulkTaskResult;\n}\n\n/**\n * Run up to CONCURRENCY operations in parallel, with 429 retry (Retry-After or exponential backoff).\n */\nexport async function runBulk<T>(options: BulkRunOptions<T>): Promise<{\n data: BulkTaskResult[];\n summary: { total: number; succeeded: number; failed: number };\n}> {\n const { items, runOne, toResult } = options;\n const concurrency = Math.min(options.concurrency ?? CONCURRENCY, items.length);\n const results: BulkTaskResult[] = [];\n let succeeded = 0;\n let failed = 0;\n\n async function runWithRetry(id: string): Promise<BulkTaskResult> {\n let lastRes: { ok: boolean; status: number; data?: T; error?: string } | null = null;\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n const res = await runOne(id);\n lastRes = res;\n if (res.status !== 429) break;\n const retryAfter = 2 ** attempt;\n await new Promise((r) => setTimeout(r, retryAfter * 1000));\n }\n const r = lastRes!;\n const result = toResult(id, r.ok, r.status, r.data, r.error);\n if (r.ok) succeeded++;\n else failed++;\n return result;\n }\n\n const queue = [...items];\n const workers = Array.from({ length: concurrency }, async () => {\n while (queue.length > 0) {\n const id = queue.shift()!;\n const result = await runWithRetry(id);\n results.push(result);\n }\n });\n await Promise.all(workers);\n\n return {\n data: results,\n summary: { total: items.length, succeeded, failed },\n };\n}\n","/** Generated by scripts/generate-from-openapi.ts - do not edit by hand */\nimport type { Command } from \"commander\";\nimport { apiRequest } from \"../../lib/client.js\";\nimport { printOutput } from \"../../lib/output.js\";\nimport { mergeBody } from \"../../lib/merge-body.js\";\nimport { parseIds, parseDates, validateBulkIds, runBulk } from \"../../lib/bulk.js\";\n\nexport interface CommandHelpers {\n getOutputFormat: () => \"json\" | \"table\" | \"csv\";\n requireToken: () => string | null;\n exitWithError: (status: number, message: string) => never;\n getBaseUrl: () => string;\n syncRootOptsFromCommand: (cmd: Command) => void;\n}\n\nexport function register(program: Command, helpers: CommandHelpers): void {\n const { getOutputFormat, requireToken, exitWithError, getBaseUrl, syncRootOptsFromCommand } = helpers;\n\n // --- organisations ---\n const organisationsCmd = program.command(\"organisations\").description(\"organisations resource\");\n organisationsCmd.command(\"list\").description(\"List organisations\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n const res = await apiRequest({ method: \"GET\", path: \"organisations\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n organisationsCmd.command(\"get <id>\").description(\"Get one organisations by id\")\n .option(\"--include-members <value>\", \"Include/filter by includeMembers\")\n .option(\"--include-plan <value>\", \"Include/filter by includePlan\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeMembers != null) query.includeMembers = opts.includeMembers;\n if (opts.includePlan != null) query.includePlan = opts.includePlan;\n const res = await apiRequest({ method: \"GET\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n organisationsCmd.command(\"create\").description(\"Create organisations\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--id <value>\", \"id\")\n .option(\"--name <value>\", \"name\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.id != null) bodyFromFlags.id = opts.id;\n if (opts.name != null) bodyFromFlags.name = opts.name;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"organisations\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n organisationsCmd.command(\"update <id>\").description(\"Update organisations\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"organisations\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n organisationsCmd.command(\"delete <id>\").description(\"Delete organisations\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"organisations\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- containers ---\n const containersCmd = program.command(\"containers\").description(\"containers resource\");\n containersCmd.command(\"list\").description(\"List containers\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--name <value>\", \"Filter by name\")\n .option(\"--member-id <value>\", \"Filter by memberId\")\n .option(\"--team-id <value>\", \"Filter by teamId\")\n .option(\"--has-members <value>\", \"Filter by hasMembers\")\n .option(\"--has-teams <value>\", \"Filter by hasTeams\")\n .option(\"--has-external-link <value>\", \"Filter by hasExternalLink\")\n .option(\"--external-link-provider <value>\", \"Filter by externalLinkProvider\")\n .option(\"--created-at-eq <value>\", \"Filter by createdAtEq\")\n .option(\"--created-at-gte <value>\", \"Filter by createdAtGte\")\n .option(\"--created-at-lte <value>\", \"Filter by createdAtLte\")\n .option(\"--updated-at-eq <value>\", \"Filter by updatedAtEq\")\n .option(\"--updated-at-gte <value>\", \"Filter by updatedAtGte\")\n .option(\"--updated-at-lte <value>\", \"Filter by updatedAtLte\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.name != null) query.name = opts.name;\n if (opts.memberId != null) query.memberId = opts.memberId;\n if (opts.teamId != null) query.teamId = opts.teamId;\n if (opts.hasMembers != null) query.hasMembers = opts.hasMembers;\n if (opts.hasTeams != null) query.hasTeams = opts.hasTeams;\n if (opts.hasExternalLink != null) query.hasExternalLink = opts.hasExternalLink;\n if (opts.externalLinkProvider != null) query.externalLinkProvider = opts.externalLinkProvider;\n if (opts.createdAtEq != null) query.createdAtEq = opts.createdAtEq;\n if (opts.createdAtGte != null) query.createdAtGte = opts.createdAtGte;\n if (opts.createdAtLte != null) query.createdAtLte = opts.createdAtLte;\n if (opts.updatedAtEq != null) query.updatedAtEq = opts.updatedAtEq;\n if (opts.updatedAtGte != null) query.updatedAtGte = opts.updatedAtGte;\n if (opts.updatedAtLte != null) query.updatedAtLte = opts.updatedAtLte;\n const res = await apiRequest({ method: \"GET\", path: \"containers\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n containersCmd.command(\"get <id>\").description(\"Get one containers by id\")\n .option(\"--include-links <value>\", \"Include/filter by includeLinks\")\n .option(\"--linked-provider <value>\", \"Include/filter by linkedProvider\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeLinks != null) query.includeLinks = opts.includeLinks;\n if (opts.linkedProvider != null) query.linkedProvider = opts.linkedProvider;\n const res = await apiRequest({ method: \"GET\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n containersCmd.command(\"create\").description(\"Create containers\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"containers\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n containersCmd.command(\"update <id>\").description(\"Update containers\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"containers\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n containersCmd.command(\"delete <id>\").description(\"Delete containers\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"containers\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- projects ---\n const projectsCmd = program.command(\"projects\").description(\"projects resource\");\n projectsCmd.command(\"list\").description(\"List projects\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--status <value>\", \"Filter by status\")\n .option(\"--container-id <value>\", \"Filter by containerId\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .option(\"--label-id <value>\", \"Filter by labelId\")\n .option(\"--has-external-link <value>\", \"Filter by hasExternalLink\")\n .option(\"--external-link-provider <value>\", \"Filter by externalLinkProvider\")\n .option(\"--created-at-eq <value>\", \"Filter by createdAtEq\")\n .option(\"--created-at-gte <value>\", \"Filter by createdAtGte\")\n .option(\"--created-at-lte <value>\", \"Filter by createdAtLte\")\n .option(\"--updated-at-eq <value>\", \"Filter by updatedAtEq\")\n .option(\"--updated-at-gte <value>\", \"Filter by updatedAtGte\")\n .option(\"--updated-at-lte <value>\", \"Filter by updatedAtLte\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.status != null) query.status = opts.status;\n if (opts.containerId != null) query.containerId = opts.containerId;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.categoryId != null) query.categoryId = opts.categoryId;\n if (opts.labelId != null) query.labelId = opts.labelId;\n if (opts.hasExternalLink != null) query.hasExternalLink = opts.hasExternalLink;\n if (opts.externalLinkProvider != null) query.externalLinkProvider = opts.externalLinkProvider;\n if (opts.createdAtEq != null) query.createdAtEq = opts.createdAtEq;\n if (opts.createdAtGte != null) query.createdAtGte = opts.createdAtGte;\n if (opts.createdAtLte != null) query.createdAtLte = opts.createdAtLte;\n if (opts.updatedAtEq != null) query.updatedAtEq = opts.updatedAtEq;\n if (opts.updatedAtGte != null) query.updatedAtGte = opts.updatedAtGte;\n if (opts.updatedAtLte != null) query.updatedAtLte = opts.updatedAtLte;\n const res = await apiRequest({ method: \"GET\", path: \"projects\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n projectsCmd.command(\"get <id>\").description(\"Get one projects by id\")\n .option(\"--include-category <value>\", \"Include/filter by includeCategory\")\n .option(\"--include-labels <value>\", \"Include/filter by includeLabels\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeCategory != null) query.includeCategory = opts.includeCategory;\n if (opts.includeLabels != null) query.includeLabels = opts.includeLabels;\n const res = await apiRequest({ method: \"GET\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"create\").description(\"Create projects\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--description <value>\", \"description\")\n .option(\"--status <value>\", \"status\")\n .option(\"--container-id <value>\", \"containerId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.status != null) bodyFromFlags.status = opts.status;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"projects\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"update <id>\").description(\"Update projects\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--description <value>\", \"description\")\n .option(\"--status <value>\", \"status\")\n .option(\"--container-id <value>\", \"containerId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"projects\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.status != null) bodyFromFlags.status = opts.status;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.status != null) bodyFromFlags.status = opts.status;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"delete <id>\").description(\"Delete projects\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"projects\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- categories ---\n const categoriesCmd = program.command(\"categories\").description(\"categories resource\");\n categoriesCmd.command(\"list\").description(\"List categories\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--entity-type <value>\", \"Filter by entityType\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.entityType != null) query.entityType = opts.entityType;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n const res = await apiRequest({ method: \"GET\", path: \"categories\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n categoriesCmd.command(\"get <id>\").description(\"Get one categories by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"create\").description(\"Create categories\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--color <value>\", \"color\")\n .option(\"--entity-type <value>\", \"entityType\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"categories\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"update <id>\").description(\"Update categories\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--color <value>\", \"color\")\n .option(\"--entity-type <value>\", \"entityType\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"categories\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"delete <id>\").description(\"Delete categories\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"categories\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- tasks ---\n const tasksCmd = program.command(\"tasks\").description(\"tasks resource\");\n tasksCmd.command(\"list\").description(\"List tasks\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--bucket <value>\", \"Filter by bucket\")\n .option(\"--inbox-triage <value>\", \"Filter by inboxTriage\")\n .option(\"--project-id <value>\", \"Filter by projectId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .option(\"--container-id <value>\", \"Filter by containerId\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--assignee-id <value>\", \"Filter by assigneeId\")\n .option(\"--routine-block-id <value>\", \"Filter by routineBlockId\")\n .option(\"--do-date-eq <value>\", \"Filter by doDateEq\")\n .option(\"--do-date-gte <value>\", \"Filter by doDateGte\")\n .option(\"--do-date-lte <value>\", \"Filter by doDateLte\")\n .option(\"--due-date-eq <value>\", \"Filter by dueDateEq\")\n .option(\"--due-date-gte <value>\", \"Filter by dueDateGte\")\n .option(\"--due-date-lte <value>\", \"Filter by dueDateLte\")\n .option(\"--do-end-date-eq <value>\", \"Filter by doEndDateEq\")\n .option(\"--do-end-date-gte <value>\", \"Filter by doEndDateGte\")\n .option(\"--do-end-date-lte <value>\", \"Filter by doEndDateLte\")\n .option(\"--scheduled-at-eq <value>\", \"Filter by scheduledAtEq\")\n .option(\"--scheduled-at-gte <value>\", \"Filter by scheduledAtGte\")\n .option(\"--scheduled-at-lte <value>\", \"Filter by scheduledAtLte\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.bucket != null) query.bucket = opts.bucket;\n if (opts.inboxTriage != null) query.inboxTriage = opts.inboxTriage;\n if (opts.projectId != null) query.projectId = opts.projectId;\n if (opts.categoryId != null) query.categoryId = opts.categoryId;\n if (opts.containerId != null) query.containerId = opts.containerId;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.assigneeId != null) query.assigneeId = opts.assigneeId;\n if (opts.routineBlockId != null) query.routineBlockId = opts.routineBlockId;\n if (opts.doDateEq != null) query.doDateEq = opts.doDateEq;\n if (opts.doDateGte != null) query.doDateGte = opts.doDateGte;\n if (opts.doDateLte != null) query.doDateLte = opts.doDateLte;\n if (opts.dueDateEq != null) query.dueDateEq = opts.dueDateEq;\n if (opts.dueDateGte != null) query.dueDateGte = opts.dueDateGte;\n if (opts.dueDateLte != null) query.dueDateLte = opts.dueDateLte;\n if (opts.doEndDateEq != null) query.doEndDateEq = opts.doEndDateEq;\n if (opts.doEndDateGte != null) query.doEndDateGte = opts.doEndDateGte;\n if (opts.doEndDateLte != null) query.doEndDateLte = opts.doEndDateLte;\n if (opts.scheduledAtEq != null) query.scheduledAtEq = opts.scheduledAtEq;\n if (opts.scheduledAtGte != null) query.scheduledAtGte = opts.scheduledAtGte;\n if (opts.scheduledAtLte != null) query.scheduledAtLte = opts.scheduledAtLte;\n const res = await apiRequest({ method: \"GET\", path: \"tasks\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n tasksCmd.command(\"get <id>\").description(\"Get one tasks by id\")\n .option(\"--include-links <value>\", \"Include/filter by includeLinks\")\n .option(\"--linked-provider <value>\", \"Include/filter by linkedProvider\")\n .option(\"--include-category <value>\", \"Include/filter by includeCategory\")\n .option(\"--include-labels <value>\", \"Include/filter by includeLabels\")\n .option(\"--include-related-tasks <value>\", \"Include/filter by includeRelatedTasks\")\n .option(\"--include-notes <value>\", \"Include/filter by includeNotes\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeLinks != null) query.includeLinks = opts.includeLinks;\n if (opts.linkedProvider != null) query.linkedProvider = opts.linkedProvider;\n if (opts.includeCategory != null) query.includeCategory = opts.includeCategory;\n if (opts.includeLabels != null) query.includeLabels = opts.includeLabels;\n if (opts.includeRelatedTasks != null) query.includeRelatedTasks = opts.includeRelatedTasks;\n if (opts.includeNotes != null) query.includeNotes = opts.includeNotes;\n const res = await apiRequest({ method: \"GET\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n tasksCmd.command(\"create\").description(\"Create tasks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--notes <value>\", \"notes\")\n .option(\"--done-at <value>\", \"doneAt\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--bucket <value>\", \"bucket\")\n .option(\"--routine-block-id <value>\", \"routineBlockId\")\n .option(\"--assignee-id <value>\", \"assigneeId\")\n .option(\"--is-starred <value>\", \"isStarred\")\n .option(\"--do-date <value>\", \"doDate\")\n .option(\"--do-end-date <value>\", \"doEndDate\")\n .option(\"--due-date <value>\", \"dueDate\")\n .option(\"--scheduled-at <value>\", \"scheduledAt\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.notes != null) bodyFromFlags.notes = opts.notes;\n if (opts.doneAt != null) bodyFromFlags.doneAt = opts.doneAt;\n if (opts.projectId != null) bodyFromFlags.projectId = opts.projectId;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.bucket != null) bodyFromFlags.bucket = opts.bucket;\n if (opts.routineBlockId != null) bodyFromFlags.routineBlockId = opts.routineBlockId;\n if (opts.assigneeId != null) bodyFromFlags.assigneeId = opts.assigneeId;\n if (opts.isStarred != null) bodyFromFlags.isStarred = opts.isStarred;\n if (opts.doDate != null) bodyFromFlags.doDate = opts.doDate;\n if (opts.doEndDate != null) bodyFromFlags.doEndDate = opts.doEndDate;\n if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;\n if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"tasks\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n tasksCmd.command(\"update <id>\").description(\"Update tasks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--notes <value>\", \"notes\")\n .option(\"--done-at <value>\", \"doneAt\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--container-id <value>\", \"containerId\")\n .option(\"--bucket <value>\", \"bucket\")\n .option(\"--routine-block-id <value>\", \"routineBlockId\")\n .option(\"--assignee-id <value>\", \"assigneeId\")\n .option(\"--is-starred <value>\", \"isStarred\")\n .option(\"--do-date <value>\", \"doDate\")\n .option(\"--do-end-date <value>\", \"doEndDate\")\n .option(\"--due-date <value>\", \"dueDate\")\n .option(\"--scheduled-at <value>\", \"scheduledAt\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"tasks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.notes != null) bodyFromFlags.notes = opts.notes;\n if (opts.doneAt != null) bodyFromFlags.doneAt = opts.doneAt;\n if (opts.projectId != null) bodyFromFlags.projectId = opts.projectId;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n if (opts.bucket != null) bodyFromFlags.bucket = opts.bucket;\n if (opts.routineBlockId != null) bodyFromFlags.routineBlockId = opts.routineBlockId;\n if (opts.assigneeId != null) bodyFromFlags.assigneeId = opts.assigneeId;\n if (opts.isStarred != null) bodyFromFlags.isStarred = opts.isStarred;\n if (opts.doDate != null) bodyFromFlags.doDate = opts.doDate;\n if (opts.doEndDate != null) bodyFromFlags.doEndDate = opts.doEndDate;\n if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;\n if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.notes != null) bodyFromFlags.notes = opts.notes;\n if (opts.doneAt != null) bodyFromFlags.doneAt = opts.doneAt;\n if (opts.projectId != null) bodyFromFlags.projectId = opts.projectId;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n if (opts.bucket != null) bodyFromFlags.bucket = opts.bucket;\n if (opts.routineBlockId != null) bodyFromFlags.routineBlockId = opts.routineBlockId;\n if (opts.assigneeId != null) bodyFromFlags.assigneeId = opts.assigneeId;\n if (opts.isStarred != null) bodyFromFlags.isStarred = opts.isStarred;\n if (opts.doDate != null) bodyFromFlags.doDate = opts.doDate;\n if (opts.doEndDate != null) bodyFromFlags.doEndDate = opts.doEndDate;\n if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;\n if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n tasksCmd.command(\"delete <id>\").description(\"Delete tasks\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"tasks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- routine-blocks ---\n const routineblocksCmd = program.command(\"routine-blocks\").description(\"routine_blocks resource\");\n routineblocksCmd.command(\"list\").description(\"List routine-blocks\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--date <value>\", \"Filter by date\")\n .option(\"--template-id <value>\", \"Filter by templateId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .option(\"--container-id <value>\", \"Filter by containerId\")\n .option(\"--project-id <value>\", \"Filter by projectId\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--shared-with-user-id <value>\", \"Filter by sharedWithUserId\")\n .option(\"--is-template <value>\", \"Filter by isTemplate\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.date != null) query.date = opts.date;\n if (opts.templateId != null) query.templateId = opts.templateId;\n if (opts.categoryId != null) query.categoryId = opts.categoryId;\n if (opts.containerId != null) query.containerId = opts.containerId;\n if (opts.projectId != null) query.projectId = opts.projectId;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.sharedWithUserId != null) query.sharedWithUserId = opts.sharedWithUserId;\n if (opts.isTemplate != null) query.isTemplate = opts.isTemplate;\n const res = await apiRequest({ method: \"GET\", path: \"routine_blocks\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n routineblocksCmd.command(\"get <id>\").description(\"Get one routine-blocks by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n routineblocksCmd.command(\"create\").description(\"Create routine-blocks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--start-time <value>\", \"startTime\")\n .option(\"--end-time <value>\", \"endTime\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--template-id <value>\", \"templateId\")\n .option(\"--day-of-week <value>\", \"dayOfWeek\")\n .option(\"--date <value>\", \"date\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--content <value>\", \"content\")\n .option(\"--block-type <value>\", \"blockType\")\n .option(\"--color <value>\", \"color\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.startTime != null) bodyFromFlags.startTime = opts.startTime;\n if (opts.endTime != null) bodyFromFlags.endTime = opts.endTime;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n if (opts.templateId != null) bodyFromFlags.templateId = opts.templateId;\n if (opts.dayOfWeek != null) bodyFromFlags.dayOfWeek = opts.dayOfWeek;\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"routine_blocks\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n routineblocksCmd.command(\"update <id>\").description(\"Update routine-blocks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--start-time <value>\", \"startTime\")\n .option(\"--end-time <value>\", \"endTime\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--template-id <value>\", \"templateId\")\n .option(\"--day-of-week <value>\", \"dayOfWeek\")\n .option(\"--date <value>\", \"date\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--content <value>\", \"content\")\n .option(\"--block-type <value>\", \"blockType\")\n .option(\"--color <value>\", \"color\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"routine-blocks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.startTime != null) bodyFromFlags.startTime = opts.startTime;\n if (opts.endTime != null) bodyFromFlags.endTime = opts.endTime;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n if (opts.templateId != null) bodyFromFlags.templateId = opts.templateId;\n if (opts.dayOfWeek != null) bodyFromFlags.dayOfWeek = opts.dayOfWeek;\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.startTime != null) bodyFromFlags.startTime = opts.startTime;\n if (opts.endTime != null) bodyFromFlags.endTime = opts.endTime;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n if (opts.templateId != null) bodyFromFlags.templateId = opts.templateId;\n if (opts.dayOfWeek != null) bodyFromFlags.dayOfWeek = opts.dayOfWeek;\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n routineblocksCmd.command(\"delete <id>\").description(\"Delete routine-blocks\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"routine-blocks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- reviews ---\n const reviewsCmd = program.command(\"reviews\").description(\"reviews resource\");\n reviewsCmd.command(\"list\").description(\"List reviews\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--date <value>\", \"Filter by date\")\n .option(\"--type <value>\", \"Filter by type\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.date != null) query.date = opts.date;\n if (opts.type != null) query.type = opts.type;\n const res = await apiRequest({ method: \"GET\", path: \"reviews\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n reviewsCmd.command(\"get <id>\").description(\"Get one reviews by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n reviewsCmd.command(\"create\").description(\"Create reviews\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--date <value>\", \"date\")\n .option(\"--type <value>\", \"type\")\n .option(\"--description <value>\", \"description\")\n .option(\"--wake-time <value>\", \"wakeTime\")\n .option(\"--sleep-time <value>\", \"sleepTime\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.type != null) bodyFromFlags.type = opts.type;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.wakeTime != null) bodyFromFlags.wakeTime = opts.wakeTime;\n if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"reviews\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n reviewsCmd.command(\"update <id>\").description(\"Update reviews\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--description <value>\", \"description\")\n .option(\"--wake-time <value>\", \"wakeTime\")\n .option(\"--sleep-time <value>\", \"sleepTime\")\n .option(\"--steps <value>\", \"steps\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"reviews\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.wakeTime != null) bodyFromFlags.wakeTime = opts.wakeTime;\n if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;\n if (opts.steps != null) bodyFromFlags.steps = opts.steps;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.wakeTime != null) bodyFromFlags.wakeTime = opts.wakeTime;\n if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;\n if (opts.steps != null) bodyFromFlags.steps = opts.steps;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n reviewsCmd.command(\"delete <id>\").description(\"Delete reviews\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"reviews\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- daily-notes ---\n const dailynotesCmd = program.command(\"daily-notes\").description(\"daily_notes resource\");\n dailynotesCmd.command(\"list\").description(\"List daily-notes\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--dates <value>\", \"Filter by dates\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.dates != null) query.dates = opts.dates;\n const res = await apiRequest({ method: \"GET\", path: \"daily_notes\", token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n dailynotesCmd.command(\"get <date>\").description(\"Get one daily-notes by date\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (date, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl: getBaseUrl(), query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n dailynotesCmd.command(\"create\").description(\"Create daily-notes\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--date <value>\", \"date\")\n .option(\"--content <value>\", \"content\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"daily_notes\", token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n dailynotesCmd.command(\"update <date>\").description(\"Update daily-notes\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--dates <dates>\", \"Comma-separated dates for bulk update (max 25)\")\n .option(\"--content <value>\", \"content\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (date, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const dates = parseDates(opts.dates);\n if (dates.length > 0) {\n validateBulkIds(dates, \"daily-notes\");\n const { data, summary } = await runBulk({\n items: dates,\n runOne: async (date) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.content != null) bodyFromFlags.content = opts.content;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl: getBaseUrl(), body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (date, ok, status, data, err) => ok ? { _id: date, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.content != null) bodyFromFlags.content = opts.content;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl: getBaseUrl(), body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n dailynotesCmd.command(\"delete <date>\").description(\"Delete daily-notes\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .option(\"--dates <dates>\", \"Comma-separated dates for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (date, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const dates = parseDates(opts.dates);\n if (dates.length > 0) {\n validateBulkIds(dates, \"daily-notes\");\n const { data, summary } = await runBulk({\n items: dates,\n runOne: async (date) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl: getBaseUrl() });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (date, ok, status, _d, err) => ok ? { _id: date, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl: getBaseUrl() });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n}"],"mappings":"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","names":["r","data","id","bodyFromFlags","body","res","date"]}
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/merge-body.ts","../src/lib/bulk.ts","../src/commands/generated/index.ts"],"sourcesContent":["/**\n * Merge optional JSON body (from --body) with object built from flags.\n * Flags override keys in body when both are provided.\n */\nexport function mergeBody(\n bodyFromFlags: Record<string, unknown>,\n bodyOption: string | undefined,\n): Record<string, unknown> {\n let base: Record<string, unknown> = {};\n if (bodyOption?.trim()) {\n try {\n base = JSON.parse(bodyOption) as Record<string, unknown>;\n } catch {\n // ignore invalid JSON\n }\n }\n return { ...base, ...bodyFromFlags };\n}\n","const MAX_IDS = 25;\nconst CONCURRENCY = 5;\nconst MAX_RETRIES = 3;\n\nexport function parseIds(idsFlag: string | undefined): string[] {\n if (!idsFlag?.trim()) return [];\n return idsFlag.split(\",\").map((s) => s.trim()).filter(Boolean);\n}\n\nexport function parseDates(datesFlag: string | undefined): string[] {\n return parseIds(datesFlag);\n}\n\nexport function validateBulkIds(ids: string[], resourceLabel: string): void {\n if (ids.length > MAX_IDS) {\n throw new Error(\n `${resourceLabel}: max ${MAX_IDS} IDs per invocation (got ${ids.length}). Use multiple invocations for more.`,\n );\n }\n}\n\nexport interface BulkTaskResult {\n _id?: string;\n status?: \"updated\" | \"deleted\";\n error?: boolean;\n statusCode?: number;\n message?: string;\n}\n\nexport interface BulkRunOptions<T> {\n items: string[];\n concurrency?: number;\n runOne: (id: string) => Promise<{ ok: boolean; status: number; data?: T; error?: string }>;\n toResult: (id: string, ok: boolean, status: number, data?: T, error?: string) => BulkTaskResult;\n}\n\n/**\n * Run up to CONCURRENCY operations in parallel, with 429 retry (Retry-After or exponential backoff).\n */\nexport async function runBulk<T>(options: BulkRunOptions<T>): Promise<{\n data: BulkTaskResult[];\n summary: { total: number; succeeded: number; failed: number };\n}> {\n const { items, runOne, toResult } = options;\n const concurrency = Math.min(options.concurrency ?? CONCURRENCY, items.length);\n const results: BulkTaskResult[] = [];\n let succeeded = 0;\n let failed = 0;\n\n async function runWithRetry(id: string): Promise<BulkTaskResult> {\n let lastRes: { ok: boolean; status: number; data?: T; error?: string } | null = null;\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n const res = await runOne(id);\n lastRes = res;\n if (res.status !== 429) break;\n const retryAfter = 2 ** attempt;\n await new Promise((r) => setTimeout(r, retryAfter * 1000));\n }\n const r = lastRes!;\n const result = toResult(id, r.ok, r.status, r.data, r.error);\n if (r.ok) succeeded++;\n else failed++;\n return result;\n }\n\n const queue = [...items];\n const workers = Array.from({ length: concurrency }, async () => {\n while (queue.length > 0) {\n const id = queue.shift()!;\n const result = await runWithRetry(id);\n results.push(result);\n }\n });\n await Promise.all(workers);\n\n return {\n data: results,\n summary: { total: items.length, succeeded, failed },\n };\n}\n","/** Generated by scripts/generate-from-openapi.ts - do not edit by hand */\nimport type { Command } from \"commander\";\nimport { apiRequest } from \"../../lib/client.js\";\nimport { printOutput } from \"../../lib/output.js\";\nimport { mergeBody } from \"../../lib/merge-body.js\";\nimport { parseIds, parseDates, validateBulkIds, runBulk } from \"../../lib/bulk.js\";\n\nexport interface CommandHelpers {\n getOutputFormat: () => \"json\" | \"table\" | \"csv\";\n requireToken: () => string | null;\n exitWithError: (status: number, message: string) => never;\n getBaseUrl: () => string;\n syncRootOptsFromCommand: (cmd: Command) => void;\n}\n\nexport function register(program: Command, helpers: CommandHelpers): void {\n const { getOutputFormat, requireToken, exitWithError, getBaseUrl, syncRootOptsFromCommand } = helpers;\n const baseUrl = getBaseUrl();\n\n // --- organisations ---\n const organisationsCmd = program.command(\"organisations\").description(\"organisations resource\");\n organisationsCmd.command(\"list\").description(\"List organisations\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n const res = await apiRequest({ method: \"GET\", path: \"organisations\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n organisationsCmd.command(\"get <id>\").description(\"Get one organisations by id\")\n .option(\"--include-members <value>\", \"Include/filter by includeMembers\")\n .option(\"--include-plan <value>\", \"Include/filter by includePlan\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeMembers != null) query.includeMembers = opts.includeMembers;\n if (opts.includePlan != null) query.includePlan = opts.includePlan;\n const res = await apiRequest({ method: \"GET\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n organisationsCmd.command(\"create\").description(\"Create organisations\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--id <value>\", \"id\")\n .option(\"--name <value>\", \"name\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.id != null) bodyFromFlags.id = opts.id;\n if (opts.name != null) bodyFromFlags.name = opts.name;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"organisations\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n organisationsCmd.command(\"update <id>\").description(\"Update organisations\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"organisations\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n organisationsCmd.command(\"delete <id>\").description(\"Delete organisations\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"organisations\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"organisations/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- containers ---\n const containersCmd = program.command(\"containers\").description(\"containers resource\");\n containersCmd.command(\"list\").description(\"List containers\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--name <value>\", \"Filter by name\")\n .option(\"--member-id <value>\", \"Filter by memberId\")\n .option(\"--team-id <value>\", \"Filter by teamId\")\n .option(\"--has-members <value>\", \"Filter by hasMembers\")\n .option(\"--has-teams <value>\", \"Filter by hasTeams\")\n .option(\"--has-external-link <value>\", \"Filter by hasExternalLink\")\n .option(\"--external-link-provider <value>\", \"Filter by externalLinkProvider\")\n .option(\"--created-at-eq <value>\", \"Filter by createdAtEq\")\n .option(\"--created-at-gte <value>\", \"Filter by createdAtGte\")\n .option(\"--created-at-lte <value>\", \"Filter by createdAtLte\")\n .option(\"--updated-at-eq <value>\", \"Filter by updatedAtEq\")\n .option(\"--updated-at-gte <value>\", \"Filter by updatedAtGte\")\n .option(\"--updated-at-lte <value>\", \"Filter by updatedAtLte\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.name != null) query.name = opts.name;\n if (opts.memberId != null) query.memberId = opts.memberId;\n if (opts.teamId != null) query.teamId = opts.teamId;\n if (opts.hasMembers != null) query.hasMembers = opts.hasMembers;\n if (opts.hasTeams != null) query.hasTeams = opts.hasTeams;\n if (opts.hasExternalLink != null) query.hasExternalLink = opts.hasExternalLink;\n if (opts.externalLinkProvider != null) query.externalLinkProvider = opts.externalLinkProvider;\n if (opts.createdAtEq != null) query.createdAtEq = opts.createdAtEq;\n if (opts.createdAtGte != null) query.createdAtGte = opts.createdAtGte;\n if (opts.createdAtLte != null) query.createdAtLte = opts.createdAtLte;\n if (opts.updatedAtEq != null) query.updatedAtEq = opts.updatedAtEq;\n if (opts.updatedAtGte != null) query.updatedAtGte = opts.updatedAtGte;\n if (opts.updatedAtLte != null) query.updatedAtLte = opts.updatedAtLte;\n const res = await apiRequest({ method: \"GET\", path: \"containers\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n containersCmd.command(\"get <id>\").description(\"Get one containers by id\")\n .option(\"--include-links <value>\", \"Include/filter by includeLinks\")\n .option(\"--linked-provider <value>\", \"Include/filter by linkedProvider\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeLinks != null) query.includeLinks = opts.includeLinks;\n if (opts.linkedProvider != null) query.linkedProvider = opts.linkedProvider;\n const res = await apiRequest({ method: \"GET\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n containersCmd.command(\"create\").description(\"Create containers\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"containers\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n containersCmd.command(\"update <id>\").description(\"Update containers\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--description <value>\", \"description\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"containers\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n containersCmd.command(\"delete <id>\").description(\"Delete containers\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"containers\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"containers/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- projects ---\n const projectsCmd = program.command(\"projects\").description(\"projects resource\");\n projectsCmd.command(\"list\").description(\"List projects\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--status <value>\", \"Filter by status\")\n .option(\"--container-id <value>\", \"Filter by containerId\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .option(\"--label-id <value>\", \"Filter by labelId\")\n .option(\"--has-external-link <value>\", \"Filter by hasExternalLink\")\n .option(\"--external-link-provider <value>\", \"Filter by externalLinkProvider\")\n .option(\"--created-at-eq <value>\", \"Filter by createdAtEq\")\n .option(\"--created-at-gte <value>\", \"Filter by createdAtGte\")\n .option(\"--created-at-lte <value>\", \"Filter by createdAtLte\")\n .option(\"--updated-at-eq <value>\", \"Filter by updatedAtEq\")\n .option(\"--updated-at-gte <value>\", \"Filter by updatedAtGte\")\n .option(\"--updated-at-lte <value>\", \"Filter by updatedAtLte\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.status != null) query.status = opts.status;\n if (opts.containerId != null) query.containerId = opts.containerId;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.categoryId != null) query.categoryId = opts.categoryId;\n if (opts.labelId != null) query.labelId = opts.labelId;\n if (opts.hasExternalLink != null) query.hasExternalLink = opts.hasExternalLink;\n if (opts.externalLinkProvider != null) query.externalLinkProvider = opts.externalLinkProvider;\n if (opts.createdAtEq != null) query.createdAtEq = opts.createdAtEq;\n if (opts.createdAtGte != null) query.createdAtGte = opts.createdAtGte;\n if (opts.createdAtLte != null) query.createdAtLte = opts.createdAtLte;\n if (opts.updatedAtEq != null) query.updatedAtEq = opts.updatedAtEq;\n if (opts.updatedAtGte != null) query.updatedAtGte = opts.updatedAtGte;\n if (opts.updatedAtLte != null) query.updatedAtLte = opts.updatedAtLte;\n const res = await apiRequest({ method: \"GET\", path: \"projects\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n projectsCmd.command(\"get <id>\").description(\"Get one projects by id\")\n .option(\"--include-category <value>\", \"Include/filter by includeCategory\")\n .option(\"--include-labels <value>\", \"Include/filter by includeLabels\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeCategory != null) query.includeCategory = opts.includeCategory;\n if (opts.includeLabels != null) query.includeLabels = opts.includeLabels;\n const res = await apiRequest({ method: \"GET\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"create\").description(\"Create projects\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--description <value>\", \"description\")\n .option(\"--status <value>\", \"status\")\n .option(\"--container-id <value>\", \"containerId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.status != null) bodyFromFlags.status = opts.status;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"projects\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"update <id>\").description(\"Update projects\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--description <value>\", \"description\")\n .option(\"--status <value>\", \"status\")\n .option(\"--container-id <value>\", \"containerId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"projects\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.status != null) bodyFromFlags.status = opts.status;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.status != null) bodyFromFlags.status = opts.status;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n projectsCmd.command(\"delete <id>\").description(\"Delete projects\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"projects\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"projects/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- categories ---\n const categoriesCmd = program.command(\"categories\").description(\"categories resource\");\n categoriesCmd.command(\"list\").description(\"List categories\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--entity-type <value>\", \"Filter by entityType\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.entityType != null) query.entityType = opts.entityType;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n const res = await apiRequest({ method: \"GET\", path: \"categories\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n categoriesCmd.command(\"get <id>\").description(\"Get one categories by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"create\").description(\"Create categories\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--color <value>\", \"color\")\n .option(\"--entity-type <value>\", \"entityType\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"categories\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"update <id>\").description(\"Update categories\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--color <value>\", \"color\")\n .option(\"--entity-type <value>\", \"entityType\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"categories\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n if (opts.entityType != null) bodyFromFlags.entityType = opts.entityType;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n categoriesCmd.command(\"delete <id>\").description(\"Delete categories\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"categories\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"categories/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- tasks ---\n const tasksCmd = program.command(\"tasks\").description(\"tasks resource\");\n tasksCmd.command(\"list\").description(\"List tasks\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--bucket <value>\", \"Filter by bucket\")\n .option(\"--inbox-triage <value>\", \"Filter by inboxTriage\")\n .option(\"--project-id <value>\", \"Filter by projectId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .option(\"--container-id <value>\", \"Filter by containerId\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--assignee-id <value>\", \"Filter by assigneeId\")\n .option(\"--routine-block-id <value>\", \"Filter by routineBlockId\")\n .option(\"--do-date-eq <value>\", \"Filter by doDateEq\")\n .option(\"--do-date-gte <value>\", \"Filter by doDateGte\")\n .option(\"--do-date-lte <value>\", \"Filter by doDateLte\")\n .option(\"--due-date-eq <value>\", \"Filter by dueDateEq\")\n .option(\"--due-date-gte <value>\", \"Filter by dueDateGte\")\n .option(\"--due-date-lte <value>\", \"Filter by dueDateLte\")\n .option(\"--do-end-date-eq <value>\", \"Filter by doEndDateEq\")\n .option(\"--do-end-date-gte <value>\", \"Filter by doEndDateGte\")\n .option(\"--do-end-date-lte <value>\", \"Filter by doEndDateLte\")\n .option(\"--scheduled-at-eq <value>\", \"Filter by scheduledAtEq\")\n .option(\"--scheduled-at-gte <value>\", \"Filter by scheduledAtGte\")\n .option(\"--scheduled-at-lte <value>\", \"Filter by scheduledAtLte\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.bucket != null) query.bucket = opts.bucket;\n if (opts.inboxTriage != null) query.inboxTriage = opts.inboxTriage;\n if (opts.projectId != null) query.projectId = opts.projectId;\n if (opts.categoryId != null) query.categoryId = opts.categoryId;\n if (opts.containerId != null) query.containerId = opts.containerId;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.assigneeId != null) query.assigneeId = opts.assigneeId;\n if (opts.routineBlockId != null) query.routineBlockId = opts.routineBlockId;\n if (opts.doDateEq != null) query.doDateEq = opts.doDateEq;\n if (opts.doDateGte != null) query.doDateGte = opts.doDateGte;\n if (opts.doDateLte != null) query.doDateLte = opts.doDateLte;\n if (opts.dueDateEq != null) query.dueDateEq = opts.dueDateEq;\n if (opts.dueDateGte != null) query.dueDateGte = opts.dueDateGte;\n if (opts.dueDateLte != null) query.dueDateLte = opts.dueDateLte;\n if (opts.doEndDateEq != null) query.doEndDateEq = opts.doEndDateEq;\n if (opts.doEndDateGte != null) query.doEndDateGte = opts.doEndDateGte;\n if (opts.doEndDateLte != null) query.doEndDateLte = opts.doEndDateLte;\n if (opts.scheduledAtEq != null) query.scheduledAtEq = opts.scheduledAtEq;\n if (opts.scheduledAtGte != null) query.scheduledAtGte = opts.scheduledAtGte;\n if (opts.scheduledAtLte != null) query.scheduledAtLte = opts.scheduledAtLte;\n const res = await apiRequest({ method: \"GET\", path: \"tasks\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n tasksCmd.command(\"get <id>\").description(\"Get one tasks by id\")\n .option(\"--include-links <value>\", \"Include/filter by includeLinks\")\n .option(\"--linked-provider <value>\", \"Include/filter by linkedProvider\")\n .option(\"--include-category <value>\", \"Include/filter by includeCategory\")\n .option(\"--include-labels <value>\", \"Include/filter by includeLabels\")\n .option(\"--include-related-tasks <value>\", \"Include/filter by includeRelatedTasks\")\n .option(\"--include-notes <value>\", \"Include/filter by includeNotes\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.includeLinks != null) query.includeLinks = opts.includeLinks;\n if (opts.linkedProvider != null) query.linkedProvider = opts.linkedProvider;\n if (opts.includeCategory != null) query.includeCategory = opts.includeCategory;\n if (opts.includeLabels != null) query.includeLabels = opts.includeLabels;\n if (opts.includeRelatedTasks != null) query.includeRelatedTasks = opts.includeRelatedTasks;\n if (opts.includeNotes != null) query.includeNotes = opts.includeNotes;\n const res = await apiRequest({ method: \"GET\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n tasksCmd.command(\"create\").description(\"Create tasks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--notes <value>\", \"notes\")\n .option(\"--done-at <value>\", \"doneAt\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--bucket <value>\", \"bucket\")\n .option(\"--routine-block-id <value>\", \"routineBlockId\")\n .option(\"--assignee-id <value>\", \"assigneeId\")\n .option(\"--is-starred <value>\", \"isStarred\")\n .option(\"--do-date <value>\", \"doDate\")\n .option(\"--do-end-date <value>\", \"doEndDate\")\n .option(\"--due-date <value>\", \"dueDate\")\n .option(\"--scheduled-at <value>\", \"scheduledAt\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.notes != null) bodyFromFlags.notes = opts.notes;\n if (opts.doneAt != null) bodyFromFlags.doneAt = opts.doneAt;\n if (opts.projectId != null) bodyFromFlags.projectId = opts.projectId;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.bucket != null) bodyFromFlags.bucket = opts.bucket;\n if (opts.routineBlockId != null) bodyFromFlags.routineBlockId = opts.routineBlockId;\n if (opts.assigneeId != null) bodyFromFlags.assigneeId = opts.assigneeId;\n if (opts.isStarred != null) bodyFromFlags.isStarred = opts.isStarred;\n if (opts.doDate != null) bodyFromFlags.doDate = opts.doDate;\n if (opts.doEndDate != null) bodyFromFlags.doEndDate = opts.doEndDate;\n if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;\n if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"tasks\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n tasksCmd.command(\"update <id>\").description(\"Update tasks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--title <value>\", \"title\")\n .option(\"--notes <value>\", \"notes\")\n .option(\"--done-at <value>\", \"doneAt\")\n .option(\"--project-id <value>\", \"projectId\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--container-id <value>\", \"containerId\")\n .option(\"--bucket <value>\", \"bucket\")\n .option(\"--routine-block-id <value>\", \"routineBlockId\")\n .option(\"--assignee-id <value>\", \"assigneeId\")\n .option(\"--is-starred <value>\", \"isStarred\")\n .option(\"--do-date <value>\", \"doDate\")\n .option(\"--do-end-date <value>\", \"doEndDate\")\n .option(\"--due-date <value>\", \"dueDate\")\n .option(\"--scheduled-at <value>\", \"scheduledAt\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"tasks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.notes != null) bodyFromFlags.notes = opts.notes;\n if (opts.doneAt != null) bodyFromFlags.doneAt = opts.doneAt;\n if (opts.projectId != null) bodyFromFlags.projectId = opts.projectId;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n if (opts.bucket != null) bodyFromFlags.bucket = opts.bucket;\n if (opts.routineBlockId != null) bodyFromFlags.routineBlockId = opts.routineBlockId;\n if (opts.assigneeId != null) bodyFromFlags.assigneeId = opts.assigneeId;\n if (opts.isStarred != null) bodyFromFlags.isStarred = opts.isStarred;\n if (opts.doDate != null) bodyFromFlags.doDate = opts.doDate;\n if (opts.doEndDate != null) bodyFromFlags.doEndDate = opts.doEndDate;\n if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;\n if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.title != null) bodyFromFlags.title = opts.title;\n if (opts.notes != null) bodyFromFlags.notes = opts.notes;\n if (opts.doneAt != null) bodyFromFlags.doneAt = opts.doneAt;\n if (opts.projectId != null) bodyFromFlags.projectId = opts.projectId;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.containerId != null) bodyFromFlags.containerId = opts.containerId;\n if (opts.bucket != null) bodyFromFlags.bucket = opts.bucket;\n if (opts.routineBlockId != null) bodyFromFlags.routineBlockId = opts.routineBlockId;\n if (opts.assigneeId != null) bodyFromFlags.assigneeId = opts.assigneeId;\n if (opts.isStarred != null) bodyFromFlags.isStarred = opts.isStarred;\n if (opts.doDate != null) bodyFromFlags.doDate = opts.doDate;\n if (opts.doEndDate != null) bodyFromFlags.doEndDate = opts.doEndDate;\n if (opts.dueDate != null) bodyFromFlags.dueDate = opts.dueDate;\n if (opts.scheduledAt != null) bodyFromFlags.scheduledAt = opts.scheduledAt;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n tasksCmd.command(\"delete <id>\").description(\"Delete tasks\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"tasks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"tasks/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- routine-blocks ---\n const routineblocksCmd = program.command(\"routine-blocks\").description(\"routine_blocks resource\");\n routineblocksCmd.command(\"list\").description(\"List routine-blocks\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--date <value>\", \"Filter by date\")\n .option(\"--template-id <value>\", \"Filter by templateId\")\n .option(\"--category-id <value>\", \"Filter by categoryId\")\n .option(\"--container-id <value>\", \"Filter by containerId\")\n .option(\"--project-id <value>\", \"Filter by projectId\")\n .option(\"--organisation-id <value>\", \"Filter by organisationId\")\n .option(\"--shared-with-user-id <value>\", \"Filter by sharedWithUserId\")\n .option(\"--is-template <value>\", \"Filter by isTemplate\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.date != null) query.date = opts.date;\n if (opts.templateId != null) query.templateId = opts.templateId;\n if (opts.categoryId != null) query.categoryId = opts.categoryId;\n if (opts.containerId != null) query.containerId = opts.containerId;\n if (opts.projectId != null) query.projectId = opts.projectId;\n if (opts.organisationId != null) query.organisationId = opts.organisationId;\n if (opts.sharedWithUserId != null) query.sharedWithUserId = opts.sharedWithUserId;\n if (opts.isTemplate != null) query.isTemplate = opts.isTemplate;\n const res = await apiRequest({ method: \"GET\", path: \"routine_blocks\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n routineblocksCmd.command(\"get <id>\").description(\"Get one routine-blocks by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n routineblocksCmd.command(\"create\").description(\"Create routine-blocks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--start-time <value>\", \"startTime\")\n .option(\"--end-time <value>\", \"endTime\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--template-id <value>\", \"templateId\")\n .option(\"--day-of-week <value>\", \"dayOfWeek\")\n .option(\"--date <value>\", \"date\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--content <value>\", \"content\")\n .option(\"--block-type <value>\", \"blockType\")\n .option(\"--color <value>\", \"color\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.startTime != null) bodyFromFlags.startTime = opts.startTime;\n if (opts.endTime != null) bodyFromFlags.endTime = opts.endTime;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n if (opts.templateId != null) bodyFromFlags.templateId = opts.templateId;\n if (opts.dayOfWeek != null) bodyFromFlags.dayOfWeek = opts.dayOfWeek;\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"routine_blocks\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n routineblocksCmd.command(\"update <id>\").description(\"Update routine-blocks\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--name <value>\", \"name\")\n .option(\"--start-time <value>\", \"startTime\")\n .option(\"--end-time <value>\", \"endTime\")\n .option(\"--organisation-id <value>\", \"organisationId\")\n .option(\"--template-id <value>\", \"templateId\")\n .option(\"--day-of-week <value>\", \"dayOfWeek\")\n .option(\"--date <value>\", \"date\")\n .option(\"--category-id <value>\", \"categoryId\")\n .option(\"--content <value>\", \"content\")\n .option(\"--block-type <value>\", \"blockType\")\n .option(\"--color <value>\", \"color\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"routine-blocks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.startTime != null) bodyFromFlags.startTime = opts.startTime;\n if (opts.endTime != null) bodyFromFlags.endTime = opts.endTime;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n if (opts.templateId != null) bodyFromFlags.templateId = opts.templateId;\n if (opts.dayOfWeek != null) bodyFromFlags.dayOfWeek = opts.dayOfWeek;\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.name != null) bodyFromFlags.name = opts.name;\n if (opts.startTime != null) bodyFromFlags.startTime = opts.startTime;\n if (opts.endTime != null) bodyFromFlags.endTime = opts.endTime;\n if (opts.organisationId != null) bodyFromFlags.organisationId = opts.organisationId;\n if (opts.templateId != null) bodyFromFlags.templateId = opts.templateId;\n if (opts.dayOfWeek != null) bodyFromFlags.dayOfWeek = opts.dayOfWeek;\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.categoryId != null) bodyFromFlags.categoryId = opts.categoryId;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n if (opts.blockType != null) bodyFromFlags.blockType = opts.blockType;\n if (opts.color != null) bodyFromFlags.color = opts.color;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n routineblocksCmd.command(\"delete <id>\").description(\"Delete routine-blocks\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"routine-blocks\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"routine_blocks/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- reviews ---\n const reviewsCmd = program.command(\"reviews\").description(\"reviews resource\");\n reviewsCmd.command(\"list\").description(\"List reviews\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--date <value>\", \"Filter by date\")\n .option(\"--type <value>\", \"Filter by type\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.date != null) query.date = opts.date;\n if (opts.type != null) query.type = opts.type;\n const res = await apiRequest({ method: \"GET\", path: \"reviews\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n reviewsCmd.command(\"get <id>\").description(\"Get one reviews by id\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n reviewsCmd.command(\"create\").description(\"Create reviews\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--date <value>\", \"date\")\n .option(\"--type <value>\", \"type\")\n .option(\"--description <value>\", \"description\")\n .option(\"--wake-time <value>\", \"wakeTime\")\n .option(\"--sleep-time <value>\", \"sleepTime\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.type != null) bodyFromFlags.type = opts.type;\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.wakeTime != null) bodyFromFlags.wakeTime = opts.wakeTime;\n if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"reviews\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n reviewsCmd.command(\"update <id>\").description(\"Update reviews\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--description <value>\", \"description\")\n .option(\"--wake-time <value>\", \"wakeTime\")\n .option(\"--sleep-time <value>\", \"sleepTime\")\n .option(\"--steps <value>\", \"steps\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"reviews\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.wakeTime != null) bodyFromFlags.wakeTime = opts.wakeTime;\n if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;\n if (opts.steps != null) bodyFromFlags.steps = opts.steps;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (id, ok, status, data, err) => ok ? { _id: id, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.description != null) bodyFromFlags.description = opts.description;\n if (opts.wakeTime != null) bodyFromFlags.wakeTime = opts.wakeTime;\n if (opts.sleepTime != null) bodyFromFlags.sleepTime = opts.sleepTime;\n if (opts.steps != null) bodyFromFlags.steps = opts.steps;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n reviewsCmd.command(\"delete <id>\").description(\"Delete reviews\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (id, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const ids = parseIds(opts.ids);\n if (ids.length > 0) {\n validateBulkIds(ids, \"reviews\");\n const { data, summary } = await runBulk({\n items: ids,\n runOne: async (id) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (id, ok, status, _d, err) => ok ? { _id: id, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"reviews/\" + encodeURIComponent(id), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n // --- daily-notes ---\n const dailynotesCmd = program.command(\"daily-notes\").description(\"daily_notes resource\");\n dailynotesCmd.command(\"list\").description(\"List daily-notes\")\n .option(\"--limit <n>\", \"Max results\")\n .option(\"--offset <n>\", \"Skip n results\")\n .option(\"--dates <value>\", \"Filter by dates\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n if (opts.limit != null) query.limit = opts.limit;\n if (opts.offset != null) query.offset = opts.offset;\n if (opts.dates != null) query.dates = opts.dates;\n const res = await apiRequest({ method: \"GET\", path: \"daily_notes\", token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown[] })?.data ?? [];\n printOutput(getOutputFormat(), data, false);\n });\n dailynotesCmd.command(\"get <date>\").description(\"Get one daily-notes by date\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (date, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const query: Record<string, string | number | undefined> = {};\n const res = await apiRequest({ method: \"GET\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl, query });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n dailynotesCmd.command(\"create\").description(\"Create daily-notes\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--date <value>\", \"date\")\n .option(\"--content <value>\", \"content\")\n .option(\"--if-not-exists\", \"Return existing if match found\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.date != null) bodyFromFlags.date = opts.date;\n if (opts.content != null) bodyFromFlags.content = opts.content;\n const body = mergeBody(bodyFromFlags, opts.body);\n if (opts.ifNotExists) { /* TODO: find existing then return or create */ }\n const res = await apiRequest({ method: \"POST\", path: \"daily_notes\", token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n dailynotesCmd.command(\"update <date>\").description(\"Update daily-notes\")\n .option(\"--body <json>\", \"Request body JSON (merged with flags)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk update (max 25)\")\n .option(\"--dates <dates>\", \"Comma-separated dates for bulk update (max 25)\")\n .option(\"--content <value>\", \"content\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (date, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const dates = parseDates(opts.dates);\n if (dates.length > 0) {\n validateBulkIds(dates, \"daily-notes\");\n const { data, summary } = await runBulk({\n items: dates,\n runOne: async (date) => {\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.content != null) bodyFromFlags.content = opts.content;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl, body });\n return { ok: res.ok, status: res.status || 0, data: res.data, error: res.error };\n },\n toResult: (date, ok, status, data, err) => ok ? { _id: date, status: \"updated\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const bodyFromFlags: Record<string, unknown> = {};\n if (opts.content != null) bodyFromFlags.content = opts.content;\n const body = mergeBody(bodyFromFlags, opts.body);\n const res = await apiRequest({ method: \"PATCH\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl, body });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n const data = (res.data as { data?: unknown })?.data ?? res.data;\n printOutput(getOutputFormat(), data ?? {}, false);\n });\n dailynotesCmd.command(\"delete <date>\").description(\"Delete daily-notes\")\n .option(\"--ids <ids>\", \"Comma-separated IDs for bulk delete (max 25)\")\n .option(\"--dates <dates>\", \"Comma-separated dates for bulk delete (max 25)\")\n .hook(\"preAction\", (thisCommand: Command) => {\n syncRootOptsFromCommand(thisCommand);\n })\n .action(async (date, opts) => {\n const token = requireToken();\n if (!token) exitWithError(401, \"Missing or invalid token\");\n const dates = parseDates(opts.dates);\n if (dates.length > 0) {\n validateBulkIds(dates, \"daily-notes\");\n const { data, summary } = await runBulk({\n items: dates,\n runOne: async (date) => {\n const res = await apiRequest({ method: \"DELETE\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl });\n return { ok: res.ok, status: res.status || 0, error: res.error };\n },\n toResult: (date, ok, status, _d, err) => ok ? { _id: date, status: \"deleted\" } : { error: true, statusCode: status, message: err ?? \"Failed\" },\n });\n printOutput(getOutputFormat(), { data, summary }, false);\n return;\n }\n const res = await apiRequest({ method: \"DELETE\", path: \"daily_notes/\" + encodeURIComponent(date), token, baseUrl });\n if (!res.ok) exitWithError(res.status || 500, res.error ?? \"Request failed\");\n if (getOutputFormat() === \"json\") console.log(JSON.stringify({ data: null, deleted: true }));\n });\n\n}"],"mappings":";;;;;;;;AAIO,SAAS,UACd,eACA,YACyB;AACzB,MAAI,OAAgC,CAAC;AACrC,MAAI,YAAY,KAAK,GAAG;AACtB,QAAI;AACF,aAAO,KAAK,MAAM,UAAU;AAAA,IAC9B,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO,EAAE,GAAG,MAAM,GAAG,cAAc;AACrC;;;ACjBA,IAAM,UAAU;AAChB,IAAM,cAAc;AACpB,IAAM,cAAc;AAEb,SAAS,SAAS,SAAuC;AAC9D,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO,CAAC;AAC9B,SAAO,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AAC/D;AAEO,SAAS,WAAW,WAAyC;AAClE,SAAO,SAAS,SAAS;AAC3B;AAEO,SAAS,gBAAgB,KAAe,eAA6B;AAC1E,MAAI,IAAI,SAAS,SAAS;AACxB,UAAM,IAAI;AAAA,MACR,GAAG,aAAa,SAAS,OAAO,4BAA4B,IAAI,MAAM;AAAA,IACxE;AAAA,EACF;AACF;AAoBA,eAAsB,QAAW,SAG9B;AACD,QAAM,EAAE,OAAO,QAAQ,SAAS,IAAI;AACpC,QAAM,cAAc,KAAK,IAAI,QAAQ,eAAe,aAAa,MAAM,MAAM;AAC7E,QAAM,UAA4B,CAAC;AACnC,MAAI,YAAY;AAChB,MAAI,SAAS;AAEb,iBAAe,aAAa,IAAqC;AAC/D,QAAI,UAA4E;AAChF,aAAS,UAAU,GAAG,WAAW,aAAa,WAAW;AACvD,YAAM,MAAM,MAAM,OAAO,EAAE;AAC3B,gBAAU;AACV,UAAI,IAAI,WAAW,IAAK;AACxB,YAAM,aAAa,KAAK;AACxB,YAAM,IAAI,QAAQ,CAACA,OAAM,WAAWA,IAAG,aAAa,GAAI,CAAC;AAAA,IAC3D;AACA,UAAM,IAAI;AACV,UAAM,SAAS,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK;AAC3D,QAAI,EAAE,GAAI;AAAA,QACL;AACL,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,CAAC,GAAG,KAAK;AACvB,QAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,YAAY,GAAG,YAAY;AAC9D,WAAO,MAAM,SAAS,GAAG;AACvB,YAAM,KAAK,MAAM,MAAM;AACvB,YAAM,SAAS,MAAM,aAAa,EAAE;AACpC,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF,CAAC;AACD,QAAM,QAAQ,IAAI,OAAO;AAEzB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,EAAE,OAAO,MAAM,QAAQ,WAAW,OAAO;AAAA,EACpD;AACF;;;AChEO,SAAS,SAAS,SAAkB,SAA+B;AACxE,QAAM,EAAE,iBAAiB,cAAc,eAAe,YAAY,wBAAwB,IAAI;AAC9F,QAAM,UAAU,WAAW;AAG3B,QAAM,mBAAmB,QAAQ,QAAQ,eAAe,EAAE,YAAY,wBAAwB;AAC9F,mBAAiB,QAAQ,MAAM,EAAE,YAAY,oBAAoB,EAC9D,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,iBAAiB,OAAO,SAAS,MAAM,CAAC;AAC5F,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,mBAAiB,QAAQ,UAAU,EAAE,YAAY,6BAA6B,EAC3E,OAAO,6BAA6B,kCAAkC,EACtE,OAAO,0BAA0B,+BAA+B,EAChE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,mBAAmB,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AACtH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,mBAAiB,QAAQ,QAAQ,EAAE,YAAY,sBAAsB,EAClE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,gBAAgB,IAAI,EAC3B,OAAO,kBAAkB,MAAM,EAC/B,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,MAAM,KAAM,eAAc,KAAK,KAAK;AAC7C,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,iBAAiB,OAAO,SAAS,KAAK,CAAC;AAC5F,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,mBAAiB,QAAQ,aAAa,EAAE,YAAY,sBAAsB,EACvE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,kBAAkB,MAAM,EAC/B,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,eAAe;AACpC,YAAM,EAAE,MAAAC,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,QAAQ,KAAM,CAAAA,eAAc,OAAO,KAAK;AACjD,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,mBAAmB,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AACvH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,mBAAmB,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AACvH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,mBAAiB,QAAQ,aAAa,EAAE,YAAY,sBAAsB,EACvE,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,eAAe;AACpC,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,mBAAmB,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AAClH,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,mBAAmB,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AAClH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,gBAAgB,QAAQ,QAAQ,YAAY,EAAE,YAAY,qBAAqB;AACrF,gBAAc,QAAQ,MAAM,EAAE,YAAY,iBAAiB,EACxD,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,6BAA6B,0BAA0B,EAC9D,OAAO,kBAAkB,gBAAgB,EACzC,OAAO,uBAAuB,oBAAoB,EAClD,OAAO,qBAAqB,kBAAkB,EAC9C,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,uBAAuB,oBAAoB,EAClD,OAAO,+BAA+B,2BAA2B,EACjE,OAAO,oCAAoC,gCAAgC,EAC3E,OAAO,2BAA2B,uBAAuB,EACzD,OAAO,4BAA4B,wBAAwB,EAC3D,OAAO,4BAA4B,wBAAwB,EAC3D,OAAO,2BAA2B,uBAAuB,EACzD,OAAO,4BAA4B,wBAAwB,EAC3D,OAAO,4BAA4B,wBAAwB,EAC3D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,QAAQ,KAAM,OAAM,OAAO,KAAK;AACzC,QAAI,KAAK,YAAY,KAAM,OAAM,WAAW,KAAK;AACjD,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,YAAY,KAAM,OAAM,WAAW,KAAK;AACjD,QAAI,KAAK,mBAAmB,KAAM,OAAM,kBAAkB,KAAK;AAC/D,QAAI,KAAK,wBAAwB,KAAM,OAAM,uBAAuB,KAAK;AACzE,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,cAAc,OAAO,SAAS,MAAM,CAAC;AACzF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,gBAAc,QAAQ,UAAU,EAAE,YAAY,0BAA0B,EACrE,OAAO,2BAA2B,gCAAgC,EAClE,OAAO,6BAA6B,kCAAkC,EACtE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,gBAAgB,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AACnH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,QAAQ,EAAE,YAAY,mBAAmB,EAC5D,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,kBAAkB,MAAM,EAC/B,OAAO,yBAAyB,aAAa,EAC7C,OAAO,6BAA6B,gBAAgB,EACpD,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,cAAc,OAAO,SAAS,KAAK,CAAC;AACzF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,aAAa,EAAE,YAAY,mBAAmB,EACjE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,kBAAkB,MAAM,EAC/B,OAAO,yBAAyB,aAAa,EAC7C,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,YAAY;AACjC,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,QAAQ,KAAM,CAAAA,eAAc,OAAO,KAAK;AACjD,cAAI,KAAK,eAAe,KAAM,CAAAA,eAAc,cAAc,KAAK;AAC/D,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,gBAAgB,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AACpH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,gBAAgB,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AACpH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,aAAa,EAAE,YAAY,mBAAmB,EACjE,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,YAAY;AACjC,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,gBAAgB,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AAC/G,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,gBAAgB,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AAC/G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,cAAc,QAAQ,QAAQ,UAAU,EAAE,YAAY,mBAAmB;AAC/E,cAAY,QAAQ,MAAM,EAAE,YAAY,eAAe,EACpD,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,oBAAoB,kBAAkB,EAC7C,OAAO,0BAA0B,uBAAuB,EACxD,OAAO,6BAA6B,0BAA0B,EAC9D,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,sBAAsB,mBAAmB,EAChD,OAAO,+BAA+B,2BAA2B,EACjE,OAAO,oCAAoC,gCAAgC,EAC3E,OAAO,2BAA2B,uBAAuB,EACzD,OAAO,4BAA4B,wBAAwB,EAC3D,OAAO,4BAA4B,wBAAwB,EAC3D,OAAO,2BAA2B,uBAAuB,EACzD,OAAO,4BAA4B,wBAAwB,EAC3D,OAAO,4BAA4B,wBAAwB,EAC3D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,WAAW,KAAM,OAAM,UAAU,KAAK;AAC/C,QAAI,KAAK,mBAAmB,KAAM,OAAM,kBAAkB,KAAK;AAC/D,QAAI,KAAK,wBAAwB,KAAM,OAAM,uBAAuB,KAAK;AACzE,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,YAAY,OAAO,SAAS,MAAM,CAAC;AACvF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,cAAY,QAAQ,UAAU,EAAE,YAAY,wBAAwB,EACjE,OAAO,8BAA8B,mCAAmC,EACxE,OAAO,4BAA4B,iCAAiC,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,mBAAmB,KAAM,OAAM,kBAAkB,KAAK;AAC/D,QAAI,KAAK,iBAAiB,KAAM,OAAM,gBAAgB,KAAK;AAC3D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,cAAc,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AACjH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,cAAY,QAAQ,QAAQ,EAAE,YAAY,iBAAiB,EACxD,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,mBAAmB,OAAO,EACjC,OAAO,yBAAyB,aAAa,EAC7C,OAAO,oBAAoB,QAAQ,EACnC,OAAO,0BAA0B,aAAa,EAC9C,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,YAAY,OAAO,SAAS,KAAK,CAAC;AACvF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,cAAY,QAAQ,aAAa,EAAE,YAAY,iBAAiB,EAC7D,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,mBAAmB,OAAO,EACjC,OAAO,yBAAyB,aAAa,EAC7C,OAAO,oBAAoB,QAAQ,EACnC,OAAO,0BAA0B,aAAa,EAC9C,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,UAAU;AAC/B,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,SAAS,KAAM,CAAAA,eAAc,QAAQ,KAAK;AACnD,cAAI,KAAK,eAAe,KAAM,CAAAA,eAAc,cAAc,KAAK;AAC/D,cAAI,KAAK,UAAU,KAAM,CAAAA,eAAc,SAAS,KAAK;AACrD,cAAI,KAAK,eAAe,KAAM,CAAAA,eAAc,cAAc,KAAK;AAC/D,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,cAAc,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AAClH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,cAAc,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AAClH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,cAAY,QAAQ,aAAa,EAAE,YAAY,iBAAiB,EAC7D,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,UAAU;AAC/B,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,cAAc,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AAC7G,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,cAAc,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AAC7G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,gBAAgB,QAAQ,QAAQ,YAAY,EAAE,YAAY,qBAAqB;AACrF,gBAAc,QAAQ,MAAM,EAAE,YAAY,iBAAiB,EACxD,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,6BAA6B,0BAA0B,EAC9D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,cAAc,OAAO,SAAS,MAAM,CAAC;AACzF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,gBAAc,QAAQ,UAAU,EAAE,YAAY,0BAA0B,EACrE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,gBAAgB,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AACnH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,QAAQ,EAAE,YAAY,mBAAmB,EAC5D,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,kBAAkB,MAAM,EAC/B,OAAO,mBAAmB,OAAO,EACjC,OAAO,yBAAyB,YAAY,EAC5C,OAAO,6BAA6B,gBAAgB,EACpD,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,cAAc,OAAO,SAAS,KAAK,CAAC;AACzF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,aAAa,EAAE,YAAY,mBAAmB,EACjE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,kBAAkB,MAAM,EAC/B,OAAO,mBAAmB,OAAO,EACjC,OAAO,yBAAyB,YAAY,EAC5C,OAAO,6BAA6B,gBAAgB,EACpD,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,YAAY;AACjC,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,QAAQ,KAAM,CAAAA,eAAc,OAAO,KAAK;AACjD,cAAI,KAAK,SAAS,KAAM,CAAAA,eAAc,QAAQ,KAAK;AACnD,cAAI,KAAK,cAAc,KAAM,CAAAA,eAAc,aAAa,KAAK;AAC7D,cAAI,KAAK,kBAAkB,KAAM,CAAAA,eAAc,iBAAiB,KAAK;AACrE,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,gBAAgB,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AACpH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,gBAAgB,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AACpH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,aAAa,EAAE,YAAY,mBAAmB,EACjE,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,YAAY;AACjC,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,gBAAgB,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AAC/G,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,gBAAgB,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AAC/G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,WAAW,QAAQ,QAAQ,OAAO,EAAE,YAAY,gBAAgB;AACtE,WAAS,QAAQ,MAAM,EAAE,YAAY,YAAY,EAC9C,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,oBAAoB,kBAAkB,EAC7C,OAAO,0BAA0B,uBAAuB,EACxD,OAAO,wBAAwB,qBAAqB,EACpD,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,0BAA0B,uBAAuB,EACxD,OAAO,6BAA6B,0BAA0B,EAC9D,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,8BAA8B,0BAA0B,EAC/D,OAAO,wBAAwB,oBAAoB,EACnD,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,0BAA0B,sBAAsB,EACvD,OAAO,0BAA0B,sBAAsB,EACvD,OAAO,4BAA4B,uBAAuB,EAC1D,OAAO,6BAA6B,wBAAwB,EAC5D,OAAO,6BAA6B,wBAAwB,EAC5D,OAAO,6BAA6B,yBAAyB,EAC7D,OAAO,8BAA8B,0BAA0B,EAC/D,OAAO,8BAA8B,0BAA0B,EAC/D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,aAAa,KAAM,OAAM,YAAY,KAAK;AACnD,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,YAAY,KAAM,OAAM,WAAW,KAAK;AACjD,QAAI,KAAK,aAAa,KAAM,OAAM,YAAY,KAAK;AACnD,QAAI,KAAK,aAAa,KAAM,OAAM,YAAY,KAAK;AACnD,QAAI,KAAK,aAAa,KAAM,OAAM,YAAY,KAAK;AACnD,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,iBAAiB,KAAM,OAAM,gBAAgB,KAAK;AAC3D,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,SAAS,OAAO,SAAS,MAAM,CAAC;AACpF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,WAAS,QAAQ,UAAU,EAAE,YAAY,qBAAqB,EAC3D,OAAO,2BAA2B,gCAAgC,EAClE,OAAO,6BAA6B,kCAAkC,EACtE,OAAO,8BAA8B,mCAAmC,EACxE,OAAO,4BAA4B,iCAAiC,EACpE,OAAO,mCAAmC,uCAAuC,EACjF,OAAO,2BAA2B,gCAAgC,EAClE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,mBAAmB,KAAM,OAAM,kBAAkB,KAAK;AAC/D,QAAI,KAAK,iBAAiB,KAAM,OAAM,gBAAgB,KAAK;AAC3D,QAAI,KAAK,uBAAuB,KAAM,OAAM,sBAAsB,KAAK;AACvE,QAAI,KAAK,gBAAgB,KAAM,OAAM,eAAe,KAAK;AACzD,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,WAAW,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AAC9G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,WAAS,QAAQ,QAAQ,EAAE,YAAY,cAAc,EAClD,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,mBAAmB,OAAO,EACjC,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,wBAAwB,WAAW,EAC1C,OAAO,yBAAyB,YAAY,EAC5C,OAAO,oBAAoB,QAAQ,EACnC,OAAO,8BAA8B,gBAAgB,EACrD,OAAO,yBAAyB,YAAY,EAC5C,OAAO,wBAAwB,WAAW,EAC1C,OAAO,qBAAqB,QAAQ,EACpC,OAAO,yBAAyB,WAAW,EAC3C,OAAO,sBAAsB,SAAS,EACtC,OAAO,0BAA0B,aAAa,EAC9C,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,SAAS,OAAO,SAAS,KAAK,CAAC;AACpF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,WAAS,QAAQ,aAAa,EAAE,YAAY,cAAc,EACvD,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,mBAAmB,OAAO,EACjC,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,wBAAwB,WAAW,EAC1C,OAAO,yBAAyB,YAAY,EAC5C,OAAO,0BAA0B,aAAa,EAC9C,OAAO,oBAAoB,QAAQ,EACnC,OAAO,8BAA8B,gBAAgB,EACrD,OAAO,yBAAyB,YAAY,EAC5C,OAAO,wBAAwB,WAAW,EAC1C,OAAO,qBAAqB,QAAQ,EACpC,OAAO,yBAAyB,WAAW,EAC3C,OAAO,sBAAsB,SAAS,EACtC,OAAO,0BAA0B,aAAa,EAC9C,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,OAAO;AAC5B,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,SAAS,KAAM,CAAAA,eAAc,QAAQ,KAAK;AACnD,cAAI,KAAK,SAAS,KAAM,CAAAA,eAAc,QAAQ,KAAK;AACnD,cAAI,KAAK,UAAU,KAAM,CAAAA,eAAc,SAAS,KAAK;AACrD,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,cAAc,KAAM,CAAAA,eAAc,aAAa,KAAK;AAC7D,cAAI,KAAK,eAAe,KAAM,CAAAA,eAAc,cAAc,KAAK;AAC/D,cAAI,KAAK,UAAU,KAAM,CAAAA,eAAc,SAAS,KAAK;AACrD,cAAI,KAAK,kBAAkB,KAAM,CAAAA,eAAc,iBAAiB,KAAK;AACrE,cAAI,KAAK,cAAc,KAAM,CAAAA,eAAc,aAAa,KAAK;AAC7D,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,UAAU,KAAM,CAAAA,eAAc,SAAS,KAAK;AACrD,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,WAAW,KAAM,CAAAA,eAAc,UAAU,KAAK;AACvD,cAAI,KAAK,eAAe,KAAM,CAAAA,eAAc,cAAc,KAAK;AAC/D,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,WAAW,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AAC/G,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,UAAU,KAAM,eAAc,SAAS,KAAK;AACrD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,WAAW,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AAC/G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,WAAS,QAAQ,aAAa,EAAE,YAAY,cAAc,EACvD,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,OAAO;AAC5B,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,WAAW,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AAC1G,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,WAAW,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AAC1G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,mBAAmB,QAAQ,QAAQ,gBAAgB,EAAE,YAAY,yBAAyB;AAChG,mBAAiB,QAAQ,MAAM,EAAE,YAAY,qBAAqB,EAC/D,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,kBAAkB,gBAAgB,EACzC,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,0BAA0B,uBAAuB,EACxD,OAAO,wBAAwB,qBAAqB,EACpD,OAAO,6BAA6B,0BAA0B,EAC9D,OAAO,iCAAiC,4BAA4B,EACpE,OAAO,yBAAyB,sBAAsB,EACtD,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,QAAQ,KAAM,OAAM,OAAO,KAAK;AACzC,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,QAAI,KAAK,eAAe,KAAM,OAAM,cAAc,KAAK;AACvD,QAAI,KAAK,aAAa,KAAM,OAAM,YAAY,KAAK;AACnD,QAAI,KAAK,kBAAkB,KAAM,OAAM,iBAAiB,KAAK;AAC7D,QAAI,KAAK,oBAAoB,KAAM,OAAM,mBAAmB,KAAK;AACjE,QAAI,KAAK,cAAc,KAAM,OAAM,aAAa,KAAK;AACrD,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,kBAAkB,OAAO,SAAS,MAAM,CAAC;AAC7F,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,mBAAiB,QAAQ,UAAU,EAAE,YAAY,8BAA8B,EAC5E,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,oBAAoB,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AACvH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,mBAAiB,QAAQ,QAAQ,EAAE,YAAY,uBAAuB,EACnE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,kBAAkB,MAAM,EAC/B,OAAO,wBAAwB,WAAW,EAC1C,OAAO,sBAAsB,SAAS,EACtC,OAAO,6BAA6B,gBAAgB,EACpD,OAAO,yBAAyB,YAAY,EAC5C,OAAO,yBAAyB,WAAW,EAC3C,OAAO,kBAAkB,MAAM,EAC/B,OAAO,yBAAyB,YAAY,EAC5C,OAAO,qBAAqB,SAAS,EACrC,OAAO,wBAAwB,WAAW,EAC1C,OAAO,mBAAmB,OAAO,EACjC,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,kBAAkB,OAAO,SAAS,KAAK,CAAC;AAC7F,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,mBAAiB,QAAQ,aAAa,EAAE,YAAY,uBAAuB,EACxE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,kBAAkB,MAAM,EAC/B,OAAO,wBAAwB,WAAW,EAC1C,OAAO,sBAAsB,SAAS,EACtC,OAAO,6BAA6B,gBAAgB,EACpD,OAAO,yBAAyB,YAAY,EAC5C,OAAO,yBAAyB,WAAW,EAC3C,OAAO,kBAAkB,MAAM,EAC/B,OAAO,yBAAyB,YAAY,EAC5C,OAAO,qBAAqB,SAAS,EACrC,OAAO,wBAAwB,WAAW,EAC1C,OAAO,mBAAmB,OAAO,EACjC,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,gBAAgB;AACrC,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,QAAQ,KAAM,CAAAA,eAAc,OAAO,KAAK;AACjD,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,WAAW,KAAM,CAAAA,eAAc,UAAU,KAAK;AACvD,cAAI,KAAK,kBAAkB,KAAM,CAAAA,eAAc,iBAAiB,KAAK;AACrE,cAAI,KAAK,cAAc,KAAM,CAAAA,eAAc,aAAa,KAAK;AAC7D,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,QAAQ,KAAM,CAAAA,eAAc,OAAO,KAAK;AACjD,cAAI,KAAK,cAAc,KAAM,CAAAA,eAAc,aAAa,KAAK;AAC7D,cAAI,KAAK,WAAW,KAAM,CAAAA,eAAc,UAAU,KAAK;AACvD,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,SAAS,KAAM,CAAAA,eAAc,QAAQ,KAAK;AACnD,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,oBAAoB,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AACxH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,QAAI,KAAK,kBAAkB,KAAM,eAAc,iBAAiB,KAAK;AACrE,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,cAAc,KAAM,eAAc,aAAa,KAAK;AAC7D,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,oBAAoB,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AACxH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,mBAAiB,QAAQ,aAAa,EAAE,YAAY,uBAAuB,EACxE,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,gBAAgB;AACrC,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,oBAAoB,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AACnH,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,oBAAoB,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AACnH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,aAAa,QAAQ,QAAQ,SAAS,EAAE,YAAY,kBAAkB;AAC5E,aAAW,QAAQ,MAAM,EAAE,YAAY,cAAc,EAClD,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,kBAAkB,gBAAgB,EACzC,OAAO,kBAAkB,gBAAgB,EACzC,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,QAAQ,KAAM,OAAM,OAAO,KAAK;AACzC,QAAI,KAAK,QAAQ,KAAM,OAAM,OAAO,KAAK;AACzC,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,WAAW,OAAO,SAAS,MAAM,CAAC;AACtF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,aAAW,QAAQ,UAAU,EAAE,YAAY,uBAAuB,EAC/D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,aAAa,mBAAmB,EAAE,GAAG,OAAO,SAAS,MAAM,CAAC;AAChH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,aAAW,QAAQ,QAAQ,EAAE,YAAY,gBAAgB,EACtD,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,kBAAkB,MAAM,EAC/B,OAAO,kBAAkB,MAAM,EAC/B,OAAO,yBAAyB,aAAa,EAC7C,OAAO,uBAAuB,UAAU,EACxC,OAAO,wBAAwB,WAAW,EAC1C,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,QAAI,KAAK,YAAY,KAAM,eAAc,WAAW,KAAK;AACzD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,WAAW,OAAO,SAAS,KAAK,CAAC;AACtF,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,aAAW,QAAQ,aAAa,EAAE,YAAY,gBAAgB,EAC3D,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,yBAAyB,aAAa,EAC7C,OAAO,uBAAuB,UAAU,EACxC,OAAO,wBAAwB,WAAW,EAC1C,OAAO,mBAAmB,OAAO,EACjC,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,SAAS;AAC9B,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMC,iBAAyC,CAAC;AAChD,cAAI,KAAK,eAAe,KAAM,CAAAA,eAAc,cAAc,KAAK;AAC/D,cAAI,KAAK,YAAY,KAAM,CAAAA,eAAc,WAAW,KAAK;AACzD,cAAI,KAAK,aAAa,KAAM,CAAAA,eAAc,YAAY,KAAK;AAC3D,cAAI,KAAK,SAAS,KAAM,CAAAA,eAAc,QAAQ,KAAK;AACnD,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,aAAa,mBAAmBH,GAAE,GAAG,OAAO,SAAS,MAAAE,MAAK,CAAC;AACjH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQD,OAAM,QAAQ,KAAK,EAAE,KAAKC,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC7I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAD,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,eAAe,KAAM,eAAc,cAAc,KAAK;AAC/D,QAAI,KAAK,YAAY,KAAM,eAAc,WAAW,KAAK;AACzD,QAAI,KAAK,aAAa,KAAM,eAAc,YAAY,KAAK;AAC3D,QAAI,KAAK,SAAS,KAAM,eAAc,QAAQ,KAAK;AACnD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,aAAa,mBAAmB,EAAE,GAAG,OAAO,SAAS,KAAK,CAAC;AACjH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,aAAW,QAAQ,aAAa,EAAE,YAAY,gBAAgB,EAC3D,OAAO,eAAe,8CAA8C,EACpE,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,IAAI,SAAS;AAC1B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,MAAM,SAAS,KAAK,GAAG;AAC7B,QAAI,IAAI,SAAS,GAAG;AAClB,sBAAgB,KAAK,SAAS;AAC9B,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOC,QAAO;AACpB,gBAAMG,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,aAAa,mBAAmBH,GAAE,GAAG,OAAO,QAAQ,CAAC;AAC5G,iBAAO,EAAE,IAAIG,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACH,KAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,KAAI,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC3I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,aAAa,mBAAmB,EAAE,GAAG,OAAO,QAAQ,CAAC;AAC5G,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAGH,QAAM,gBAAgB,QAAQ,QAAQ,aAAa,EAAE,YAAY,sBAAsB;AACvF,gBAAc,QAAQ,MAAM,EAAE,YAAY,kBAAkB,EACzD,OAAO,eAAe,aAAa,EACnC,OAAO,gBAAgB,gBAAgB,EACvC,OAAO,mBAAmB,iBAAiB,EAC3C,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,QAAI,KAAK,UAAU,KAAM,OAAM,SAAS,KAAK;AAC7C,QAAI,KAAK,SAAS,KAAM,OAAM,QAAQ,KAAK;AAC3C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,eAAe,OAAO,SAAS,MAAM,CAAC;AAC1F,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA+B,QAAQ,CAAC;AAC1D,gBAAY,gBAAgB,GAAG,MAAM,KAAK;AAAA,EAC5C,CAAC;AACH,gBAAc,QAAQ,YAAY,EAAE,YAAY,6BAA6B,EAC1E,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,MAAM,SAAS;AAC5B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAqD,CAAC;AAC5D,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,OAAO,MAAM,iBAAiB,mBAAmB,IAAI,GAAG,OAAO,SAAS,MAAM,CAAC;AACtH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,QAAQ,EAAE,YAAY,oBAAoB,EAC7D,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,kBAAkB,MAAM,EAC/B,OAAO,qBAAqB,SAAS,EACrC,OAAO,mBAAmB,gCAAgC,EAC1D,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,SAAS;AACtB,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,QAAQ,KAAM,eAAc,OAAO,KAAK;AACjD,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,QAAI,KAAK,aAAa;AAAA,IAAkD;AACxE,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,QAAQ,MAAM,eAAe,OAAO,SAAS,KAAK,CAAC;AAC1F,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,eAAe,EAAE,YAAY,oBAAoB,EACpE,OAAO,iBAAiB,uCAAuC,EAC/D,OAAO,eAAe,8CAA8C,EACpE,OAAO,mBAAmB,gDAAgD,EAC1E,OAAO,qBAAqB,SAAS,EACrC,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,MAAM,SAAS;AAC5B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAQ,WAAW,KAAK,KAAK;AACnC,QAAI,MAAM,SAAS,GAAG;AACpB,sBAAgB,OAAO,aAAa;AACpC,YAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOK,UAAS;AACtB,gBAAMH,iBAAyC,CAAC;AAChD,cAAI,KAAK,WAAW,KAAM,CAAAA,eAAc,UAAU,KAAK;AACvD,gBAAMC,QAAO,UAAUD,gBAAe,KAAK,IAAI;AAC/C,gBAAME,OAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,iBAAiB,mBAAmBC,KAAI,GAAG,OAAO,SAAS,MAAAF,MAAK,CAAC;AACvH,iBAAO,EAAE,IAAIC,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,MAAMA,KAAI,MAAM,OAAOA,KAAI,MAAM;AAAA,QACjF;AAAA,QACA,UAAU,CAACC,OAAM,IAAI,QAAQL,OAAM,QAAQ,KAAK,EAAE,KAAKK,OAAM,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MACjJ,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAAL,OAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,gBAAyC,CAAC;AAChD,QAAI,KAAK,WAAW,KAAM,eAAc,UAAU,KAAK;AACvD,UAAM,OAAO,UAAU,eAAe,KAAK,IAAI;AAC/C,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,MAAM,iBAAiB,mBAAmB,IAAI,GAAG,OAAO,SAAS,KAAK,CAAC;AACvH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,UAAM,OAAQ,IAAI,MAA6B,QAAQ,IAAI;AAC3D,gBAAY,gBAAgB,GAAG,QAAQ,CAAC,GAAG,KAAK;AAAA,EAClD,CAAC;AACH,gBAAc,QAAQ,eAAe,EAAE,YAAY,oBAAoB,EACpE,OAAO,eAAe,8CAA8C,EACpE,OAAO,mBAAmB,gDAAgD,EAC1E,KAAK,aAAa,CAAC,gBAAyB;AAC3C,4BAAwB,WAAW;AAAA,EACrC,CAAC,EACA,OAAO,OAAO,MAAM,SAAS;AAC5B,UAAM,QAAQ,aAAa;AAC3B,QAAI,CAAC,MAAO,eAAc,KAAK,0BAA0B;AACzD,UAAM,QAAQ,WAAW,KAAK,KAAK;AACnC,QAAI,MAAM,SAAS,GAAG;AACpB,sBAAgB,OAAO,aAAa;AACpC,YAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,QACtC,OAAO;AAAA,QACP,QAAQ,OAAOK,UAAS;AACtB,gBAAMD,OAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,iBAAiB,mBAAmBC,KAAI,GAAG,OAAO,QAAQ,CAAC;AAClH,iBAAO,EAAE,IAAID,KAAI,IAAI,QAAQA,KAAI,UAAU,GAAG,OAAOA,KAAI,MAAM;AAAA,QACjE;AAAA,QACA,UAAU,CAACC,OAAM,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAKA,OAAM,QAAQ,UAAU,IAAI,EAAE,OAAO,MAAM,YAAY,QAAQ,SAAS,OAAO,SAAS;AAAA,MAC/I,CAAC;AACD,kBAAY,gBAAgB,GAAG,EAAE,MAAM,QAAQ,GAAG,KAAK;AACvD;AAAA,IACF;AACA,UAAM,MAAM,MAAM,WAAW,EAAE,QAAQ,UAAU,MAAM,iBAAiB,mBAAmB,IAAI,GAAG,OAAO,QAAQ,CAAC;AAClH,QAAI,CAAC,IAAI,GAAI,eAAc,IAAI,UAAU,KAAK,IAAI,SAAS,gBAAgB;AAC3E,QAAI,gBAAgB,MAAM,OAAQ,SAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EAC7F,CAAC;AAEL;","names":["r","data","id","bodyFromFlags","body","res","date"]}
|
|
File without changes
|