@nocoo/zhe 1.13.0 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.d.ts +21 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +46 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/types.d.ts +43 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/commands/create.d.ts +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +48 -4
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/get.d.ts.map +1 -1
- package/dist/commands/get.js +29 -2
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/idea.d.ts +5 -0
- package/dist/commands/idea.d.ts.map +1 -0
- package/dist/commands/idea.js +406 -0
- package/dist/commands/idea.js.map +1 -0
- package/dist/commands/list.d.ts +21 -2
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +70 -8
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/update.d.ts +3 -3
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +27 -8
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +24 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +94 -6
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/update.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { defineCommand, pc } from "@nocoo/cli-base";
|
|
5
5
|
import { ApiClient, ApiClientError, EXIT_AUTH_REQUIRED, EXIT_ERROR, EXIT_INVALID_ARGS, EXIT_NOT_FOUND, EXIT_RATE_LIMITED, } from "../api/client.js";
|
|
6
6
|
import { getApiKey } from "../config.js";
|
|
7
|
-
import { parseLinkId } from "../utils.js";
|
|
7
|
+
import { parseLinkId, resolveFolderName, resolveTagName } from "../utils.js";
|
|
8
8
|
export const updateCommand = defineCommand({
|
|
9
9
|
meta: {
|
|
10
10
|
name: "update",
|
|
@@ -29,7 +29,7 @@ export const updateCommand = defineCommand({
|
|
|
29
29
|
folder: {
|
|
30
30
|
type: "string",
|
|
31
31
|
alias: "f",
|
|
32
|
-
description: '
|
|
32
|
+
description: 'Folder name or ID (use "none" to remove)',
|
|
33
33
|
},
|
|
34
34
|
note: {
|
|
35
35
|
type: "string",
|
|
@@ -57,11 +57,11 @@ export const updateCommand = defineCommand({
|
|
|
57
57
|
},
|
|
58
58
|
"add-tag": {
|
|
59
59
|
type: "string",
|
|
60
|
-
description: "Add tag to link (by ID)",
|
|
60
|
+
description: "Add tag to link (by name or ID)",
|
|
61
61
|
},
|
|
62
62
|
"remove-tag": {
|
|
63
63
|
type: "string",
|
|
64
|
-
description: "Remove tag from link (by ID)",
|
|
64
|
+
description: "Remove tag from link (by name or ID)",
|
|
65
65
|
},
|
|
66
66
|
json: {
|
|
67
67
|
type: "boolean",
|
|
@@ -80,6 +80,7 @@ export const updateCommand = defineCommand({
|
|
|
80
80
|
console.log(pc.red("Invalid link ID. Must be a number."));
|
|
81
81
|
process.exit(EXIT_INVALID_ARGS);
|
|
82
82
|
}
|
|
83
|
+
const client = new ApiClient(apiKey);
|
|
83
84
|
// Build update payload
|
|
84
85
|
const data = {};
|
|
85
86
|
if (args.url !== undefined) {
|
|
@@ -93,8 +94,18 @@ export const updateCommand = defineCommand({
|
|
|
93
94
|
if (args.slug !== undefined) {
|
|
94
95
|
data.slug = args.slug;
|
|
95
96
|
}
|
|
97
|
+
// Resolve folder name to ID
|
|
96
98
|
if (args.folder !== undefined) {
|
|
97
|
-
|
|
99
|
+
if (args.folder === "none") {
|
|
100
|
+
data.folderId = null;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const folderId = await resolveFolderName(client, args.folder);
|
|
104
|
+
if (folderId === null) {
|
|
105
|
+
process.exit(EXIT_INVALID_ARGS);
|
|
106
|
+
}
|
|
107
|
+
data.folderId = folderId;
|
|
108
|
+
}
|
|
98
109
|
}
|
|
99
110
|
if (args.note !== undefined) {
|
|
100
111
|
data.note = args.note === "" ? null : args.note;
|
|
@@ -111,13 +122,22 @@ export const updateCommand = defineCommand({
|
|
|
111
122
|
if (args.screenshot !== undefined) {
|
|
112
123
|
data.screenshotUrl = args.screenshot === "" ? null : args.screenshot;
|
|
113
124
|
}
|
|
125
|
+
// Resolve tag names to IDs
|
|
114
126
|
const addTag = args["add-tag"];
|
|
115
127
|
const removeTag = args["remove-tag"];
|
|
116
128
|
if (addTag) {
|
|
117
|
-
|
|
129
|
+
const tagId = await resolveTagName(client, addTag);
|
|
130
|
+
if (tagId === null) {
|
|
131
|
+
process.exit(EXIT_INVALID_ARGS);
|
|
132
|
+
}
|
|
133
|
+
data.addTags = [tagId];
|
|
118
134
|
}
|
|
119
135
|
if (removeTag) {
|
|
120
|
-
|
|
136
|
+
const tagId = await resolveTagName(client, removeTag);
|
|
137
|
+
if (tagId === null) {
|
|
138
|
+
process.exit(EXIT_INVALID_ARGS);
|
|
139
|
+
}
|
|
140
|
+
data.removeTags = [tagId];
|
|
121
141
|
}
|
|
122
142
|
// Check if there's anything to update
|
|
123
143
|
if (Object.keys(data).length === 0) {
|
|
@@ -125,7 +145,6 @@ export const updateCommand = defineCommand({
|
|
|
125
145
|
console.log(pc.dim("Use --url, --slug, --folder, --note, --expires, --title, --desc, --screenshot, --add-tag, or --remove-tag"));
|
|
126
146
|
process.exit(EXIT_INVALID_ARGS);
|
|
127
147
|
}
|
|
128
|
-
const client = new ApiClient(apiKey);
|
|
129
148
|
try {
|
|
130
149
|
const response = await client.updateLink(id, data);
|
|
131
150
|
if (args.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACN,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACN,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IAC1C,IAAI,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yBAAyB;KACtC;IACD,IAAI,EAAE;QACL,EAAE,EAAE;YACH,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,IAAI;SACd;QACD,GAAG,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,qBAAqB;SAClC;QACD,IAAI,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,UAAU;SACvB;QACD,MAAM,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0CAA0C;SACvD;QACD,IAAI,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,4BAA4B;SACzC;QACD,OAAO,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,wCAAwC;SACrD;QACD,KAAK,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,8BAA8B;SAC3C;QACD,IAAI,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,oCAAoC;SACjD;QACD,UAAU,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;SAC/C;QACD,SAAS,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iCAAiC;SAC9C;QACD,YAAY,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sCAAsC;SACnD;QACD,IAAI,EAAE;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,gBAAgB;SAC7B;KACD;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,EAAY,CAAC;QAChC,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAErC,uBAAuB;QACvB,MAAM,IAAI,GAAsB,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,eAAe;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACjC,CAAC;gBACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,CAAC;QACF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACtE,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAuB,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAuB,CAAC;QAE3D,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,sCAAsC;QACtC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CACV,EAAE,CAAC,GAAG,CACL,2GAA2G,CAC3G,CACD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,cAAc,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;CACD,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,GAAW;IAC9B,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,CAAC;AACb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { createCommand } from "./commands/create.js";
|
|
|
7
7
|
import { deleteCommand } from "./commands/delete.js";
|
|
8
8
|
import { foldersCommand } from "./commands/folders.js";
|
|
9
9
|
import { getCommand } from "./commands/get.js";
|
|
10
|
+
import { ideaCommand } from "./commands/idea.js";
|
|
10
11
|
import { inboxCommand } from "./commands/inbox.js";
|
|
11
12
|
import { listCommand } from "./commands/list.js";
|
|
12
13
|
import { loginCommand } from "./commands/login.js";
|
|
@@ -28,6 +29,7 @@ const main = defineCommand({
|
|
|
28
29
|
inbox: inboxCommand,
|
|
29
30
|
folders: foldersCommand,
|
|
30
31
|
tags: tagsCommand,
|
|
32
|
+
idea: ideaCommand,
|
|
31
33
|
create: createCommand,
|
|
32
34
|
get: getCommand,
|
|
33
35
|
update: updateCommand,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,IAAI,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACL,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,qCAAqC;KAClD;IACD,WAAW,EAAE;QACZ,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,WAAW;KACjB;CACD,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,IAAI,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACL,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,qCAAqC;KAClD;IACD,WAAW,EAAE;QACZ,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,WAAW;KACjB;CACD,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared utilities for zhe CLI
|
|
3
3
|
*/
|
|
4
|
+
import type { ApiClient } from "./api/client.js";
|
|
4
5
|
import type { Folder, Link, Tag } from "./api/types.js";
|
|
5
6
|
/**
|
|
6
7
|
* Mask an API key for display: zhe_abcd...wxyz
|
|
@@ -22,18 +23,27 @@ export declare function formatDateTime(isoDate: string): string;
|
|
|
22
23
|
* Truncate a string to a max length with ellipsis
|
|
23
24
|
*/
|
|
24
25
|
export declare function truncate(str: string, maxLength: number): string;
|
|
26
|
+
/**
|
|
27
|
+
* Options for formatLinksTable
|
|
28
|
+
*/
|
|
29
|
+
export interface FormatLinksTableOptions {
|
|
30
|
+
wide?: boolean;
|
|
31
|
+
folderMap?: Map<string, string>;
|
|
32
|
+
}
|
|
25
33
|
/**
|
|
26
34
|
* Format links as a table
|
|
27
35
|
*/
|
|
28
|
-
export declare function formatLinksTable(links: Link[]): string;
|
|
36
|
+
export declare function formatLinksTable(links: Link[], options?: FormatLinksTableOptions): string;
|
|
29
37
|
/**
|
|
30
38
|
* Format links as minimal output (just short URLs)
|
|
31
39
|
*/
|
|
32
40
|
export declare function formatLinksMinimal(links: Link[]): string;
|
|
33
41
|
/**
|
|
34
42
|
* Format a single link for detailed display
|
|
43
|
+
* @param link - The link to format
|
|
44
|
+
* @param folderName - Optional folder name (if not provided, shows folder ID)
|
|
35
45
|
*/
|
|
36
|
-
export declare function formatLinkDetail(link: Link): string;
|
|
46
|
+
export declare function formatLinkDetail(link: Link, folderName?: string): string;
|
|
37
47
|
/**
|
|
38
48
|
* Parse a link ID from string, return null if invalid
|
|
39
49
|
*/
|
|
@@ -46,4 +56,16 @@ export declare function formatFoldersTable(folders: Folder[]): string;
|
|
|
46
56
|
* Format tags as a table
|
|
47
57
|
*/
|
|
48
58
|
export declare function formatTagsTable(tags: Tag[]): string;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve a folder name to folder ID via API.
|
|
61
|
+
* If input looks like a UUID, use it directly.
|
|
62
|
+
* Returns null if folder is not found (with error message printed).
|
|
63
|
+
*/
|
|
64
|
+
export declare function resolveFolderName(client: ApiClient, input: string): Promise<string | null>;
|
|
65
|
+
/**
|
|
66
|
+
* Resolve a tag name to tag ID via API.
|
|
67
|
+
* If input looks like a UUID, use it directly.
|
|
68
|
+
* Returns null if tag is not found (with error message printed).
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveTagName(client: ApiClient, input: string): Promise<string | null>;
|
|
49
71
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,GAAE,uBAA4B,GACnC,MAAM,CAyDR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAKxD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAmB5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAkBnD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BxB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4BxB"}
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared utilities for zhe CLI
|
|
3
3
|
*/
|
|
4
|
+
import { pc } from "@nocoo/cli-base";
|
|
4
5
|
/**
|
|
5
6
|
* Mask an API key for display: zhe_abcd...wxyz
|
|
6
7
|
*/
|
|
@@ -45,11 +46,39 @@ export function truncate(str, maxLength) {
|
|
|
45
46
|
/**
|
|
46
47
|
* Format links as a table
|
|
47
48
|
*/
|
|
48
|
-
export function formatLinksTable(links) {
|
|
49
|
+
export function formatLinksTable(links, options = {}) {
|
|
49
50
|
if (links.length === 0) {
|
|
50
51
|
return "No links found.";
|
|
51
52
|
}
|
|
52
|
-
const
|
|
53
|
+
const { wide = false, folderMap } = options;
|
|
54
|
+
const showFolders = links.some((l) => l.folderId);
|
|
55
|
+
if (wide) {
|
|
56
|
+
// Wide mode: no truncation
|
|
57
|
+
const header = showFolders
|
|
58
|
+
? "ID SLUG URL FOLDER CLICKS CREATED"
|
|
59
|
+
: "ID SLUG URL CLICKS CREATED";
|
|
60
|
+
const separator = "─".repeat(header.length);
|
|
61
|
+
const rows = links.map((link) => {
|
|
62
|
+
const id = String(link.id).padEnd(6);
|
|
63
|
+
const slug = link.slug.padEnd(20);
|
|
64
|
+
const url = link.originalUrl.padEnd(48);
|
|
65
|
+
const clicks = String(link.clicks).padEnd(7);
|
|
66
|
+
const created = formatDate(link.createdAt);
|
|
67
|
+
if (showFolders) {
|
|
68
|
+
const folderName = link.folderId
|
|
69
|
+
? (folderMap?.get(link.folderId) ?? link.folderId.slice(0, 8))
|
|
70
|
+
: "";
|
|
71
|
+
const folder = folderName.padEnd(16);
|
|
72
|
+
return `${id} ${slug} ${url} ${folder} ${clicks} ${created}`;
|
|
73
|
+
}
|
|
74
|
+
return `${id} ${slug} ${url} ${clicks} ${created}`;
|
|
75
|
+
});
|
|
76
|
+
return [header, separator, ...rows].join("\n");
|
|
77
|
+
}
|
|
78
|
+
// Default compact mode with truncation
|
|
79
|
+
const header = showFolders
|
|
80
|
+
? "ID SLUG URL FOLDER CLICKS CREATED"
|
|
81
|
+
: "ID SLUG URL CLICKS CREATED";
|
|
53
82
|
const separator = "─".repeat(header.length);
|
|
54
83
|
const rows = links.map((link) => {
|
|
55
84
|
const id = String(link.id).padEnd(6);
|
|
@@ -57,6 +86,13 @@ export function formatLinksTable(links) {
|
|
|
57
86
|
const url = truncate(link.originalUrl, 32).padEnd(32);
|
|
58
87
|
const clicks = String(link.clicks).padEnd(7);
|
|
59
88
|
const created = formatDate(link.createdAt);
|
|
89
|
+
if (showFolders) {
|
|
90
|
+
const folderName = link.folderId
|
|
91
|
+
? (folderMap?.get(link.folderId) ?? link.folderId.slice(0, 8))
|
|
92
|
+
: "";
|
|
93
|
+
const folder = truncate(folderName, 12).padEnd(12);
|
|
94
|
+
return `${id} ${slug} ${url} ${folder} ${clicks} ${created}`;
|
|
95
|
+
}
|
|
60
96
|
return `${id} ${slug} ${url} ${clicks} ${created}`;
|
|
61
97
|
});
|
|
62
98
|
return [header, separator, ...rows].join("\n");
|
|
@@ -72,8 +108,10 @@ export function formatLinksMinimal(links) {
|
|
|
72
108
|
}
|
|
73
109
|
/**
|
|
74
110
|
* Format a single link for detailed display
|
|
111
|
+
* @param link - The link to format
|
|
112
|
+
* @param folderName - Optional folder name (if not provided, shows folder ID)
|
|
75
113
|
*/
|
|
76
|
-
export function formatLinkDetail(link) {
|
|
114
|
+
export function formatLinkDetail(link, folderName) {
|
|
77
115
|
const lines = [
|
|
78
116
|
`Link #${link.id}`,
|
|
79
117
|
"",
|
|
@@ -83,7 +121,8 @@ export function formatLinkDetail(link) {
|
|
|
83
121
|
` Clicks: ${link.clicks}`,
|
|
84
122
|
];
|
|
85
123
|
if (link.folderId) {
|
|
86
|
-
|
|
124
|
+
const folderDisplay = folderName ?? link.folderId;
|
|
125
|
+
lines.push(` Folder: ${folderDisplay}`);
|
|
87
126
|
}
|
|
88
127
|
if (link.note) {
|
|
89
128
|
lines.push(` Note: ${link.note}`);
|
|
@@ -109,14 +148,15 @@ export function formatFoldersTable(folders) {
|
|
|
109
148
|
if (folders.length === 0) {
|
|
110
149
|
return "No folders found.";
|
|
111
150
|
}
|
|
112
|
-
const header = "ID NAME ICON CREATED";
|
|
151
|
+
const header = "ID NAME LINKS ICON CREATED";
|
|
113
152
|
const separator = "─".repeat(header.length);
|
|
114
153
|
const rows = folders.map((folder) => {
|
|
115
154
|
const id = folder.id.padEnd(36);
|
|
116
155
|
const name = truncate(folder.name, 18).padEnd(18);
|
|
156
|
+
const links = String(folder.linkCount).padEnd(6);
|
|
117
157
|
const icon = truncate(folder.icon, 8).padEnd(8);
|
|
118
158
|
const created = formatDate(folder.createdAt);
|
|
119
|
-
return `${id} ${name} ${icon} ${created}`;
|
|
159
|
+
return `${id} ${name} ${links} ${icon} ${created}`;
|
|
120
160
|
});
|
|
121
161
|
return [header, separator, ...rows].join("\n");
|
|
122
162
|
}
|
|
@@ -138,4 +178,52 @@ export function formatTagsTable(tags) {
|
|
|
138
178
|
});
|
|
139
179
|
return [header, separator, ...rows].join("\n");
|
|
140
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Resolve a folder name to folder ID via API.
|
|
183
|
+
* If input looks like a UUID, use it directly.
|
|
184
|
+
* Returns null if folder is not found (with error message printed).
|
|
185
|
+
*/
|
|
186
|
+
export async function resolveFolderName(client, input) {
|
|
187
|
+
// Check if input looks like a UUID (36 chars with dashes)
|
|
188
|
+
const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
189
|
+
if (uuidPattern.test(input)) {
|
|
190
|
+
return input; // Assume it's already an ID
|
|
191
|
+
}
|
|
192
|
+
// Otherwise, resolve by name
|
|
193
|
+
const { folders } = await client.listFolders();
|
|
194
|
+
const matches = folders.filter((f) => f.name.toLowerCase() === input.toLowerCase());
|
|
195
|
+
if (matches.length === 0) {
|
|
196
|
+
console.log(pc.red(`Folder not found: ${input}`));
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
if (matches.length > 1) {
|
|
200
|
+
console.log(pc.red(`Multiple folders match "${input}". Please use the folder ID instead.`));
|
|
201
|
+
console.log(pc.dim("Use `zhe folders` to see all folder IDs."));
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
return matches[0].id;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Resolve a tag name to tag ID via API.
|
|
208
|
+
* If input looks like a UUID, use it directly.
|
|
209
|
+
* Returns null if tag is not found (with error message printed).
|
|
210
|
+
*/
|
|
211
|
+
export async function resolveTagName(client, input) {
|
|
212
|
+
// Check if input looks like a UUID
|
|
213
|
+
const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
214
|
+
if (uuidPattern.test(input)) {
|
|
215
|
+
return input;
|
|
216
|
+
}
|
|
217
|
+
const { tags } = await client.listTags();
|
|
218
|
+
const matches = tags.filter((t) => t.name.toLowerCase() === input.toLowerCase());
|
|
219
|
+
if (matches.length === 0) {
|
|
220
|
+
console.log(pc.red(`Tag not found: ${input}. Create it first.`));
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
if (matches.length > 1) {
|
|
224
|
+
console.log(pc.red(`Multiple tags match "${input}". Please use the tag ID or rename duplicates.`));
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
return matches[0].id;
|
|
228
|
+
}
|
|
141
229
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAIrC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACxC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,GAAG,MAAM,MAAM,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IACjD,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAiB;IACtD,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC;AAUD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC/B,KAAa,EACb,UAAmC,EAAE;IAErC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IAED,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,IAAI,EAAE,CAAC;QACV,2BAA2B;QAC3B,MAAM,MAAM,GAAG,WAAW;YACzB,CAAC,CAAC,+GAA+G;YACjH,CAAC,CAAC,8FAA8F,CAAC;QAClG,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,WAAW,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;oBAC/B,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,EAAE,CAAC;gBACN,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrC,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9D,CAAC;YACD,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,WAAW;QACzB,CAAC,CAAC,kFAAkF;QACpF,CAAC,CAAC,qEAAqE,CAAC;IACzE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;gBAC/B,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnD,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,UAAmB;IAC/D,MAAM,KAAK,GAAG;QACb,SAAS,IAAI,CAAC,EAAE,EAAE;QAClB,EAAE;QACF,mBAAmB,IAAI,CAAC,QAAQ,EAAE;QAClC,mBAAmB,IAAI,CAAC,WAAW,EAAE;QACrC,mBAAmB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;QACjE,mBAAmB,IAAI,CAAC,MAAM,EAAE;KAChC,CAAC;IAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CACT,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9E,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEhE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAiB;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GACX,iFAAiF,CAAC;IACnF,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAW;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GACX,0EAA0E,CAAC;IAC5E,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,MAAiB,EACjB,KAAa;IAEb,0DAA0D;IAC1D,MAAM,WAAW,GAChB,iEAAiE,CAAC;IACnE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,CAAC,4BAA4B;IAC3C,CAAC;IAED,6BAA6B;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAC3D,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACV,EAAE,CAAC,GAAG,CACL,2BAA2B,KAAK,sCAAsC,CACtE,CACD,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,MAAiB,EACjB,KAAa;IAEb,mCAAmC;IACnC,MAAM,WAAW,GAChB,iEAAiE,CAAC;IACnE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAC1B,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CACxD,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACV,EAAE,CAAC,GAAG,CACL,wBAAwB,KAAK,gDAAgD,CAC7E,CACD,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,CAAC"}
|