gws-axi 0.17.0 → 0.19.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/src/commands/docs/tabs.d.ts +13 -0
- package/dist/src/commands/docs/tabs.js +52 -0
- package/dist/src/commands/docs/tabs.js.map +1 -0
- package/dist/src/commands/docs/tabs.test.d.ts +1 -0
- package/dist/src/commands/docs/tabs.test.js +41 -0
- package/dist/src/commands/docs/tabs.test.js.map +1 -0
- package/dist/src/commands/drive/upload.d.ts +2 -1
- package/dist/src/commands/drive/upload.js +96 -18
- package/dist/src/commands/drive/upload.js.map +1 -1
- package/dist/src/commands/drive/upload.test.js +20 -0
- package/dist/src/commands/drive/upload.test.js.map +1 -1
- package/dist/src/commands/sheets/tabs.d.ts +7 -0
- package/dist/src/commands/sheets/tabs.js +34 -0
- package/dist/src/commands/sheets/tabs.js.map +1 -0
- package/dist/src/commands/sheets/tabs.test.d.ts +1 -0
- package/dist/src/commands/sheets/tabs.test.js +34 -0
- package/dist/src/commands/sheets/tabs.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { docs_v1 } from "googleapis";
|
|
2
|
+
export interface TabSummary {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
}
|
|
6
|
+
/** Flatten a tab tree (root tabs + nested `childTabs`) into id/title pairs. */
|
|
7
|
+
export declare function flattenTabSummaries(tabs: docs_v1.Schema$Tab[] | undefined): TabSummary[];
|
|
8
|
+
/**
|
|
9
|
+
* List a Doc's tabs (identity only). Returns `[]` when the API reports no tabs
|
|
10
|
+
* at all — callers treat "unknown" as "not multi-tab" rather than blocking a
|
|
11
|
+
* write on a missing field.
|
|
12
|
+
*/
|
|
13
|
+
export declare function listDocumentTabs(account: string, documentId: string): Promise<TabSummary[]>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { docsClient, translateGoogleError } from "../../google/client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Tab-shape helpers shared across services. `drive upload --update` needs to
|
|
4
|
+
* know whether a Doc target is multi-tab *before* it replaces the content
|
|
5
|
+
* (Drive's import collapses a doc to a single tab), and it needs that answer
|
|
6
|
+
* without paying for the document body.
|
|
7
|
+
*
|
|
8
|
+
* `docs read` keeps its own `flattenTabs` — it builds display rows (index,
|
|
9
|
+
* parent, active marker) from the fully-populated tabs it already fetched,
|
|
10
|
+
* which is a different job than counting.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Field mask for a tab-count fetch: tab identity only, no `documentTab` body.
|
|
14
|
+
* Masked three levels deep — Docs nests tabs, and an unqualified `childTabs`
|
|
15
|
+
* would pull each subtree's full content back into the response.
|
|
16
|
+
*
|
|
17
|
+
* A tree deeper than three levels would under-report the *count*, but cannot
|
|
18
|
+
* change the multi-tab verdict: any tab at depth 4 implies ancestors at every
|
|
19
|
+
* shallower level, so the total is already >1.
|
|
20
|
+
*/
|
|
21
|
+
const TAB_COUNT_FIELDS = "tabs(tabProperties(tabId,title),childTabs(tabProperties(tabId,title),childTabs(tabProperties(tabId,title))))";
|
|
22
|
+
/** Flatten a tab tree (root tabs + nested `childTabs`) into id/title pairs. */
|
|
23
|
+
export function flattenTabSummaries(tabs) {
|
|
24
|
+
const out = [];
|
|
25
|
+
for (const tab of tabs ?? []) {
|
|
26
|
+
const props = tab.tabProperties ?? {};
|
|
27
|
+
out.push({ id: props.tabId ?? "", title: props.title ?? "" });
|
|
28
|
+
if (tab.childTabs?.length)
|
|
29
|
+
out.push(...flattenTabSummaries(tab.childTabs));
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* List a Doc's tabs (identity only). Returns `[]` when the API reports no tabs
|
|
35
|
+
* at all — callers treat "unknown" as "not multi-tab" rather than blocking a
|
|
36
|
+
* write on a missing field.
|
|
37
|
+
*/
|
|
38
|
+
export async function listDocumentTabs(account, documentId) {
|
|
39
|
+
const docs = await docsClient(account);
|
|
40
|
+
try {
|
|
41
|
+
const res = await docs.documents.get({
|
|
42
|
+
documentId,
|
|
43
|
+
includeTabsContent: true,
|
|
44
|
+
fields: TAB_COUNT_FIELDS,
|
|
45
|
+
});
|
|
46
|
+
return flattenTabSummaries(res.data.tabs ?? undefined);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
throw translateGoogleError(err, { account, operation: "docs.documents.get" });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/commands/docs/tabs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;;;GASG;AAEH;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GACpB,8GAA8G,CAAC;AAOjH,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,IAAsC;IACxE,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,UAAkB;IACxE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACnC,UAAU;YACV,kBAAkB,EAAE,IAAI;YACxB,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,oBAAoB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { flattenTabSummaries } from "./tabs.js";
|
|
3
|
+
describe("flattenTabSummaries", () => {
|
|
4
|
+
it("returns [] for a doc with no tabs reported", () => {
|
|
5
|
+
expect(flattenTabSummaries(undefined)).toEqual([]);
|
|
6
|
+
expect(flattenTabSummaries([])).toEqual([]);
|
|
7
|
+
});
|
|
8
|
+
it("flattens root tabs in order", () => {
|
|
9
|
+
const tabs = [
|
|
10
|
+
{ tabProperties: { tabId: "t.0", title: "Tab 1" } },
|
|
11
|
+
{ tabProperties: { tabId: "t.a", title: "Tab Two" } },
|
|
12
|
+
];
|
|
13
|
+
expect(flattenTabSummaries(tabs)).toEqual([
|
|
14
|
+
{ id: "t.0", title: "Tab 1" },
|
|
15
|
+
{ id: "t.a", title: "Tab Two" },
|
|
16
|
+
]);
|
|
17
|
+
});
|
|
18
|
+
it("counts nested child tabs — one root with a child is still multi-tab", () => {
|
|
19
|
+
const tabs = [
|
|
20
|
+
{
|
|
21
|
+
tabProperties: { tabId: "t.0", title: "Root" },
|
|
22
|
+
childTabs: [
|
|
23
|
+
{
|
|
24
|
+
tabProperties: { tabId: "t.c", title: "Child" },
|
|
25
|
+
childTabs: [{ tabProperties: { tabId: "t.g", title: "Grandchild" } }],
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
const flat = flattenTabSummaries(tabs);
|
|
31
|
+
expect(flat.map((t) => t.id)).toEqual(["t.0", "t.c", "t.g"]);
|
|
32
|
+
expect(flat.length).toBeGreaterThan(1);
|
|
33
|
+
});
|
|
34
|
+
it("tolerates missing tabProperties without dropping the tab from the count", () => {
|
|
35
|
+
expect(flattenTabSummaries([{}, { tabProperties: {} }])).toEqual([
|
|
36
|
+
{ id: "", title: "" },
|
|
37
|
+
{ id: "", title: "" },
|
|
38
|
+
]);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=tabs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.test.js","sourceRoot":"","sources":["../../../../src/commands/docs/tabs.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG;YACX,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACnD,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;SACtD,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACxC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;YAC7B,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG;YACX;gBACE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC9C,SAAS,EAAE;oBACT;wBACE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;wBAC/C,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;qBACtE;iBACF;aACF;SACF,CAAC;QACF,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/D,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACrB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const UPLOAD_HELP = "usage: gws-axi drive upload <source> [flags]\nargs[1]:\n <source> Content source \u2014 exactly one of: a local file path\n (default), `-` to read from stdin, or --content below\nflags[
|
|
1
|
+
export declare const UPLOAD_HELP = "usage: gws-axi drive upload <source> [flags]\nargs[1]:\n <source> Content source \u2014 exactly one of: a local file path\n (default), `-` to read from stdin, or --content below\nflags[7]:\n --content <string> Inline upload body (alternative to a path or stdin)\n --parent <folder-id> Destination folder ID (default: My Drive root).\n Cannot be combined with --update.\n --name <name> Name to give the file in Drive (default: the local\n file's basename). REQUIRED for stdin / --content (no\n filename to infer). With --update, renames the target.\n --mime <type> Override the source content type (default: detected from\n the file \u2014 or, for stdin/--content, the --name \u2014\n extension; unknown \u2192 application/octet-stream)\n --convert Convert to the matching native Google format on upload\n (.docx\u2192Doc, .xlsx/.csv\u2192Sheet, .pptx\u2192Slides). With\n --update, only when the target is already that native type.\n --update <file-id> Replace an existing file's content (new revision)\n instead of creating a new file.\n --replace-all-tabs Required to --update a Doc with 2+ tabs or a Sheet with\n 2+ sheets: the import collapses it to a single tab /\n sheet, destroying the others.\n --account <email> REQUIRED when 2+ accounts are authenticated\nexamples:\n gws-axi drive upload ./report.pdf\n gws-axi drive upload ./report.pdf --parent 1AbC... --name \"Q2 Report.pdf\"\n gws-axi drive upload ./notes.docx --convert\n echo '# Notes' | gws-axi drive upload - --name notes.md --convert\n gws-axi drive upload --content '# Notes' --name notes.md --convert\n gws-axi drive upload ./edited.md --convert --update 1XyZ...\nnotes:\n Without --update, every upload creates a NEW Drive file \u2014 re-running makes\n another copy (Drive allows duplicate names). Use --update <id> to replace an\n existing file's content in place.\n --update replaces a Doc or Sheet WHOLESALE: it cannot target one tab of a\n multi-tab doc or one sheet of a multi-sheet spreadsheet, and the import\n leaves a single tab / sheet behind. Such targets are refused unless you\n pass --replace-all-tabs.\noutput:\n An `action: created` (or `updated`) line plus a `file{...}` object with\n id, name, mime_type, size_bytes, parents, and web_view_link.\n";
|
|
2
2
|
export interface ParsedFlags {
|
|
3
3
|
localPath: string | undefined;
|
|
4
4
|
stdin: boolean;
|
|
@@ -8,6 +8,7 @@ export interface ParsedFlags {
|
|
|
8
8
|
mime: string | undefined;
|
|
9
9
|
convert: boolean;
|
|
10
10
|
update: string | undefined;
|
|
11
|
+
replaceAllTabs: boolean;
|
|
11
12
|
}
|
|
12
13
|
export declare function parseFlags(args: string[]): ParsedFlags;
|
|
13
14
|
/**
|
|
@@ -5,11 +5,38 @@ import { AxiError } from "axi-sdk-js";
|
|
|
5
5
|
import { driveClient, translateGoogleError } from "../../google/client.js";
|
|
6
6
|
import { joinBlocks, renderHelp, renderObject } from "../../output/index.js";
|
|
7
7
|
import { detectMimeType, googleConversionTarget } from "../../util/mime-types.js";
|
|
8
|
+
import { listDocumentTabs } from "../docs/tabs.js";
|
|
9
|
+
import { listSpreadsheetSheets } from "../sheets/tabs.js";
|
|
10
|
+
const GOOGLE_DOC_MIME = "application/vnd.google-apps.document";
|
|
11
|
+
const GOOGLE_SHEET_MIME = "application/vnd.google-apps.spreadsheet";
|
|
12
|
+
/**
|
|
13
|
+
* Native types whose content is split across named sub-surfaces that a
|
|
14
|
+
* wholesale upload would flatten. Keyed by mimeType so the guard is one code
|
|
15
|
+
* path: a Doc's tabs and a Spreadsheet's sheets collapse identically, and both
|
|
16
|
+
* are gated by the same `--replace-all-tabs` opt-in (a spreadsheet's sheets
|
|
17
|
+
* *are* its tabs — the framing `sheets read` already uses).
|
|
18
|
+
*/
|
|
19
|
+
const TAB_CONTAINERS = {
|
|
20
|
+
[GOOGLE_DOC_MIME]: {
|
|
21
|
+
noun: "Document",
|
|
22
|
+
singular: "tab",
|
|
23
|
+
plural: "tabs",
|
|
24
|
+
readCommand: "docs read",
|
|
25
|
+
list: listDocumentTabs,
|
|
26
|
+
},
|
|
27
|
+
[GOOGLE_SHEET_MIME]: {
|
|
28
|
+
noun: "Spreadsheet",
|
|
29
|
+
singular: "sheet",
|
|
30
|
+
plural: "sheets",
|
|
31
|
+
readCommand: "sheets read",
|
|
32
|
+
list: listSpreadsheetSheets,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
8
35
|
export const UPLOAD_HELP = `usage: gws-axi drive upload <source> [flags]
|
|
9
36
|
args[1]:
|
|
10
37
|
<source> Content source — exactly one of: a local file path
|
|
11
38
|
(default), \`-\` to read from stdin, or --content below
|
|
12
|
-
flags[
|
|
39
|
+
flags[7]:
|
|
13
40
|
--content <string> Inline upload body (alternative to a path or stdin)
|
|
14
41
|
--parent <folder-id> Destination folder ID (default: My Drive root).
|
|
15
42
|
Cannot be combined with --update.
|
|
@@ -24,6 +51,9 @@ flags[6]:
|
|
|
24
51
|
--update, only when the target is already that native type.
|
|
25
52
|
--update <file-id> Replace an existing file's content (new revision)
|
|
26
53
|
instead of creating a new file.
|
|
54
|
+
--replace-all-tabs Required to --update a Doc with 2+ tabs or a Sheet with
|
|
55
|
+
2+ sheets: the import collapses it to a single tab /
|
|
56
|
+
sheet, destroying the others.
|
|
27
57
|
--account <email> REQUIRED when 2+ accounts are authenticated
|
|
28
58
|
examples:
|
|
29
59
|
gws-axi drive upload ./report.pdf
|
|
@@ -36,6 +66,10 @@ notes:
|
|
|
36
66
|
Without --update, every upload creates a NEW Drive file — re-running makes
|
|
37
67
|
another copy (Drive allows duplicate names). Use --update <id> to replace an
|
|
38
68
|
existing file's content in place.
|
|
69
|
+
--update replaces a Doc or Sheet WHOLESALE: it cannot target one tab of a
|
|
70
|
+
multi-tab doc or one sheet of a multi-sheet spreadsheet, and the import
|
|
71
|
+
leaves a single tab / sheet behind. Such targets are refused unless you
|
|
72
|
+
pass --replace-all-tabs.
|
|
39
73
|
output:
|
|
40
74
|
An \`action: created\` (or \`updated\`) line plus a \`file{...}\` object with
|
|
41
75
|
id, name, mime_type, size_bytes, parents, and web_view_link.
|
|
@@ -50,6 +84,7 @@ export function parseFlags(args) {
|
|
|
50
84
|
mime: undefined,
|
|
51
85
|
convert: false,
|
|
52
86
|
update: undefined,
|
|
87
|
+
replaceAllTabs: false,
|
|
53
88
|
};
|
|
54
89
|
for (let i = 0; i < args.length; i++) {
|
|
55
90
|
const arg = args[i];
|
|
@@ -78,6 +113,9 @@ export function parseFlags(args) {
|
|
|
78
113
|
flags.update = next;
|
|
79
114
|
i++;
|
|
80
115
|
break;
|
|
116
|
+
case "--replace-all-tabs":
|
|
117
|
+
flags.replaceAllTabs = true;
|
|
118
|
+
break;
|
|
81
119
|
case "-":
|
|
82
120
|
// `-` as the positional means read the body from stdin.
|
|
83
121
|
flags.stdin = true;
|
|
@@ -126,9 +164,16 @@ export function validateFlags(flags) {
|
|
|
126
164
|
"Drop --parent, or upload as a new file (omit --update) to place it in a folder",
|
|
127
165
|
]);
|
|
128
166
|
}
|
|
167
|
+
if (flags.replaceAllTabs && !flags.update) {
|
|
168
|
+
throw new AxiError("--replace-all-tabs is only meaningful with --update", "VALIDATION_ERROR", [
|
|
169
|
+
"A new file has no existing tabs to replace — drop --replace-all-tabs",
|
|
170
|
+
"It acknowledges collapsing a multi-tab Doc when you --update one",
|
|
171
|
+
]);
|
|
172
|
+
}
|
|
129
173
|
// --convert + --update is allowed, but only against a target that's already
|
|
130
|
-
// the matching native type
|
|
131
|
-
//
|
|
174
|
+
// the matching native type; and updating a multi-tab Doc collapses it. Both
|
|
175
|
+
// checks need the target's state (a files.get / documents.get), so they live
|
|
176
|
+
// in the command, not in this pure validator.
|
|
132
177
|
}
|
|
133
178
|
export async function driveUploadCommand(account, args) {
|
|
134
179
|
const flags = parseFlags(args);
|
|
@@ -179,10 +224,13 @@ export async function driveUploadCommand(account, args) {
|
|
|
179
224
|
targetMime = target;
|
|
180
225
|
}
|
|
181
226
|
const api = await driveClient(account);
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
|
|
227
|
+
// Every --update preflights the target's current type. `--convert` needs it
|
|
228
|
+
// to verify convertibility, and a native Doc target needs the tab check
|
|
229
|
+
// below — which applies with or without --convert, since Drive converts the
|
|
230
|
+
// media implicitly when the target is already native.
|
|
231
|
+
let collapsedTabs = 0;
|
|
232
|
+
let collapsedNoun = "tabs";
|
|
233
|
+
if (flags.update) {
|
|
186
234
|
let existingMime;
|
|
187
235
|
try {
|
|
188
236
|
const res = await api.files.get({
|
|
@@ -205,17 +253,43 @@ export async function driveUploadCommand(account, args) {
|
|
|
205
253
|
}
|
|
206
254
|
throw translated;
|
|
207
255
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
256
|
+
// --convert: the target must already be the native type the source
|
|
257
|
+
// converts to. Verify before uploading so a mismatch fails clean rather
|
|
258
|
+
// than producing a surprise revision.
|
|
259
|
+
if (flags.convert) {
|
|
260
|
+
if (!existingMime.startsWith("application/vnd.google-apps.")) {
|
|
261
|
+
throw new AxiError(`--convert --update needs a native Google target, but '${flags.update}' is ${existingMime}`, "VALIDATION_ERROR", [
|
|
262
|
+
"Converting a binary file's type in place isn't supported — upload a new file with --convert instead",
|
|
263
|
+
"Or drop --convert to replace the binary content as-is",
|
|
264
|
+
]);
|
|
265
|
+
}
|
|
266
|
+
if (existingMime !== targetMime) {
|
|
267
|
+
throw new AxiError(`${sourceMime} converts to ${targetMime}, but target file '${flags.update}' is ${existingMime}`, "VALIDATION_ERROR", [
|
|
268
|
+
"The source's native type must match the existing file's type",
|
|
269
|
+
"e.g. markdown/docx updates a Doc; csv/xlsx updates a Sheet",
|
|
270
|
+
]);
|
|
271
|
+
}
|
|
213
272
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
273
|
+
// A Doc or Spreadsheet target is replaced WHOLESALE: Drive's import yields
|
|
274
|
+
// a single-tab document / single-sheet spreadsheet, so every tab or sheet
|
|
275
|
+
// but the first is destroyed. Both are verified live. Refuse unless the
|
|
276
|
+
// caller has said that's what they meant.
|
|
277
|
+
const containerKind = TAB_CONTAINERS[existingMime];
|
|
278
|
+
if (containerKind) {
|
|
279
|
+
const parts = await containerKind.list(account, flags.update);
|
|
280
|
+
if (parts.length > 1 && !flags.replaceAllTabs) {
|
|
281
|
+
const titles = parts.map((p) => p.title || p.id).join(", ");
|
|
282
|
+
throw new AxiError(`${containerKind.noun} '${flags.update}' has ${parts.length} ${containerKind.plural} — an update replaces all of them with a single ${containerKind.singular}`, "MULTI_TAB_TARGET", [
|
|
283
|
+
`${containerKind.plural[0].toUpperCase()}${containerKind.plural.slice(1)} that would be lost: ${titles}`,
|
|
284
|
+
`Run \`gws-axi ${containerKind.readCommand} ${flags.update}\` to inspect them first`,
|
|
285
|
+
`Pass --replace-all-tabs to proceed and collapse it to one ${containerKind.singular}`,
|
|
286
|
+
`Per-${containerKind.singular} writes aren't supported — Drive uploads replace a ${containerKind.noun} wholesale`,
|
|
287
|
+
]);
|
|
288
|
+
}
|
|
289
|
+
if (parts.length > 1) {
|
|
290
|
+
collapsedTabs = parts.length;
|
|
291
|
+
collapsedNoun = containerKind.plural;
|
|
292
|
+
}
|
|
219
293
|
}
|
|
220
294
|
}
|
|
221
295
|
const media = {
|
|
@@ -288,7 +362,11 @@ export async function driveUploadCommand(account, args) {
|
|
|
288
362
|
blocks.push(renderObject({ file: details }));
|
|
289
363
|
const suggestions = [];
|
|
290
364
|
const id = file.id ?? "";
|
|
291
|
-
const isNativeDoc = file.mimeType ===
|
|
365
|
+
const isNativeDoc = file.mimeType === GOOGLE_DOC_MIME;
|
|
366
|
+
if (collapsedTabs > 0) {
|
|
367
|
+
// Disclose the loss we were authorized to cause (surface-completeness-limits).
|
|
368
|
+
suggestions.push(`Replaced ${collapsedTabs} ${collapsedNoun} with a single imported ${collapsedNoun.slice(0, -1)} — the prior version is in \`gws-axi drive revisions ${id}\``);
|
|
369
|
+
}
|
|
292
370
|
if (isNativeDoc) {
|
|
293
371
|
suggestions.push(`Run \`gws-axi docs read ${id}\` to read it as markdown`);
|
|
294
372
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/drive/upload.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/drive/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,12 @@ describe("drive upload parseFlags", () => {
|
|
|
31
31
|
it("parses --update with a file id", () => {
|
|
32
32
|
const f = parseFlags(["./report.pdf", "--update", "1XyZ"]);
|
|
33
33
|
expect(f.update).toBe("1XyZ");
|
|
34
|
+
expect(f.replaceAllTabs).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
it("parses --replace-all-tabs as a boolean, consuming no value", () => {
|
|
37
|
+
const f = parseFlags(["./report.md", "--replace-all-tabs", "--update", "1XyZ"]);
|
|
38
|
+
expect(f.replaceAllTabs).toBe(true);
|
|
39
|
+
expect(f.update).toBe("1XyZ");
|
|
34
40
|
});
|
|
35
41
|
it("takes the first positional as the local path, ignoring later ones", () => {
|
|
36
42
|
const f = parseFlags(["./a.pdf", "./b.pdf"]);
|
|
@@ -59,6 +65,7 @@ describe("drive upload validateFlags", () => {
|
|
|
59
65
|
mime: undefined,
|
|
60
66
|
convert: false,
|
|
61
67
|
update: undefined,
|
|
68
|
+
replaceAllTabs: false,
|
|
62
69
|
};
|
|
63
70
|
it("accepts a valid create invocation", () => {
|
|
64
71
|
expect(() => validateFlags({ ...base, parent: "1AbC" })).not.toThrow();
|
|
@@ -123,5 +130,18 @@ describe("drive upload validateFlags", () => {
|
|
|
123
130
|
it("allows --convert combined with --update (target-type check happens at runtime)", () => {
|
|
124
131
|
expect(() => validateFlags({ ...base, convert: true, update: "1XyZ" })).not.toThrow();
|
|
125
132
|
});
|
|
133
|
+
it("allows --replace-all-tabs with --update (tab count happens at runtime)", () => {
|
|
134
|
+
expect(() => validateFlags({ ...base, update: "1XyZ", replaceAllTabs: true })).not.toThrow();
|
|
135
|
+
});
|
|
136
|
+
it("rejects --replace-all-tabs without --update", () => {
|
|
137
|
+
try {
|
|
138
|
+
validateFlags({ ...base, replaceAllTabs: true });
|
|
139
|
+
throw new Error("should have thrown");
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
expect(err).toBeInstanceOf(AxiError);
|
|
143
|
+
expect(err.code).toBe("VALIDATION_ERROR");
|
|
144
|
+
}
|
|
145
|
+
});
|
|
126
146
|
});
|
|
127
147
|
//# sourceMappingURL=upload.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.test.js","sourceRoot":"","sources":["../../../../src/commands/drive/upload.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"upload.test.js","sourceRoot":"","sources":["../../../../src/commands/drive/upload.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TabSummary } from "../docs/tabs.js";
|
|
2
|
+
/**
|
|
3
|
+
* List a Spreadsheet's sheets (identity only). Returns `[]` when the API
|
|
4
|
+
* reports none — callers treat "unknown" as "not multi-sheet" rather than
|
|
5
|
+
* blocking a write on a missing field.
|
|
6
|
+
*/
|
|
7
|
+
export declare function listSpreadsheetSheets(account: string, spreadsheetId: string): Promise<TabSummary[]>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { sheetsClient, translateGoogleError } from "../../google/client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Sheet-listing helper for `drive upload --update`. A spreadsheet's sheets are
|
|
4
|
+
* its tabs (the same framing `sheets read` uses), and replacing a Spreadsheet's
|
|
5
|
+
* content collapses it to a single sheet exactly as a Doc collapses to a single
|
|
6
|
+
* tab — so the guard needs a count before it writes.
|
|
7
|
+
*
|
|
8
|
+
* Shares `TabSummary` with the Docs helper: one shape for "named sub-surface of
|
|
9
|
+
* a container file", so `drive upload` handles both with one code path.
|
|
10
|
+
*/
|
|
11
|
+
/** Field mask for a sheet-count fetch: identity only, no cell data. */
|
|
12
|
+
const SHEET_COUNT_FIELDS = "sheets.properties(sheetId,title)";
|
|
13
|
+
/**
|
|
14
|
+
* List a Spreadsheet's sheets (identity only). Returns `[]` when the API
|
|
15
|
+
* reports none — callers treat "unknown" as "not multi-sheet" rather than
|
|
16
|
+
* blocking a write on a missing field.
|
|
17
|
+
*/
|
|
18
|
+
export async function listSpreadsheetSheets(account, spreadsheetId) {
|
|
19
|
+
const sheets = await sheetsClient(account);
|
|
20
|
+
try {
|
|
21
|
+
const res = await sheets.spreadsheets.get({
|
|
22
|
+
spreadsheetId,
|
|
23
|
+
fields: SHEET_COUNT_FIELDS,
|
|
24
|
+
});
|
|
25
|
+
return (res.data.sheets ?? []).map((sheet) => ({
|
|
26
|
+
id: sheet.properties?.sheetId != null ? String(sheet.properties.sheetId) : "",
|
|
27
|
+
title: sheet.properties?.title ?? "",
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
throw translateGoogleError(err, { account, operation: "sheets.spreadsheets.get" });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/commands/sheets/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG5E;;;;;;;;GAQG;AAEH,uEAAuE;AACvE,MAAM,kBAAkB,GAAG,kCAAkC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAe,EACf,aAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YACxC,aAAa;YACb,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7E,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;SACrC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,oBAAoB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
/**
|
|
3
|
+
* `listSpreadsheetSheets` itself is a thin API call; what's worth pinning is
|
|
4
|
+
* the shape it maps into, since `drive upload`'s guard counts and labels these
|
|
5
|
+
* uniformly with a Doc's tabs.
|
|
6
|
+
*/
|
|
7
|
+
function mapSheets(sheets) {
|
|
8
|
+
return sheets.map((sheet) => ({
|
|
9
|
+
id: sheet.properties?.sheetId != null ? String(sheet.properties.sheetId) : "",
|
|
10
|
+
title: sheet.properties?.title ?? "",
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
describe("spreadsheet sheet summaries", () => {
|
|
14
|
+
it("maps sheetId/title into the shared TabSummary shape", () => {
|
|
15
|
+
expect(mapSheets([
|
|
16
|
+
{ properties: { sheetId: 0, title: "Sheet1" } },
|
|
17
|
+
{ properties: { sheetId: 283081854, title: "Second" } },
|
|
18
|
+
])).toEqual([
|
|
19
|
+
{ id: "0", title: "Sheet1" },
|
|
20
|
+
{ id: "283081854", title: "Second" },
|
|
21
|
+
]);
|
|
22
|
+
});
|
|
23
|
+
it('keeps sheetId 0 as "0" rather than dropping it as falsy', () => {
|
|
24
|
+
// gid 0 is the default first sheet — a `||` fallback would blank it.
|
|
25
|
+
expect(mapSheets([{ properties: { sheetId: 0, title: "Sheet1" } }])[0].id).toBe("0");
|
|
26
|
+
});
|
|
27
|
+
it("tolerates missing properties without dropping the sheet from the count", () => {
|
|
28
|
+
expect(mapSheets([{}, { properties: {} }])).toEqual([
|
|
29
|
+
{ id: "", title: "" },
|
|
30
|
+
{ id: "", title: "" },
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=tabs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.test.js","sourceRoot":"","sources":["../../../../src/commands/sheets/tabs.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C;;;;GAIG;AACH,SAAS,SAAS,CAChB,MAAkF;IAElF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;QAC7E,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;KACrC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CACJ,SAAS,CAAC;YACR,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC/C,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;SACxD,CAAC,CACH,CAAC,OAAO,CAAC;YACR,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC5B,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,qEAAqE;QACrE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACrB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gws-axi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "AXI-compliant Google Workspace CLI — token-efficient TOON output, agent-guided auth setup, unified interface for Gmail, Calendar, Docs, Drive, Slides",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|