google-services-mcp 0.1.0-beta.100
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/LICENSE +21 -0
- package/README.md +303 -0
- package/dist/auth/config.d.ts +43 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +112 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/manager.d.ts +50 -0
- package/dist/auth/manager.d.ts.map +1 -0
- package/dist/auth/manager.js +141 -0
- package/dist/auth/manager.js.map +1 -0
- package/dist/auth/oauth.d.ts +57 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +223 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/store.d.ts +18 -0
- package/dist/auth/store.d.ts.map +1 -0
- package/dist/auth/store.js +50 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +137 -0
- package/dist/cli.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +21 -0
- package/dist/main.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +28 -0
- package/dist/server.js.map +1 -0
- package/dist/services/calendar.d.ts +77 -0
- package/dist/services/calendar.d.ts.map +1 -0
- package/dist/services/calendar.js +141 -0
- package/dist/services/calendar.js.map +1 -0
- package/dist/services/contacts-tasks.d.ts +61 -0
- package/dist/services/contacts-tasks.d.ts.map +1 -0
- package/dist/services/contacts-tasks.js +106 -0
- package/dist/services/contacts-tasks.js.map +1 -0
- package/dist/services/docs.d.ts +32 -0
- package/dist/services/docs.d.ts.map +1 -0
- package/dist/services/docs.js +58 -0
- package/dist/services/docs.js.map +1 -0
- package/dist/services/drive.d.ts +72 -0
- package/dist/services/drive.d.ts.map +1 -0
- package/dist/services/drive.js +131 -0
- package/dist/services/drive.js.map +1 -0
- package/dist/services/forms.d.ts +30 -0
- package/dist/services/forms.d.ts.map +1 -0
- package/dist/services/forms.js +54 -0
- package/dist/services/forms.js.map +1 -0
- package/dist/services/gmail.d.ts +159 -0
- package/dist/services/gmail.d.ts.map +1 -0
- package/dist/services/gmail.js +499 -0
- package/dist/services/gmail.js.map +1 -0
- package/dist/services/sheets.d.ts +44 -0
- package/dist/services/sheets.d.ts.map +1 -0
- package/dist/services/sheets.js +53 -0
- package/dist/services/sheets.js.map +1 -0
- package/dist/services/slides.d.ts +30 -0
- package/dist/services/slides.d.ts.map +1 -0
- package/dist/services/slides.js +52 -0
- package/dist/services/slides.js.map +1 -0
- package/dist/services/youtube.d.ts +45 -0
- package/dist/services/youtube.d.ts.map +1 -0
- package/dist/services/youtube.js +97 -0
- package/dist/services/youtube.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +953 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/util/result.d.ts +29 -0
- package/dist/util/result.d.ts.map +1 -0
- package/dist/util/result.js +21 -0
- package/dist/util/result.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Auth, docs_v1 } from "googleapis";
|
|
2
|
+
export interface GetDocumentArgs {
|
|
3
|
+
documentId: string;
|
|
4
|
+
}
|
|
5
|
+
export interface InsertTextArgs {
|
|
6
|
+
documentId: string;
|
|
7
|
+
text: string;
|
|
8
|
+
/** Optional 0-based character index to insert at. Defaults to end of document. */
|
|
9
|
+
index?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ReplaceAllTextArgs {
|
|
12
|
+
documentId: string;
|
|
13
|
+
find: string;
|
|
14
|
+
replace: string;
|
|
15
|
+
matchCase?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface BatchUpdateArgs {
|
|
18
|
+
documentId: string;
|
|
19
|
+
requests: docs_v1.Schema$Request[];
|
|
20
|
+
}
|
|
21
|
+
export declare function getDocument(client: Auth.OAuth2Client, { documentId }: GetDocumentArgs): Promise<docs_v1.Schema$Document>;
|
|
22
|
+
/** Extract plain text from the body's paragraph elements (text runs only). */
|
|
23
|
+
export declare function getDocumentText(client: Auth.OAuth2Client, { documentId }: GetDocumentArgs): Promise<string>;
|
|
24
|
+
export declare function createDocument(client: Auth.OAuth2Client, { title }: {
|
|
25
|
+
title: string;
|
|
26
|
+
}): Promise<docs_v1.Schema$Document>;
|
|
27
|
+
export declare function insertText(client: Auth.OAuth2Client, { documentId, text, index }: InsertTextArgs): Promise<{
|
|
28
|
+
inserted: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function replaceAllText(client: Auth.OAuth2Client, { documentId, find, replace, matchCase }: ReplaceAllTextArgs): Promise<docs_v1.Schema$ReplaceAllTextResponse>;
|
|
31
|
+
export declare function batchUpdateDocument(client: Auth.OAuth2Client, { documentId, requests }: BatchUpdateArgs): Promise<docs_v1.Schema$BatchUpdateDocumentResponse>;
|
|
32
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/services/docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;CACpC;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,EAAE,eAAe,GAC9B,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAIlC;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,EAAE,eAAe,GAC9B,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAIlC;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,cAAc,GAC1C,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAahC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAgB,EAAE,EAAE,kBAAkB,GAClE,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAWhD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,eAAe,GACxC,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAIrD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
export async function getDocument(client, { documentId }) {
|
|
3
|
+
const docs = google.docs({ version: "v1", auth: client });
|
|
4
|
+
const res = await docs.documents.get({ documentId });
|
|
5
|
+
return res.data;
|
|
6
|
+
}
|
|
7
|
+
/** Extract plain text from the body's paragraph elements (text runs only). */
|
|
8
|
+
export async function getDocumentText(client, { documentId }) {
|
|
9
|
+
const docs = google.docs({ version: "v1", auth: client });
|
|
10
|
+
const doc = await docs.documents.get({ documentId });
|
|
11
|
+
const content = doc.data.body?.content ?? [];
|
|
12
|
+
const parts = [];
|
|
13
|
+
for (const element of content) {
|
|
14
|
+
if (element.paragraph) {
|
|
15
|
+
const line = (element.paragraph.elements ?? []).map((e) => e.textRun?.content ?? "").join("");
|
|
16
|
+
parts.push(line);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return parts.join("\n") + (parts.length ? "\n" : "");
|
|
20
|
+
}
|
|
21
|
+
export async function createDocument(client, { title }) {
|
|
22
|
+
const docs = google.docs({ version: "v1", auth: client });
|
|
23
|
+
const res = await docs.documents.create({ requestBody: { title } });
|
|
24
|
+
return res.data;
|
|
25
|
+
}
|
|
26
|
+
export async function insertText(client, { documentId, text, index }) {
|
|
27
|
+
const docs = google.docs({ version: "v1", auth: client });
|
|
28
|
+
let location;
|
|
29
|
+
if (index !== undefined) {
|
|
30
|
+
location = { location: { index } };
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
location = { endOfSegmentLocation: {} };
|
|
34
|
+
}
|
|
35
|
+
await docs.documents.batchUpdate({
|
|
36
|
+
documentId,
|
|
37
|
+
requestBody: { requests: [{ insertText: { ...location, text } }] },
|
|
38
|
+
});
|
|
39
|
+
return { inserted: true };
|
|
40
|
+
}
|
|
41
|
+
export async function replaceAllText(client, { documentId, find, replace, matchCase = true }) {
|
|
42
|
+
const docs = google.docs({ version: "v1", auth: client });
|
|
43
|
+
const res = await docs.documents.batchUpdate({
|
|
44
|
+
documentId,
|
|
45
|
+
requestBody: {
|
|
46
|
+
requests: [
|
|
47
|
+
{ replaceAllText: { containsText: { text: find, matchCase }, replaceText: replace } },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
return res.data.replies?.[0]?.replaceAllText ?? { occurrencesChanged: 0 };
|
|
52
|
+
}
|
|
53
|
+
export async function batchUpdateDocument(client, { documentId, requests }) {
|
|
54
|
+
const docs = google.docs({ version: "v1", auth: client });
|
|
55
|
+
const res = await docs.documents.batchUpdate({ documentId, requestBody: { requests } });
|
|
56
|
+
return res.data;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/services/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { Auth } from "googleapis";
|
|
2
|
+
export interface ListDriveOptions {
|
|
3
|
+
query?: string;
|
|
4
|
+
pageSize?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface GetDriveOptions {
|
|
7
|
+
fileId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface UploadDriveOptions {
|
|
10
|
+
name: string;
|
|
11
|
+
mimeType: string;
|
|
12
|
+
/** Text content to upload. Omit to create a blank Google-native file. */
|
|
13
|
+
content?: string;
|
|
14
|
+
parentFolderId?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface UpdateDriveOptions {
|
|
17
|
+
fileId: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
mimeType?: string;
|
|
20
|
+
content?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ShareDriveOptions {
|
|
23
|
+
fileId: string;
|
|
24
|
+
email: string;
|
|
25
|
+
role: "reader" | "writer" | "commenter";
|
|
26
|
+
sendNotificationEmail?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface DriveFile {
|
|
29
|
+
id: string;
|
|
30
|
+
name?: string;
|
|
31
|
+
mimeType?: string;
|
|
32
|
+
size?: string;
|
|
33
|
+
createdTime?: string;
|
|
34
|
+
modifiedTime?: string;
|
|
35
|
+
webViewLink?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface DownloadDriveResult {
|
|
38
|
+
/** Base64-encoded raw bytes (binary) or the raw string (text). */
|
|
39
|
+
data: string;
|
|
40
|
+
binary: boolean;
|
|
41
|
+
mimeType?: string;
|
|
42
|
+
}
|
|
43
|
+
/** List files, optionally filtered by a Drive query (e.g. "'<folderId>' in parents"). */
|
|
44
|
+
export declare function listDriveFiles(client: Auth.OAuth2Client, opts: ListDriveOptions): Promise<DriveFile[]>;
|
|
45
|
+
/** Get metadata for a single file. */
|
|
46
|
+
export declare function getDriveFile(client: Auth.OAuth2Client, opts: GetDriveOptions): Promise<DriveFile>;
|
|
47
|
+
/** Create a file (text content) or a blank Google-native file (Doc/Sheet/Slides). */
|
|
48
|
+
export declare function uploadDriveFile(client: Auth.OAuth2Client, opts: UploadDriveOptions): Promise<DriveFile>;
|
|
49
|
+
/** Update a file's metadata and/or content. */
|
|
50
|
+
export declare function updateDriveFile(client: Auth.OAuth2Client, opts: UpdateDriveOptions): Promise<DriveFile>;
|
|
51
|
+
/** Permanently delete a file. */
|
|
52
|
+
export declare function deleteDriveFile(client: Auth.OAuth2Client, opts: GetDriveOptions): Promise<void>;
|
|
53
|
+
/** Share a file with a user by email. */
|
|
54
|
+
export declare function shareDriveFile(client: Auth.OAuth2Client, opts: ShareDriveOptions): Promise<{
|
|
55
|
+
id: string;
|
|
56
|
+
}>;
|
|
57
|
+
/** Download a file's raw bytes (non-Google-native files). */
|
|
58
|
+
export declare function downloadDriveFile(client: Auth.OAuth2Client, opts: GetDriveOptions): Promise<DownloadDriveResult>;
|
|
59
|
+
/** Export a Google-native file (Docs/Sheets/Slides) to another format. */
|
|
60
|
+
export declare function exportDriveFile(client: Auth.OAuth2Client, opts: GetDriveOptions & {
|
|
61
|
+
mimeType: string;
|
|
62
|
+
}): Promise<DownloadDriveResult>;
|
|
63
|
+
/** Create a folder. */
|
|
64
|
+
export declare function createDriveFolder(client: Auth.OAuth2Client, opts: {
|
|
65
|
+
name: string;
|
|
66
|
+
parentFolderId?: string;
|
|
67
|
+
}): Promise<DriveFile>;
|
|
68
|
+
/** Copy a file. */
|
|
69
|
+
export declare function copyDriveFile(client: Auth.OAuth2Client, opts: GetDriveOptions & {
|
|
70
|
+
name?: string;
|
|
71
|
+
}): Promise<DriveFile>;
|
|
72
|
+
//# sourceMappingURL=drive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/services/drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqBD,yFAAyF;AACzF,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAStB;AAED,sCAAsC;AACtC,wBAAsB,YAAY,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,SAAS,CAAC,CAOpB;AAED,qFAAqF;AACrF,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,SAAS,CAAC,CAUpB;AAED,+CAA+C;AAC/C,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,SAAS,CAAC,CAWpB;AAED,iCAAiC;AACjC,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,yCAAyC;AACzC,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAYzB;AAcD,6DAA6D;AAC7D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAED,0EAA0E;AAC1E,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAED,uBAAuB;AACvB,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,SAAS,CAAC,CASpB;AAED,mBAAmB;AACnB,wBAAsB,aAAa,CACjC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,SAAS,CAAC,CAMpB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
async function mapDownload(res) {
|
|
3
|
+
let data = res.data;
|
|
4
|
+
// googleapis returns a Blob (not Buffer/string) for alt=media and binary
|
|
5
|
+
// exports. Its Blob comes from gaxios' bundled fetch implementation, which
|
|
6
|
+
// is NOT an instanceof the global Blob class — so duck-type via arrayBuffer()
|
|
7
|
+
// instead of `instanceof Blob` (that check silently fails and the blob gets
|
|
8
|
+
// String()-ified to "[object Blob]").
|
|
9
|
+
if (data && typeof data === "object") {
|
|
10
|
+
const blobish = data;
|
|
11
|
+
if (typeof blobish.arrayBuffer === "function") {
|
|
12
|
+
data = Buffer.from(await blobish.arrayBuffer());
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (Buffer.isBuffer(data)) {
|
|
16
|
+
return { data: data.toString("base64"), binary: true };
|
|
17
|
+
}
|
|
18
|
+
return { data: String(data ?? ""), binary: false };
|
|
19
|
+
}
|
|
20
|
+
/** List files, optionally filtered by a Drive query (e.g. "'<folderId>' in parents"). */
|
|
21
|
+
export async function listDriveFiles(client, opts) {
|
|
22
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
23
|
+
const res = await drive.files.list({
|
|
24
|
+
q: opts.query || undefined,
|
|
25
|
+
pageSize: opts.pageSize ?? 25,
|
|
26
|
+
orderBy: "modifiedTime desc",
|
|
27
|
+
fields: "files(id,name,mimeType,size,createdTime,modifiedTime,webViewLink)",
|
|
28
|
+
});
|
|
29
|
+
return (res.data.files ?? []).map((f) => mapFile(f));
|
|
30
|
+
}
|
|
31
|
+
/** Get metadata for a single file. */
|
|
32
|
+
export async function getDriveFile(client, opts) {
|
|
33
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
34
|
+
const res = await drive.files.get({
|
|
35
|
+
fileId: opts.fileId,
|
|
36
|
+
fields: "id,name,mimeType,size,createdTime,modifiedTime,webViewLink",
|
|
37
|
+
});
|
|
38
|
+
return mapFile(res.data);
|
|
39
|
+
}
|
|
40
|
+
/** Create a file (text content) or a blank Google-native file (Doc/Sheet/Slides). */
|
|
41
|
+
export async function uploadDriveFile(client, opts) {
|
|
42
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
43
|
+
const requestBody = { name: opts.name, mimeType: opts.mimeType };
|
|
44
|
+
if (opts.parentFolderId)
|
|
45
|
+
requestBody.parents = [opts.parentFolderId];
|
|
46
|
+
const params = { requestBody };
|
|
47
|
+
if (opts.content !== undefined) {
|
|
48
|
+
params.media = { mimeType: opts.mimeType, body: opts.content };
|
|
49
|
+
}
|
|
50
|
+
const res = await drive.files.create(params);
|
|
51
|
+
return mapFile(res.data);
|
|
52
|
+
}
|
|
53
|
+
/** Update a file's metadata and/or content. */
|
|
54
|
+
export async function updateDriveFile(client, opts) {
|
|
55
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
56
|
+
const requestBody = {};
|
|
57
|
+
if (opts.name !== undefined)
|
|
58
|
+
requestBody.name = opts.name;
|
|
59
|
+
if (opts.mimeType !== undefined)
|
|
60
|
+
requestBody.mimeType = opts.mimeType;
|
|
61
|
+
const params = { fileId: opts.fileId, requestBody };
|
|
62
|
+
if (opts.content !== undefined) {
|
|
63
|
+
params.media = { mimeType: opts.mimeType ?? "text/plain", body: opts.content };
|
|
64
|
+
}
|
|
65
|
+
const res = await drive.files.update(params);
|
|
66
|
+
return mapFile(res.data);
|
|
67
|
+
}
|
|
68
|
+
/** Permanently delete a file. */
|
|
69
|
+
export async function deleteDriveFile(client, opts) {
|
|
70
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
71
|
+
await drive.files.delete({ fileId: opts.fileId });
|
|
72
|
+
}
|
|
73
|
+
/** Share a file with a user by email. */
|
|
74
|
+
export async function shareDriveFile(client, opts) {
|
|
75
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
76
|
+
const res = await drive.permissions.create({
|
|
77
|
+
fileId: opts.fileId,
|
|
78
|
+
requestBody: {
|
|
79
|
+
type: "user",
|
|
80
|
+
role: opts.role,
|
|
81
|
+
emailAddress: opts.email,
|
|
82
|
+
},
|
|
83
|
+
sendNotificationEmail: opts.sendNotificationEmail !== false,
|
|
84
|
+
});
|
|
85
|
+
return { id: (res.data.id ?? "") };
|
|
86
|
+
}
|
|
87
|
+
function mapFile(f) {
|
|
88
|
+
return {
|
|
89
|
+
id: f.id,
|
|
90
|
+
name: f.name,
|
|
91
|
+
mimeType: f.mimeType,
|
|
92
|
+
size: f.size,
|
|
93
|
+
createdTime: f.createdTime,
|
|
94
|
+
modifiedTime: f.modifiedTime,
|
|
95
|
+
webViewLink: f.webViewLink,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Download a file's raw bytes (non-Google-native files). */
|
|
99
|
+
export async function downloadDriveFile(client, opts) {
|
|
100
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
101
|
+
const res = await drive.files.get({ fileId: opts.fileId, alt: "media" });
|
|
102
|
+
return mapDownload(res);
|
|
103
|
+
}
|
|
104
|
+
/** Export a Google-native file (Docs/Sheets/Slides) to another format. */
|
|
105
|
+
export async function exportDriveFile(client, opts) {
|
|
106
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
107
|
+
const res = await drive.files.export({ fileId: opts.fileId, mimeType: opts.mimeType });
|
|
108
|
+
return mapDownload(res);
|
|
109
|
+
}
|
|
110
|
+
/** Create a folder. */
|
|
111
|
+
export async function createDriveFolder(client, opts) {
|
|
112
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
113
|
+
const requestBody = {
|
|
114
|
+
name: opts.name,
|
|
115
|
+
mimeType: "application/vnd.google-apps.folder",
|
|
116
|
+
};
|
|
117
|
+
if (opts.parentFolderId)
|
|
118
|
+
requestBody.parents = [opts.parentFolderId];
|
|
119
|
+
const res = await drive.files.create({ requestBody });
|
|
120
|
+
return mapFile(res.data);
|
|
121
|
+
}
|
|
122
|
+
/** Copy a file. */
|
|
123
|
+
export async function copyDriveFile(client, opts) {
|
|
124
|
+
const drive = google.drive({ version: "v3", auth: client });
|
|
125
|
+
const requestBody = {};
|
|
126
|
+
if (opts.name)
|
|
127
|
+
requestBody.name = opts.name;
|
|
128
|
+
const res = await drive.files.copy({ fileId: opts.fileId, requestBody });
|
|
129
|
+
return mapFile(res.data);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=drive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/services/drive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Auth, forms_v1 } from "googleapis";
|
|
2
|
+
export interface GetFormArgs {
|
|
3
|
+
formId: string;
|
|
4
|
+
}
|
|
5
|
+
export interface AddQuestionArgs {
|
|
6
|
+
formId: string;
|
|
7
|
+
title: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Question type: text (default) or multiple_choice. */
|
|
10
|
+
type?: "text" | "multiple_choice";
|
|
11
|
+
/** Required for multiple_choice. */
|
|
12
|
+
options?: string[];
|
|
13
|
+
required?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function getForm(client: Auth.OAuth2Client, { formId }: GetFormArgs): Promise<forms_v1.Schema$Form>;
|
|
16
|
+
export declare function getFormResponses(client: Auth.OAuth2Client, { formId, pageSize }: GetFormArgs & {
|
|
17
|
+
pageSize?: number;
|
|
18
|
+
}): Promise<forms_v1.Schema$FormResponse[]>;
|
|
19
|
+
export declare function createForm(client: Auth.OAuth2Client, { title }: {
|
|
20
|
+
title: string;
|
|
21
|
+
}): Promise<forms_v1.Schema$Form>;
|
|
22
|
+
export declare function addQuestion(client: Auth.OAuth2Client, { formId, title, description, type, options, required, }: AddQuestionArgs): Promise<{
|
|
23
|
+
added: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
export type BatchUpdateArgs = {
|
|
26
|
+
formId: string;
|
|
27
|
+
requests: forms_v1.Schema$Request[];
|
|
28
|
+
};
|
|
29
|
+
export declare function batchUpdateForm(client: Auth.OAuth2Client, { formId, requests }: BatchUpdateArgs): Promise<forms_v1.Schema$BatchUpdateFormResponse>;
|
|
30
|
+
//# sourceMappingURL=forms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../src/services/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAClC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,MAAM,EAAE,EAAE,WAAW,GACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAI/B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,MAAM,EAAE,QAAc,EAAE,EAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAIzC;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAI/B;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EACE,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAsB,EACtB,OAAO,EACP,QAAgB,GACjB,EAAE,eAAe,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CA8B7B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;CACrC,CAAC;AAEF,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,GACpC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAIlD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
export async function getForm(client, { formId }) {
|
|
3
|
+
const forms = google.forms({ version: "v1", auth: client });
|
|
4
|
+
const res = await forms.forms.get({ formId });
|
|
5
|
+
return res.data;
|
|
6
|
+
}
|
|
7
|
+
export async function getFormResponses(client, { formId, pageSize = 100 }) {
|
|
8
|
+
const forms = google.forms({ version: "v1", auth: client });
|
|
9
|
+
const res = await forms.forms.responses.list({ formId, pageSize });
|
|
10
|
+
return res.data.responses ?? [];
|
|
11
|
+
}
|
|
12
|
+
export async function createForm(client, { title }) {
|
|
13
|
+
const forms = google.forms({ version: "v1", auth: client });
|
|
14
|
+
const res = await forms.forms.create({ requestBody: { info: { title } } });
|
|
15
|
+
return res.data;
|
|
16
|
+
}
|
|
17
|
+
export async function addQuestion(client, { formId, title, description, type = "text", options, required = false, }) {
|
|
18
|
+
const forms = google.forms({ version: "v1", auth: client });
|
|
19
|
+
let question;
|
|
20
|
+
if (type === "multiple_choice") {
|
|
21
|
+
question = {
|
|
22
|
+
questionId: "q",
|
|
23
|
+
required,
|
|
24
|
+
choiceQuestion: {
|
|
25
|
+
type: "RADIO",
|
|
26
|
+
options: (options ?? []).map((value) => ({ value })),
|
|
27
|
+
shuffle: false,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
question = { questionId: "q", required, textQuestion: {} };
|
|
33
|
+
}
|
|
34
|
+
await forms.forms.batchUpdate({
|
|
35
|
+
formId,
|
|
36
|
+
requestBody: {
|
|
37
|
+
requests: [
|
|
38
|
+
{
|
|
39
|
+
createItem: {
|
|
40
|
+
location: { index: 0 },
|
|
41
|
+
item: { title, description, questionItem: { question } },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return { added: true };
|
|
48
|
+
}
|
|
49
|
+
export async function batchUpdateForm(client, { formId, requests }) {
|
|
50
|
+
const forms = google.forms({ version: "v1", auth: client });
|
|
51
|
+
const res = await forms.forms.batchUpdate({ formId, requestBody: { requests } });
|
|
52
|
+
return res.data;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=forms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/services/forms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { Auth } from "googleapis";
|
|
2
|
+
/** A local file to attach to an outgoing message. */
|
|
3
|
+
export interface GmailAttachmentInput {
|
|
4
|
+
/** Local filesystem path of the file to attach. */
|
|
5
|
+
path: string;
|
|
6
|
+
/** Attachment filename shown to recipients (defaults to the basename of `path`). */
|
|
7
|
+
filename?: string;
|
|
8
|
+
/** MIME type override (defaults to a guess based on the filename). */
|
|
9
|
+
mimeType?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SendGmailOptions {
|
|
12
|
+
to: string | string[];
|
|
13
|
+
cc?: string | string[];
|
|
14
|
+
bcc?: string | string[];
|
|
15
|
+
subject: string;
|
|
16
|
+
body: string;
|
|
17
|
+
bodyType?: "text" | "html";
|
|
18
|
+
attachments?: GmailAttachmentInput[];
|
|
19
|
+
}
|
|
20
|
+
export interface ListGmailOptions {
|
|
21
|
+
query?: string;
|
|
22
|
+
maxResults?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface GetGmailOptions {
|
|
25
|
+
id: string;
|
|
26
|
+
format?: "full" | "metadata" | "minimal";
|
|
27
|
+
}
|
|
28
|
+
export interface ModifyGmailOptions {
|
|
29
|
+
id: string;
|
|
30
|
+
addLabels?: string[];
|
|
31
|
+
removeLabels?: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface ReplyGmailOptions {
|
|
34
|
+
threadId: string;
|
|
35
|
+
messageId: string;
|
|
36
|
+
body: string;
|
|
37
|
+
bodyType?: "text" | "html";
|
|
38
|
+
attachments?: GmailAttachmentInput[];
|
|
39
|
+
}
|
|
40
|
+
export interface GmailMessageSummary {
|
|
41
|
+
id: string;
|
|
42
|
+
threadId?: string;
|
|
43
|
+
snippet?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface GmailMessageDetail extends GmailMessageSummary {
|
|
46
|
+
labelIds?: string[];
|
|
47
|
+
from?: string;
|
|
48
|
+
to?: string;
|
|
49
|
+
subject?: string;
|
|
50
|
+
date?: string;
|
|
51
|
+
body: string;
|
|
52
|
+
hasAttachments: boolean;
|
|
53
|
+
}
|
|
54
|
+
/** Build a raw RFC2822 message. Not base64-encoded yet. */
|
|
55
|
+
export declare function buildRawMessage(opts: SendGmailOptions): string;
|
|
56
|
+
/** Send an email. Returns { id, threadId }. */
|
|
57
|
+
export declare function sendGmail(client: Auth.OAuth2Client, opts: SendGmailOptions): Promise<{
|
|
58
|
+
id: string;
|
|
59
|
+
threadId?: string;
|
|
60
|
+
}>;
|
|
61
|
+
/** List messages, newest first, optionally filtered by a Gmail query. */
|
|
62
|
+
export declare function listGmailMessages(client: Auth.OAuth2Client, opts: ListGmailOptions): Promise<GmailMessageSummary[]>;
|
|
63
|
+
/** Get a single message with parsed headers, body and attachment flags. */
|
|
64
|
+
export declare function getGmailMessage(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<GmailMessageDetail>;
|
|
65
|
+
/** Add/remove labels on a message. Returns the updated labelIds. */
|
|
66
|
+
export declare function modifyGmailMessage(client: Auth.OAuth2Client, opts: ModifyGmailOptions): Promise<{
|
|
67
|
+
id: string;
|
|
68
|
+
labelIds: string[];
|
|
69
|
+
}>;
|
|
70
|
+
/** Reply to an existing message inside its thread, using proper In-Reply-To/References. */
|
|
71
|
+
export declare function replyGmail(client: Auth.OAuth2Client, opts: ReplyGmailOptions): Promise<{
|
|
72
|
+
id: string;
|
|
73
|
+
threadId?: string;
|
|
74
|
+
}>;
|
|
75
|
+
export interface GmailAttachmentInfo {
|
|
76
|
+
id: string;
|
|
77
|
+
/** Stable across messages.get calls — use for lookups. Gmail rotates `id`. */
|
|
78
|
+
partId?: string;
|
|
79
|
+
filename: string;
|
|
80
|
+
mimeType: string;
|
|
81
|
+
size?: number;
|
|
82
|
+
}
|
|
83
|
+
export interface GmailAttachmentData extends GmailAttachmentInfo {
|
|
84
|
+
/** Base64url-encoded raw bytes. */
|
|
85
|
+
dataBase64: string;
|
|
86
|
+
/** Decoded text when the MIME type is text-like. */
|
|
87
|
+
text?: string;
|
|
88
|
+
}
|
|
89
|
+
/** List attachments on a message (metadata only, no bytes). */
|
|
90
|
+
export declare function listGmailAttachments(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<GmailAttachmentInfo[]>;
|
|
91
|
+
/** Download a single attachment by messageId + attachmentId (or stable partId). */
|
|
92
|
+
export declare function getGmailAttachment(client: Auth.OAuth2Client, opts: GetGmailOptions & {
|
|
93
|
+
attachmentId: string;
|
|
94
|
+
partId?: string;
|
|
95
|
+
}): Promise<GmailAttachmentData>;
|
|
96
|
+
export interface DraftSummary {
|
|
97
|
+
id: string;
|
|
98
|
+
messageId?: string;
|
|
99
|
+
threadId?: string;
|
|
100
|
+
snippet?: string;
|
|
101
|
+
}
|
|
102
|
+
export interface DraftDetail extends GmailMessageDetail {
|
|
103
|
+
draftId: string;
|
|
104
|
+
}
|
|
105
|
+
/** Create a draft (same options as send, but nothing is delivered). */
|
|
106
|
+
export declare function createGmailDraft(client: Auth.OAuth2Client, opts: SendGmailOptions): Promise<DraftSummary>;
|
|
107
|
+
/** List drafts, newest first. */
|
|
108
|
+
export declare function listGmailDrafts(client: Auth.OAuth2Client, opts: {
|
|
109
|
+
maxResults?: number;
|
|
110
|
+
}): Promise<DraftSummary[]>;
|
|
111
|
+
/** Get a single draft with parsed headers and body. */
|
|
112
|
+
export declare function getGmailDraft(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<DraftDetail>;
|
|
113
|
+
/** Send an existing draft. */
|
|
114
|
+
export declare function sendGmailDraft(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<{
|
|
115
|
+
id: string;
|
|
116
|
+
threadId?: string;
|
|
117
|
+
}>;
|
|
118
|
+
/** Delete a draft. */
|
|
119
|
+
export declare function deleteGmailDraft(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<{
|
|
120
|
+
deleted: boolean;
|
|
121
|
+
id: string;
|
|
122
|
+
}>;
|
|
123
|
+
export interface GmailLabel {
|
|
124
|
+
id: string;
|
|
125
|
+
name: string;
|
|
126
|
+
type?: string;
|
|
127
|
+
messageListVisibility?: string;
|
|
128
|
+
labelListVisibility?: string;
|
|
129
|
+
}
|
|
130
|
+
export interface CreateGmailLabelOptions {
|
|
131
|
+
name: string;
|
|
132
|
+
messageListVisibility?: string;
|
|
133
|
+
labelListVisibility?: string;
|
|
134
|
+
}
|
|
135
|
+
/** List all labels. */
|
|
136
|
+
export declare function listGmailLabels(client: Auth.OAuth2Client): Promise<GmailLabel[]>;
|
|
137
|
+
/** Create a custom label. */
|
|
138
|
+
export declare function createGmailLabel(client: Auth.OAuth2Client, opts: CreateGmailLabelOptions): Promise<GmailLabel>;
|
|
139
|
+
/** Delete a label. */
|
|
140
|
+
export declare function deleteGmailLabel(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<{
|
|
141
|
+
deleted: boolean;
|
|
142
|
+
id: string;
|
|
143
|
+
}>;
|
|
144
|
+
/** Move a message to trash. */
|
|
145
|
+
export declare function trashGmailMessage(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<{
|
|
146
|
+
id: string;
|
|
147
|
+
labelIds: string[];
|
|
148
|
+
}>;
|
|
149
|
+
/** Restore a message from trash. */
|
|
150
|
+
export declare function untrashGmailMessage(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<{
|
|
151
|
+
id: string;
|
|
152
|
+
labelIds: string[];
|
|
153
|
+
}>;
|
|
154
|
+
/** Permanently delete a message. */
|
|
155
|
+
export declare function deleteGmailMessage(client: Auth.OAuth2Client, opts: GetGmailOptions): Promise<{
|
|
156
|
+
deleted: boolean;
|
|
157
|
+
id: string;
|
|
158
|
+
}>;
|
|
159
|
+
//# sourceMappingURL=gmail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/services/gmail.ts"],"names":[],"mappings":"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"}
|