@wirecat/cli-base 0.31.0 → 0.31.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/result-fields.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const fieldsOf: (value: string) => string[];
|
|
2
|
-
/** Projects
|
|
2
|
+
/** Projects payload paths through objects and arrays, retaining result coverage and continuation. */
|
|
3
3
|
export declare const projectFields: (value: unknown, fields: readonly string[]) => unknown;
|
|
4
4
|
//# sourceMappingURL=result-fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-fields.d.ts","sourceRoot":"","sources":["../src/result-fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"result-fields.d.ts","sourceRoot":"","sources":["../src/result-fields.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,MAAM,EAI9C,CAAA;AA6DD,qGAAqG;AACrG,eAAO,MAAM,aAAa,UAAW,OAAO,UAAU,SAAS,MAAM,EAAE,KAAG,OAGzE,CAAA"}
|
package/dist/result-fields.js
CHANGED
|
@@ -6,7 +6,7 @@ const validate = (paths) => {
|
|
|
6
6
|
paths.some((path) => path.length > 256 ||
|
|
7
7
|
!/^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z][A-Za-z0-9_]*)*$/.test(path) ||
|
|
8
8
|
path.split(".").some((part) => forbidden.has(part))))
|
|
9
|
-
throw new CliError("validation_error", "
|
|
9
|
+
throw new CliError("validation_error", "field selection takes comma-separated field paths, for example id,source.title");
|
|
10
10
|
};
|
|
11
11
|
export const fieldsOf = (value) => {
|
|
12
12
|
const paths = value.split(",").map((one) => one.trim());
|
|
@@ -14,42 +14,66 @@ export const fieldsOf = (value) => {
|
|
|
14
14
|
return [...new Set(paths)];
|
|
15
15
|
};
|
|
16
16
|
const object = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
17
|
-
const
|
|
17
|
+
const retained = new Set(["operation_id", "page", "next", "missing", "meta", "coverage"]);
|
|
18
|
+
const itemPaths = (paths) => paths.map((path) => (path.startsWith("items.") ? path.slice(6) : path));
|
|
19
|
+
const select = (value, paths) => {
|
|
20
|
+
if (Array.isArray(value))
|
|
21
|
+
return value.map((item) => select(item, paths));
|
|
18
22
|
if (!object(value))
|
|
19
23
|
return value;
|
|
20
|
-
const fields = item ? paths.map((path) => (path.startsWith("items.") ? path.slice(6) : path)) : paths;
|
|
21
24
|
const result = {};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (!object(found) || !Object.hasOwn(found, part)) {
|
|
27
|
-
found = undefined;
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
found = found[part];
|
|
31
|
-
}
|
|
32
|
-
if (found === undefined)
|
|
25
|
+
const groups = new Map();
|
|
26
|
+
for (const path of paths) {
|
|
27
|
+
const [key, ...rest] = path.split(".");
|
|
28
|
+
if (!key)
|
|
33
29
|
continue;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
const children = groups.get(key) ?? [];
|
|
31
|
+
children.push(rest.join("."));
|
|
32
|
+
groups.set(key, children);
|
|
33
|
+
}
|
|
34
|
+
for (const [key, children] of groups) {
|
|
35
|
+
if (!Object.hasOwn(value, key) || value[key] === undefined)
|
|
36
|
+
continue;
|
|
37
|
+
const found = value[key];
|
|
38
|
+
if (children.includes(""))
|
|
39
|
+
result[key] = found;
|
|
40
|
+
else if (object(found) || Array.isArray(found)) {
|
|
41
|
+
const selected = select(found, children);
|
|
42
|
+
if (Array.isArray(selected) || (object(selected) && Object.keys(selected).length > 0))
|
|
43
|
+
result[key] = selected;
|
|
39
44
|
}
|
|
40
|
-
target[parts.at(-1)] = found;
|
|
41
45
|
}
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
for (const key of retained)
|
|
47
|
+
if (Object.hasOwn(value, key))
|
|
48
|
+
result[key] = value[key];
|
|
44
49
|
return result;
|
|
45
50
|
};
|
|
46
|
-
|
|
47
|
-
export const projectFields = (value, fields) => {
|
|
48
|
-
validate(fields);
|
|
51
|
+
const project = (value, fields) => {
|
|
49
52
|
if (Array.isArray(value))
|
|
50
|
-
return value.map((item) => select(item, fields
|
|
53
|
+
return value.map((item) => select(item, itemPaths(fields)));
|
|
54
|
+
if (object(value) &&
|
|
55
|
+
Object.hasOwn(value, "type") &&
|
|
56
|
+
value.type === "item" &&
|
|
57
|
+
Object.hasOwn(value, "data") &&
|
|
58
|
+
Object.keys(value).every((key) => ["type", "data"].includes(key)))
|
|
59
|
+
return { ...value, data: project(value.data, fields) };
|
|
60
|
+
if (object(value) &&
|
|
61
|
+
Object.hasOwn(value, "type") &&
|
|
62
|
+
value.type === "end" &&
|
|
63
|
+
Object.hasOwn(value, "complete") &&
|
|
64
|
+
typeof value.complete === "boolean")
|
|
65
|
+
return value;
|
|
66
|
+
if (object(value) &&
|
|
67
|
+
Object.hasOwn(value, "item") &&
|
|
68
|
+
(Object.hasOwn(value, "meta") || Object.keys(value).every((key) => ["item", "next", "missing"].includes(key))))
|
|
69
|
+
return { ...value, item: project(value.item, fields) };
|
|
51
70
|
if (object(value) && Array.isArray(value.items))
|
|
52
|
-
return { ...value, items: value.items.map((item) => select(item, fields
|
|
53
|
-
return select(value,
|
|
71
|
+
return { ...value, items: value.items.map((item) => select(item, itemPaths(fields))) };
|
|
72
|
+
return select(value, object(value) && !Object.hasOwn(value, "items") ? itemPaths(fields) : fields);
|
|
73
|
+
};
|
|
74
|
+
/** Projects payload paths through objects and arrays, retaining result coverage and continuation. */
|
|
75
|
+
export const projectFields = (value, fields) => {
|
|
76
|
+
validate(fields);
|
|
77
|
+
return project(value, fields);
|
|
54
78
|
};
|
|
55
79
|
//# sourceMappingURL=result-fields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-fields.js","sourceRoot":"","sources":["../src/result-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;AACpE,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAQ,EAAE;IAClD,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,MAAM,GAAG,GAAG;QAClB,KAAK,CAAC,IAAI,CACR,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,MAAM,GAAG,GAAG;YACjB,CAAC,qDAAqD,CAAC,IAAI,CAAC,IAAI,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACtD;QAED,MAAM,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"result-fields.js","sourceRoot":"","sources":["../src/result-fields.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/cli-base",
|
|
3
|
-
"version": "0.31.
|
|
3
|
+
"version": "0.31.1",
|
|
4
4
|
"description": "The parts every command line tool needs: output modes, terminal rendering, error model, exit codes, credentials, clocks",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Viacheslav Ptsarev",
|