@wirecat/drive-cli 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-contract.d.ts +1 -0
- package/dist/api-contract.d.ts.map +1 -1
- package/dist/api-contract.js +9 -1
- package/dist/api-contract.js.map +1 -1
- package/dist/{catalog-commands.d.ts → commands/catalog.d.ts} +2 -2
- package/dist/commands/catalog.d.ts.map +1 -0
- package/dist/{catalog-commands.js → commands/catalog.js} +11 -14
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/config.d.ts +5 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +81 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/context.d.ts +38 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +14 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/discovery.d.ts +5 -0
- package/dist/commands/discovery.d.ts.map +1 -0
- package/dist/commands/discovery.js +27 -0
- package/dist/commands/discovery.js.map +1 -0
- package/dist/commands/documents.d.ts +10 -0
- package/dist/commands/documents.d.ts.map +1 -0
- package/dist/commands/documents.js +89 -0
- package/dist/commands/documents.js.map +1 -0
- package/dist/commands/folders.d.ts +4 -0
- package/dist/commands/folders.d.ts.map +1 -0
- package/dist/commands/folders.js +44 -0
- package/dist/commands/folders.js.map +1 -0
- package/dist/{knowledge-commands.d.ts → commands/knowledge.d.ts} +4 -4
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/{knowledge-commands.js → commands/knowledge.js} +35 -54
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/mcp.d.ts +4 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +18 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/{remote-commands.d.ts → commands/remote.d.ts} +2 -2
- package/dist/commands/remote.d.ts.map +1 -0
- package/dist/{remote-commands.js → commands/remote.js} +46 -69
- package/dist/commands/remote.js.map +1 -0
- package/dist/commands/search.d.ts +4 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +20 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/session.d.ts +4 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +59 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/sheets-structure.d.ts +4 -0
- package/dist/commands/sheets-structure.d.ts.map +1 -0
- package/dist/commands/sheets-structure.js +112 -0
- package/dist/commands/sheets-structure.js.map +1 -0
- package/dist/commands/sheets.d.ts +4 -0
- package/dist/commands/sheets.d.ts.map +1 -0
- package/dist/commands/sheets.js +102 -0
- package/dist/commands/sheets.js.map +1 -0
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +50 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/config-upgrade.d.ts.map +1 -1
- package/dist/config-upgrade.js +10 -7
- package/dist/config-upgrade.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +48 -11
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -1
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +5 -0
- package/dist/failure.js.map +1 -1
- package/dist/generated/definitions.d.ts.map +1 -1
- package/dist/generated/definitions.js +7310 -0
- package/dist/generated/definitions.js.map +1 -1
- package/dist/generated/manifest.d.ts.map +1 -1
- package/dist/generated/manifest.js +1923 -0
- package/dist/generated/manifest.js.map +1 -1
- package/dist/generated/metadata.d.ts +17 -0
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +91 -0
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/schemas.d.ts +546 -0
- package/dist/generated/schemas.d.ts.map +1 -1
- package/dist/generated/schemas.js +2117 -0
- package/dist/generated/schemas.js.map +1 -1
- package/dist/generated/types.d.ts +2814 -0
- package/dist/generated/types.d.ts.map +1 -1
- package/dist/google-api.d.ts.map +1 -1
- package/dist/google-api.js +16 -3
- package/dist/google-api.js.map +1 -1
- package/dist/google.js +4 -3
- package/dist/google.js.map +1 -1
- package/dist/knowledge.js +6 -6
- package/dist/knowledge.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +6 -3
- package/dist/mcp.js.map +1 -1
- package/dist/policy.d.ts +1 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +58 -8
- package/dist/policy.js.map +1 -1
- package/dist/program.d.ts +2 -19
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +58 -427
- package/dist/program.js.map +1 -1
- package/dist/registry.d.ts +4 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +3 -0
- package/dist/registry.js.map +1 -1
- package/dist/sheets-input.d.ts +17 -0
- package/dist/sheets-input.d.ts.map +1 -0
- package/dist/sheets-input.js +32 -0
- package/dist/sheets-input.js.map +1 -0
- package/dist/store.js +1 -1
- package/dist/store.js.map +1 -1
- package/package.json +5 -4
- package/dist/catalog-commands.d.ts.map +0 -1
- package/dist/catalog-commands.js.map +0 -1
- package/dist/knowledge-commands.d.ts.map +0 -1
- package/dist/knowledge-commands.js.map +0 -1
- package/dist/remote-commands.d.ts.map +0 -1
- package/dist/remote-commands.js.map +0 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { itemOf, LOCAL_READ, LOCAL_WRITE, REMOTE_WRITE } from "@wirecat/cli-core/cli";
|
|
4
|
+
import { activeProfile, application, readConfig, writeConfig } from "../config.js";
|
|
5
|
+
import { login } from "../login.js";
|
|
6
|
+
import { examples } from "../registry.js";
|
|
7
|
+
import { credentials } from "../tokens.js";
|
|
8
|
+
const GRANTS = ["write", "activity", "apps"];
|
|
9
|
+
const grants = (raw) => {
|
|
10
|
+
const values = raw.split(",").map((value) => value.trim());
|
|
11
|
+
const unknown = values.filter((value) => !GRANTS.includes(value));
|
|
12
|
+
if (unknown.length)
|
|
13
|
+
throw new CliError("validation_error", `--grant takes ${GRANTS.join(", ")}; got ${unknown.join(", ")}`);
|
|
14
|
+
return new Set(values);
|
|
15
|
+
};
|
|
16
|
+
export const installSessionCommands = (program, context) => {
|
|
17
|
+
const { env, streams, options, selected, output } = context;
|
|
18
|
+
const session = annotate(program.command("session"), { effects: LOCAL_READ }).description("sign in to Google and manage local profiles");
|
|
19
|
+
examples(annotate(session.command("start"), { effects: REMOTE_WRITE }).description("sign in to Google in the browser; read-only unless you pass --grant write"), ["drive personal session start", "drive work session start --grant write,activity"])
|
|
20
|
+
.option("--client-file <file>", "path to your own Desktop OAuth client JSON, used instead of WireCat's")
|
|
21
|
+
.option("--credential-storage <storage>", "where the sign-in is kept: keyring, or file for a private file", "keyring")
|
|
22
|
+
.option("--no-browser", "print the sign-in URL instead of opening a browser")
|
|
23
|
+
.option("--grant <scopes>", "also ask for these permissions, comma-separated: write (change Drive files and Docs), " +
|
|
24
|
+
"activity (read Drive Activity history), apps (see installed Drive apps)", grants)
|
|
25
|
+
.action(async (args) => {
|
|
26
|
+
if (args.credentialStorage !== "keyring" && args.credentialStorage !== "file")
|
|
27
|
+
throw new CliError("validation_error", "credential storage is keyring or file");
|
|
28
|
+
const signal = context.signal();
|
|
29
|
+
output(itemOf(await login({
|
|
30
|
+
env,
|
|
31
|
+
profile: selected(),
|
|
32
|
+
application: application(env, args.clientFile),
|
|
33
|
+
storage: args.credentialStorage,
|
|
34
|
+
...Object.fromEntries([...(args.grant ?? [])].map((grant) => [grant, true])),
|
|
35
|
+
...(options.keyring ? { keyring: options.keyring } : {}),
|
|
36
|
+
...(signal ? { signal } : {}),
|
|
37
|
+
openBrowser: args.browser ? (options.openBrowser ?? (async () => { })) : async () => { },
|
|
38
|
+
showUrl: (url) => streams.diagnostic(`Open Google sign-in: ${url}\n`),
|
|
39
|
+
})));
|
|
40
|
+
});
|
|
41
|
+
examples(annotate(session.command("list"), { effects: LOCAL_READ }).description("list the configured profiles; credentials are never printed"), ["drive personal session list"]).action(() => output(itemOf({
|
|
42
|
+
scope: "all-configured-profiles",
|
|
43
|
+
items: Object.entries(readConfig(env).profiles).map(([name, p]) => ({
|
|
44
|
+
profile: name,
|
|
45
|
+
selected_folders: p.roots.length,
|
|
46
|
+
storage: p.storage,
|
|
47
|
+
})),
|
|
48
|
+
})));
|
|
49
|
+
examples(annotate(session.command("end"), { effects: LOCAL_WRITE }).description("sign this profile out; imported documents stay"), ["drive personal session end"]).action(() => {
|
|
50
|
+
const name = selected();
|
|
51
|
+
const config = readConfig(env);
|
|
52
|
+
const profile = activeProfile(env, name);
|
|
53
|
+
credentials(env, profile.storage, options.keyring).remove(name);
|
|
54
|
+
// Preserve the principal and roots so reauthorization resumes the same source identities.
|
|
55
|
+
writeConfig(env, config);
|
|
56
|
+
output(itemOf({ profile: name, signed_out: true, cached_data: "retained" }));
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { RemoteCommands } from "./remote.js";
|
|
3
|
+
export declare const installSheetsStructureCommands: (group: Command, { call, output }: Pick<RemoteCommands, "call" | "output">) => void;
|
|
4
|
+
//# sourceMappingURL=sheets-structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheets-structure.d.ts","sourceRoot":"","sources":["../../src/commands/sheets-structure.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAkDjD,eAAO,MAAM,8BAA8B,UAClC,OAAO,oBACI,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAAC,SAuE1D,CAAA"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { itemOf } from "@wirecat/cli-core/cli";
|
|
4
|
+
import { jsonObject } from "../api-contract.js";
|
|
5
|
+
import { fileId } from "../config.js";
|
|
6
|
+
import { examples, GOOGLE_WRITE } from "../registry.js";
|
|
7
|
+
import { cellRectangle } from "../sheets-input.js";
|
|
8
|
+
const integer = (name, raw, maximum, minimum = 0) => {
|
|
9
|
+
if (!/^\d+$/.test(raw) || !Number.isSafeInteger(Number(raw)) || Number(raw) < minimum || Number(raw) > maximum)
|
|
10
|
+
throw new CliError("validation_error", `${name} must be an integer from ${minimum} to ${maximum}`);
|
|
11
|
+
return Number(raw);
|
|
12
|
+
};
|
|
13
|
+
const sheetId = (raw) => integer("sheet-id", raw, 2147483647);
|
|
14
|
+
const title = (raw) => {
|
|
15
|
+
if (!raw.trim() || raw.length > 100)
|
|
16
|
+
throw new CliError("validation_error", "title must contain 1 to 100 characters");
|
|
17
|
+
return raw;
|
|
18
|
+
};
|
|
19
|
+
const color = (prefix) => ["red", "green", "blue", "alpha"].map((key) => `${prefix}.${key}`);
|
|
20
|
+
const FORMAT_PATHS = new Set([
|
|
21
|
+
...color("backgroundColor"),
|
|
22
|
+
...color("backgroundColorStyle.rgbColor"),
|
|
23
|
+
"backgroundColorStyle.themeColor",
|
|
24
|
+
"horizontalAlignment",
|
|
25
|
+
"verticalAlignment",
|
|
26
|
+
"wrapStrategy",
|
|
27
|
+
"numberFormat.type",
|
|
28
|
+
"numberFormat.pattern",
|
|
29
|
+
"textFormat.bold",
|
|
30
|
+
"textFormat.italic",
|
|
31
|
+
"textFormat.underline",
|
|
32
|
+
"textFormat.strikethrough",
|
|
33
|
+
"textFormat.fontFamily",
|
|
34
|
+
"textFormat.fontSize",
|
|
35
|
+
...color("textFormat.foregroundColor"),
|
|
36
|
+
...color("textFormat.foregroundColorStyle.rgbColor"),
|
|
37
|
+
"textFormat.foregroundColorStyle.themeColor",
|
|
38
|
+
]);
|
|
39
|
+
const formatFields = (body, prefix = "") => {
|
|
40
|
+
const paths = [];
|
|
41
|
+
if (!Object.keys(body).length)
|
|
42
|
+
throw new CliError("validation_error", "--body must set at least one formatting field");
|
|
43
|
+
for (const [key, value] of Object.entries(body)) {
|
|
44
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
45
|
+
if (FORMAT_PATHS.has(path)) {
|
|
46
|
+
paths.push(`userEnteredFormat.${path}`);
|
|
47
|
+
}
|
|
48
|
+
else if ([...FORMAT_PATHS].some((candidate) => candidate.startsWith(`${path}.`)) &&
|
|
49
|
+
value &&
|
|
50
|
+
typeof value === "object" &&
|
|
51
|
+
!Array.isArray(value)) {
|
|
52
|
+
for (const field of formatFields(value, path))
|
|
53
|
+
paths.push(field);
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
throw new CliError("validation_error", "--body contains an unsupported formatting field or shape");
|
|
57
|
+
}
|
|
58
|
+
return paths;
|
|
59
|
+
};
|
|
60
|
+
export const installSheetsStructureCommands = (group, { call, output }) => {
|
|
61
|
+
const batch = async (spreadsheet, request) => output(itemOf(await call("sheets.spreadsheets.batchUpdate", { spreadsheetId: fileId(spreadsheet) }, { requests: [request] })));
|
|
62
|
+
examples(annotate(group.command("create"), { effects: GOOGLE_WRITE })
|
|
63
|
+
.description("create an empty tab inside an existing spreadsheet")
|
|
64
|
+
.argument("<spreadsheet>", "spreadsheet ID or Google Sheets URL")
|
|
65
|
+
.argument("<title>", "name of the new tab", title), ['drive personal sheets create SHEET_ID "Quarter 2"']).action(async (spreadsheet, name) => batch(spreadsheet, { addSheet: { properties: { title: name } } }));
|
|
66
|
+
examples(annotate(group.command("rename"), { effects: GOOGLE_WRITE })
|
|
67
|
+
.description("rename one tab while preserving its ID and other properties")
|
|
68
|
+
.argument("<spreadsheet>", "spreadsheet ID or Google Sheets URL")
|
|
69
|
+
.argument("<sheet-id>", "numeric tab ID from sheets info", sheetId)
|
|
70
|
+
.argument("<title>", "new tab name", title), ['drive personal sheets rename SHEET_ID 0 "Quarter 2"']).action(async (spreadsheet, id, name) => batch(spreadsheet, {
|
|
71
|
+
updateSheetProperties: { properties: { sheetId: id, title: name }, fields: "title" },
|
|
72
|
+
}));
|
|
73
|
+
examples(annotate(group.command("insert"), { effects: GOOGLE_WRITE })
|
|
74
|
+
.description("insert bounded rows or columns before a zero-based index")
|
|
75
|
+
.argument("<spreadsheet>", "spreadsheet ID or Google Sheets URL")
|
|
76
|
+
.argument("<sheet-id>", "numeric tab ID from sheets info", sheetId)
|
|
77
|
+
.argument("<axis>", "rows or columns", (raw) => {
|
|
78
|
+
if (raw !== "rows" && raw !== "columns")
|
|
79
|
+
throw new CliError("validation_error", "axis must be rows or columns");
|
|
80
|
+
return raw;
|
|
81
|
+
})
|
|
82
|
+
.argument("<index>", "zero-based index to insert before", (raw) => integer("index", raw, 9999999))
|
|
83
|
+
.argument("<count>", "number to insert, from 1 to 1000", (raw) => integer("count", raw, 1000, 1)), ["drive personal sheets insert SHEET_ID 0 rows 1 3"]).action(async (spreadsheet, id, axis, index, count) => {
|
|
84
|
+
if (index + count > (axis === "rows" ? 10000000 : 18278))
|
|
85
|
+
throw new CliError("validation_error", "index and count exceed the dimension bound");
|
|
86
|
+
return batch(spreadsheet, {
|
|
87
|
+
insertDimension: {
|
|
88
|
+
range: { sheetId: id, dimension: axis.toUpperCase(), startIndex: index, endIndex: index + count },
|
|
89
|
+
inheritFromBefore: false,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
examples(annotate(group.command("format"), { effects: GOOGLE_WRITE })
|
|
94
|
+
.description("change only supplied formatting fields in at most 10000 cells")
|
|
95
|
+
.argument("<spreadsheet>", "spreadsheet ID or Google Sheets URL")
|
|
96
|
+
.argument("<sheet-id>", "numeric tab ID from sheets info", sheetId)
|
|
97
|
+
.argument("<range>", "finite cells within that tab, such as A1:C4; no tab prefix"), [`drive personal sheets format SHEET_ID 0 A1:C1 --body '{"textFormat":{"bold":true}}'`])
|
|
98
|
+
.requiredOption("--body <json>", "supported CellFormat fields as JSON; values and formulas are refused", jsonObject)
|
|
99
|
+
.action(async (spreadsheet, id, range, args) => {
|
|
100
|
+
const { rows, columns, ...bounds } = cellRectangle(range);
|
|
101
|
+
if (rows * columns > 10000)
|
|
102
|
+
throw new CliError("validation_error", "format range is limited to 10000 cells");
|
|
103
|
+
return batch(spreadsheet, {
|
|
104
|
+
repeatCell: {
|
|
105
|
+
range: { sheetId: id, ...bounds },
|
|
106
|
+
cell: { userEnteredFormat: args.body },
|
|
107
|
+
fields: formatFields(args.body).join(","),
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=sheets-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheets-structure.js","sourceRoot":"","sources":["../../src/commands/sheets-structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheets.d.ts","sourceRoot":"","sources":["../../src/commands/sheets.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAA;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AA2DjD,eAAO,MAAM,qBAAqB,YAAa,OAAO,oBAAoB,cAAc,SAwGvF,CAAA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { apiPlainJson, itemOf, parseApiJson } from "@wirecat/cli-core/cli";
|
|
4
|
+
import { Option } from "commander";
|
|
5
|
+
import { fileId } from "../config.js";
|
|
6
|
+
import { examples, GOOGLE_READ, GOOGLE_WRITE } from "../registry.js";
|
|
7
|
+
import { namedRectangle } from "../sheets-input.js";
|
|
8
|
+
import { installSheetsStructureCommands } from "./sheets-structure.js";
|
|
9
|
+
const values = (text) => {
|
|
10
|
+
const parsed = parseApiJson(text);
|
|
11
|
+
const native = JSON.parse(text);
|
|
12
|
+
if (Array.isArray(native) &&
|
|
13
|
+
native.some((row) => Array.isArray(row) &&
|
|
14
|
+
row.some((cell) => typeof cell === "number" &&
|
|
15
|
+
(!Number.isFinite(cell) || (Number.isInteger(cell) && !Number.isSafeInteger(cell))))))
|
|
16
|
+
throw new CliError("validation_error", "--values numbers must be finite and integer values must be safe; quote large identifiers as strings");
|
|
17
|
+
const result = apiPlainJson(parsed);
|
|
18
|
+
if (Array.isArray(native) &&
|
|
19
|
+
Array.isArray(result) &&
|
|
20
|
+
native.some((row, index) => Array.isArray(row) &&
|
|
21
|
+
row.some((cell, column) => typeof cell === "number" && typeof result[index]?.[column] !== "number")))
|
|
22
|
+
throw new CliError("validation_error", "--values numeric precision is unsafe; quote precise values as strings");
|
|
23
|
+
if (!Array.isArray(result) ||
|
|
24
|
+
!result.length ||
|
|
25
|
+
result.length > 10000 ||
|
|
26
|
+
result.some((row) => !Array.isArray(row) ||
|
|
27
|
+
!row.length ||
|
|
28
|
+
row.some((cell) => cell !== null &&
|
|
29
|
+
typeof cell !== "string" &&
|
|
30
|
+
typeof cell !== "boolean" &&
|
|
31
|
+
(typeof cell !== "number" || !Number.isFinite(cell)))))
|
|
32
|
+
throw new CliError("validation_error", "--values must be a nonempty JSON array of rows containing strings, numbers, booleans or null");
|
|
33
|
+
if (result.reduce((sum, row) => sum + row.length, 0) > 10000)
|
|
34
|
+
throw new CliError("validation_error", "--values is limited to 10000 cells per call");
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
export const installSheetsCommands = (program, { call, output }) => {
|
|
38
|
+
const group = annotate(program.command("sheets"), { effects: GOOGLE_READ }).description("read spreadsheet tabs and ranges, or change cells live in Google Sheets");
|
|
39
|
+
installSheetsStructureCommands(group, { call, output });
|
|
40
|
+
const sheetArg = "spreadsheet ID or Google Sheets URL";
|
|
41
|
+
examples(annotate(group.command("info"), { effects: GOOGLE_READ })
|
|
42
|
+
.description("list spreadsheet properties and tabs without downloading grid data")
|
|
43
|
+
.argument("<spreadsheet>", sheetArg), ["drive personal sheets info SHEET_ID"]).action(async (id) => output(itemOf(await call("sheets.spreadsheets.get", {
|
|
44
|
+
spreadsheetId: fileId(id),
|
|
45
|
+
fields: "spreadsheetId,spreadsheetUrl,properties,sheets.properties",
|
|
46
|
+
includeGridData: false,
|
|
47
|
+
}))));
|
|
48
|
+
examples(annotate(group.command("show"), { effects: GOOGLE_READ })
|
|
49
|
+
.description("read a live A1 range; choose formatted values, raw values or formulas")
|
|
50
|
+
.argument("<spreadsheet>", sheetArg)
|
|
51
|
+
.argument("<range>", "A1 range, such as Budget!A1:C4"), [
|
|
52
|
+
"drive personal sheets show SHEET_ID 'Budget!A1:C4'",
|
|
53
|
+
"drive personal sheets show SHEET_ID 'Budget!C1:C4' --render formula",
|
|
54
|
+
])
|
|
55
|
+
.addOption(new Option("--render <mode>", "how Google renders cell values")
|
|
56
|
+
.choices(["formatted", "unformatted", "formula"])
|
|
57
|
+
.default("formatted"))
|
|
58
|
+
.action(async (id, range, args) => {
|
|
59
|
+
if (!range.trim())
|
|
60
|
+
throw new CliError("validation_error", "range must not be empty");
|
|
61
|
+
output(itemOf(await call("sheets.spreadsheets.values.get", {
|
|
62
|
+
spreadsheetId: fileId(id),
|
|
63
|
+
range,
|
|
64
|
+
majorDimension: "ROWS",
|
|
65
|
+
valueRenderOption: args.render.toUpperCase() === "FORMULA" ? "FORMULA" : `${args.render.toUpperCase()}_VALUE`,
|
|
66
|
+
})));
|
|
67
|
+
});
|
|
68
|
+
for (const name of ["update", "add"]) {
|
|
69
|
+
examples(annotate(group.command(name), { effects: GOOGLE_WRITE })
|
|
70
|
+
.description(name === "update"
|
|
71
|
+
? "set cells within a finite A1 rectangle; literal values by default"
|
|
72
|
+
: "append rows after Google's detected table within a finite A1 range")
|
|
73
|
+
.argument("<spreadsheet>", sheetArg)
|
|
74
|
+
.argument("<range>", "tab and finite A1 rectangle, such as Budget!A1:C4"), [`drive personal sheets ${name} SHEET_ID 'Budget!A1:B2' --values '[["Item",10]]'`])
|
|
75
|
+
.requiredOption("--values <json>", "JSON rows; null skips a cell and an empty string clears its value", values)
|
|
76
|
+
.addOption(new Option("--input <mode>", "raw literals, or user-entered formulas/numbers using spreadsheet locale")
|
|
77
|
+
.choices(["raw", "user-entered"])
|
|
78
|
+
.default("raw"))
|
|
79
|
+
.action(async (id, range, args) => {
|
|
80
|
+
const bounds = namedRectangle(range);
|
|
81
|
+
if (args.values.some((row) => row.length > bounds.columns) ||
|
|
82
|
+
(name === "update" && args.values.length > bounds.rows))
|
|
83
|
+
throw new CliError("validation_error", "--values exceeds the selected range dimensions");
|
|
84
|
+
output(itemOf(await call(`sheets.spreadsheets.values.${name === "add" ? "append" : name}`, {
|
|
85
|
+
spreadsheetId: fileId(id),
|
|
86
|
+
range,
|
|
87
|
+
valueInputOption: args.input === "raw" ? "RAW" : "USER_ENTERED",
|
|
88
|
+
includeValuesInResponse: true,
|
|
89
|
+
responseValueRenderOption: "UNFORMATTED_VALUE",
|
|
90
|
+
...(name === "add" ? { insertDataOption: "INSERT_ROWS" } : {}),
|
|
91
|
+
}, { majorDimension: "ROWS", values: args.values })));
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
examples(annotate(group.command("clear"), { effects: GOOGLE_WRITE })
|
|
95
|
+
.description("clear cell values in a finite A1 rectangle; formatting remains")
|
|
96
|
+
.argument("<spreadsheet>", sheetArg)
|
|
97
|
+
.argument("<range>", "tab and finite A1 rectangle, such as Budget!A1:C4"), ["drive personal sheets clear SHEET_ID 'Budget!A2:C4'"]).action(async (id, range) => {
|
|
98
|
+
namedRectangle(range);
|
|
99
|
+
output(itemOf(await call("sheets.spreadsheets.values.clear", { spreadsheetId: fileId(id), range }, {})));
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=sheets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheets.js","sourceRoot":"","sources":["../../src/commands/sheets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,cAAc,CAAA;AAE5D,eAAO,MAAM,mBAAmB,YAAa,OAAO,WAAW,cAAc,SAmD5E,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { FETCH, itemOf, LOCAL_READ } from "@wirecat/cli-core/cli";
|
|
4
|
+
import { activeProfile } from "../config.js";
|
|
5
|
+
import { MAX_ENTRIES } from "../google.js";
|
|
6
|
+
import { skipJson } from "../model.js";
|
|
7
|
+
import { examples } from "../registry.js";
|
|
8
|
+
import { readState } from "../state.js";
|
|
9
|
+
import { sync } from "../sync.js";
|
|
10
|
+
import { positive } from "./context.js";
|
|
11
|
+
export const installSyncCommands = (program, context) => {
|
|
12
|
+
const { env, streams, selected, output, source, withIndex } = context;
|
|
13
|
+
examples(annotate(program.command("sync"), { effects: FETCH })
|
|
14
|
+
.summary("import what changed in the chosen folders, and finish an unfinished sync")
|
|
15
|
+
.description("import what changed in the chosen folders, and finish an unfinished sync; " +
|
|
16
|
+
`one sync reads at most ${MAX_ENTRIES} entries under the chosen folders, and as many changes`), ["drive personal sync", "drive personal sync --rescan --limit 500"])
|
|
17
|
+
.option("--limit <n>", "how many documents to read from Google in this run", positive, 200)
|
|
18
|
+
.option("--rescan", "read every chosen folder again instead of only what changed")
|
|
19
|
+
.option("--embed", "also index pending text for meaning search, with a model already downloaded")
|
|
20
|
+
.action(async (args) => {
|
|
21
|
+
const remote = activeProfile(env, selected()).roots.length ? await source() : undefined;
|
|
22
|
+
const result = await withIndex(async (index) => ({
|
|
23
|
+
...(await sync(remote, index, env, selected(), args.limit, context.signal(), args.rescan)),
|
|
24
|
+
...(args.embed ? { embeddings: await index.embed(600) } : {}),
|
|
25
|
+
}));
|
|
26
|
+
output(itemOf(result));
|
|
27
|
+
if (result.errors.length || result.pending)
|
|
28
|
+
streams.diagnostic(`${result.pending} source operations remain; run drive ${selected()} sync again\n`);
|
|
29
|
+
if (result.errors.length)
|
|
30
|
+
throw new CliError("provider_error", "sync completed partially; failed operations remain pending", {
|
|
31
|
+
reason: "sync.partial",
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
examples(annotate(program.command("status"), { effects: LOCAL_READ }).description("show the last sync, imported documents and pending work"), ["drive personal status"]).action(() => {
|
|
35
|
+
const name = selected();
|
|
36
|
+
const profile = activeProfile(env, name);
|
|
37
|
+
const state = readState(env, name, profile.principal);
|
|
38
|
+
output(itemOf({
|
|
39
|
+
profile: name,
|
|
40
|
+
selected_folders: profile.roots,
|
|
41
|
+
documents: Object.keys(state.documents).length,
|
|
42
|
+
pending: state.pending?.jobs.length ?? 0,
|
|
43
|
+
skipped: state.skipped.map(skipJson),
|
|
44
|
+
last_sync: state.lastSync ?? null,
|
|
45
|
+
coverage: "Google Docs/Sheets, PDF/DOCX/XLSX and Markdown/TXT/CSV/TSV; native export layout, tab fidelity and assets are not verified",
|
|
46
|
+
remote_checked: false,
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-upgrade.d.ts","sourceRoot":"","sources":["../src/config-upgrade.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,QAAS,OAAO,YAAY,GAAG,CAAC,MAAM,CAAC;;;
|
|
1
|
+
{"version":3,"file":"config-upgrade.d.ts","sourceRoot":"","sources":["../src/config-upgrade.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,QAAS,OAAO,YAAY,GAAG,CAAC,MAAM,CAAC;;;CAwChE,CAAA"}
|
package/dist/config-upgrade.js
CHANGED
|
@@ -3,7 +3,7 @@ const record = (value) => value !== null && typeof value === "object" && !Array.
|
|
|
3
3
|
// Core now validates current spellings only; Drive still upgrades its previously written files.
|
|
4
4
|
export const upgradeConfig = (raw, settings) => {
|
|
5
5
|
let changed = false;
|
|
6
|
-
const rename = (value, names) => {
|
|
6
|
+
const rename = (value, names, where = "") => {
|
|
7
7
|
if (!record(value))
|
|
8
8
|
return value;
|
|
9
9
|
const result = {};
|
|
@@ -12,25 +12,28 @@ export const upgradeConfig = (raw, settings) => {
|
|
|
12
12
|
const target = names.has(snake) ? snake : key;
|
|
13
13
|
if (target !== key) {
|
|
14
14
|
if (Object.hasOwn(value, target) && JSON.stringify(value[target]) !== JSON.stringify(one))
|
|
15
|
-
throw new CliError("configuration_error",
|
|
15
|
+
throw new CliError("configuration_error", `${where}${key} is the old name of ${where}${target}, and both are set — keep only ${target}`);
|
|
16
16
|
changed = true;
|
|
17
17
|
}
|
|
18
18
|
result[target] = one;
|
|
19
19
|
}
|
|
20
20
|
return result;
|
|
21
21
|
};
|
|
22
|
-
const scope = (value) => {
|
|
23
|
-
const result = rename(value, settings);
|
|
22
|
+
const scope = (value, where) => {
|
|
23
|
+
const result = rename(value, settings, where);
|
|
24
24
|
if (record(result) && record(result.models))
|
|
25
|
-
result.models = Object.fromEntries(Object.entries(result.models).map(([purpose, model]) => [
|
|
25
|
+
result.models = Object.fromEntries(Object.entries(result.models).map(([purpose, model]) => [
|
|
26
|
+
purpose,
|
|
27
|
+
rename(model, new Set(["base_url"]), `${where}models.${purpose}.`),
|
|
28
|
+
]));
|
|
26
29
|
return result;
|
|
27
30
|
};
|
|
28
31
|
const config = rename(raw, new Set(["default_profile"]));
|
|
29
32
|
if (record(config)) {
|
|
30
33
|
if (Object.hasOwn(config, "defaults"))
|
|
31
|
-
config.defaults = scope(config.defaults);
|
|
34
|
+
config.defaults = scope(config.defaults, "defaults.");
|
|
32
35
|
if (record(config.profiles))
|
|
33
|
-
config.profiles = Object.fromEntries(Object.entries(config.profiles).map(([name, value]) => [name, scope(value)]));
|
|
36
|
+
config.profiles = Object.fromEntries(Object.entries(config.profiles).map(([name, value]) => [name, scope(value, `profiles.${name}.`)]));
|
|
34
37
|
}
|
|
35
38
|
return { config, changed };
|
|
36
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-upgrade.js","sourceRoot":"","sources":["../src/config-upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,MAAM,MAAM,GAAG,CAAC,KAAc,EAAoC,EAAE,CAClE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE,gGAAgG;AAChG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAY,EAAE,QAAqB,EAAE,EAAE;IACnE,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,KAAkB,EAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"config-upgrade.js","sourceRoot":"","sources":["../src/config-upgrade.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAU5B,eAAO,MAAM,aAAa,aAAsD,CAAA;AAEhF,eAAO,MAAM,SAAS,QAAS,MAAM,WAIpC,CAAA;AAQD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIvB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,eAAO,MAAM,KAAK,QAAS,MAAM,CAAC,UAAU,sCAAiE,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAU5B,eAAO,MAAM,aAAa,aAAsD,CAAA;AAEhF,eAAO,MAAM,SAAS,QAAS,MAAM,WAIpC,CAAA;AAQD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIvB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,eAAO,MAAM,KAAK,QAAS,MAAM,CAAC,UAAU,sCAAiE,CAAA;AA0B7G,eAAO,MAAM,UAAU,QAAS,MAAM,CAAC,UAAU,KAAG,MAwBnD,CAAA;AACD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,UAAU,MAAM,SAIjE,CAAA;AACD,eAAO,MAAM,WAAW,6BAAoB,CAAA;AAC5C,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,MAUtC,CAAA;AACD,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAOjE,CAAA;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,MAS/C,CAAA;AACD,eAAO,MAAM,SAAS,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAG,MACsC,CAAA;AACvG,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAG,OACnB,CAAA;AAClD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,gBA6BnE,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -34,28 +34,65 @@ export const ConfigSchema = v.strictObject({
|
|
|
34
34
|
default_profile: v.optional(v.string()),
|
|
35
35
|
});
|
|
36
36
|
export const paths = (env) => resolvePaths({ appName: "drive-cli", prefix: "DRIVE", env });
|
|
37
|
+
// Built from the key path and a fixed reason only: valibot's own messages quote the value.
|
|
38
|
+
const problem = (where, issue) => {
|
|
39
|
+
const key = v.getDotPath(issue);
|
|
40
|
+
if (key === null)
|
|
41
|
+
return `${where} has to be a JSON object`;
|
|
42
|
+
if (issue.expected === "never")
|
|
43
|
+
return `${where}: ${key} is not a known setting`;
|
|
44
|
+
if (issue.received === "undefined")
|
|
45
|
+
return `${where}: ${key} is missing`;
|
|
46
|
+
if (issue.path?.at(-1)?.origin === "key")
|
|
47
|
+
return `${where}: ${key} is not an allowed name`;
|
|
48
|
+
return `${where}: ${key} has the wrong type or is out of range`;
|
|
49
|
+
};
|
|
50
|
+
const UNEXPLAINED = "drive configuration is invalid; no configuration values were logged";
|
|
51
|
+
// The loader's message embeds valibot's issue messages, so the file is checked again here.
|
|
52
|
+
const explain = (path, schema) => {
|
|
53
|
+
let raw;
|
|
54
|
+
try {
|
|
55
|
+
raw = JSON.parse(readFileSync(path, "utf8"));
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return new CliError("configuration_error", `${path} is not valid JSON`);
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const issue = v.safeParse(schema, raw).issues?.[0];
|
|
62
|
+
return new CliError("configuration_error", issue ? problem(path, issue) : UNEXPLAINED);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return error instanceof CliError ? error : new CliError("configuration_error", UNEXPLAINED);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
37
68
|
export const readConfig = (env) => {
|
|
69
|
+
const path = join(paths(env).config, "config.json");
|
|
70
|
+
let changed = false;
|
|
71
|
+
const schema = v.pipe(v.unknown(), v.transform((raw) => {
|
|
72
|
+
const upgraded = upgradeConfig(raw, SETTING_NAMES);
|
|
73
|
+
changed = upgraded.changed;
|
|
74
|
+
return upgraded.config;
|
|
75
|
+
}), ConfigSchema);
|
|
76
|
+
let config;
|
|
77
|
+
try {
|
|
78
|
+
config = loadSnakeCaseConfig(path, schema, () => ({ profiles: {} }));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
throw explain(path, schema);
|
|
82
|
+
}
|
|
38
83
|
try {
|
|
39
|
-
const path = join(paths(env).config, "config.json");
|
|
40
|
-
let changed = false;
|
|
41
|
-
const schema = v.pipe(v.unknown(), v.transform((raw) => {
|
|
42
|
-
const upgraded = upgradeConfig(raw, SETTING_NAMES);
|
|
43
|
-
changed = upgraded.changed;
|
|
44
|
-
return upgraded.config;
|
|
45
|
-
}), ConfigSchema);
|
|
46
|
-
const config = loadSnakeCaseConfig(path, schema, () => ({ profiles: {} }));
|
|
47
84
|
if (changed)
|
|
48
85
|
writeSecurely(path, `${JSON.stringify(config, null, 2)}\n`, statSync(path).mode & 0o777);
|
|
49
|
-
return config;
|
|
50
86
|
}
|
|
51
87
|
catch {
|
|
52
|
-
throw new CliError("configuration_error",
|
|
88
|
+
throw new CliError("configuration_error", UNEXPLAINED);
|
|
53
89
|
}
|
|
90
|
+
return config;
|
|
54
91
|
};
|
|
55
92
|
export const writeConfig = (env, config) => {
|
|
56
93
|
const checked = v.safeParse(ConfigSchema, config);
|
|
57
94
|
if (!checked.success)
|
|
58
|
-
throw new CliError("configuration_error", "drive settings
|
|
95
|
+
throw new CliError("configuration_error", problem("drive settings", checked.issues[0]));
|
|
59
96
|
saveConfigFile(join(paths(env).config, "config.json"), checked.output);
|
|
60
97
|
};
|
|
61
98
|
export const profileName = usableProfileName;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAA;AAGxD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAA;AAGxD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,QAuE5C,CAAA"}
|