@mcp-z/mcp-gmail 1.0.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/LICENSE +21 -0
- package/README.md +167 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +11 -0
- package/dist/cjs/constants.d.ts +11 -0
- package/dist/cjs/constants.js +39 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/email/composition/rfc822-builder.d.cts +11 -0
- package/dist/cjs/email/composition/rfc822-builder.d.ts +11 -0
- package/dist/cjs/email/composition/rfc822-builder.js +24 -0
- package/dist/cjs/email/composition/rfc822-builder.js.map +1 -0
- package/dist/cjs/email/messages/fetch-message.d.cts +24 -0
- package/dist/cjs/email/messages/fetch-message.d.ts +24 -0
- package/dist/cjs/email/messages/fetch-message.js +367 -0
- package/dist/cjs/email/messages/fetch-message.js.map +1 -0
- package/dist/cjs/email/messages/messages.d.cts +7 -0
- package/dist/cjs/email/messages/messages.d.ts +7 -0
- package/dist/cjs/email/messages/messages.js +146 -0
- package/dist/cjs/email/messages/messages.js.map +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.cts +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.ts +1 -0
- package/dist/cjs/email/parsing/header-parsing.js +20 -0
- package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
- package/dist/cjs/email/parsing/headers-utils.d.cts +5 -0
- package/dist/cjs/email/parsing/headers-utils.d.ts +5 -0
- package/dist/cjs/email/parsing/headers-utils.js +46 -0
- package/dist/cjs/email/parsing/headers-utils.js.map +1 -0
- package/dist/cjs/email/parsing/html-processing.d.cts +8 -0
- package/dist/cjs/email/parsing/html-processing.d.ts +8 -0
- package/dist/cjs/email/parsing/html-processing.js +72 -0
- package/dist/cjs/email/parsing/html-processing.js.map +1 -0
- package/dist/cjs/email/parsing/message-extraction.d.cts +2 -0
- package/dist/cjs/email/parsing/message-extraction.d.ts +2 -0
- package/dist/cjs/email/parsing/message-extraction.js +25 -0
- package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
- package/dist/cjs/email/querying/execute-query.d.cts +17 -0
- package/dist/cjs/email/querying/execute-query.d.ts +17 -0
- package/dist/cjs/email/querying/execute-query.js +265 -0
- package/dist/cjs/email/querying/execute-query.js.map +1 -0
- package/dist/cjs/email/querying/pagination.d.cts +27 -0
- package/dist/cjs/email/querying/pagination.d.ts +27 -0
- package/dist/cjs/email/querying/pagination.js +533 -0
- package/dist/cjs/email/querying/pagination.js.map +1 -0
- package/dist/cjs/email/querying/query-builder.d.cts +47 -0
- package/dist/cjs/email/querying/query-builder.d.ts +47 -0
- package/dist/cjs/email/querying/query-builder.js +387 -0
- package/dist/cjs/email/querying/query-builder.js.map +1 -0
- package/dist/cjs/email/querying/search-execution.d.cts +29 -0
- package/dist/cjs/email/querying/search-execution.d.ts +29 -0
- package/dist/cjs/email/querying/search-execution.js +190 -0
- package/dist/cjs/email/querying/search-execution.js.map +1 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +314 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/labels/gmail-labels.d.cts +2 -0
- package/dist/cjs/labels/gmail-labels.d.ts +2 -0
- package/dist/cjs/labels/gmail-labels.js +206 -0
- package/dist/cjs/labels/gmail-labels.js.map +1 -0
- package/dist/cjs/lib/base64-encoding.d.cts +2 -0
- package/dist/cjs/lib/base64-encoding.d.ts +2 -0
- package/dist/cjs/lib/base64-encoding.js +32 -0
- package/dist/cjs/lib/base64-encoding.js.map +1 -0
- package/dist/cjs/lib/create-store.d.cts +2 -0
- package/dist/cjs/lib/create-store.d.ts +2 -0
- package/dist/cjs/lib/create-store.js +166 -0
- package/dist/cjs/lib/create-store.js.map +1 -0
- package/dist/cjs/lib/date-conversion.d.cts +1 -0
- package/dist/cjs/lib/date-conversion.d.ts +1 -0
- package/dist/cjs/lib/date-conversion.js +16 -0
- package/dist/cjs/lib/date-conversion.js.map +1 -0
- package/dist/cjs/lib/messages-to-row.d.cts +61 -0
- package/dist/cjs/lib/messages-to-row.d.ts +61 -0
- package/dist/cjs/lib/messages-to-row.js +243 -0
- package/dist/cjs/lib/messages-to-row.js.map +1 -0
- package/dist/cjs/mcp/index.d.cts +3 -0
- package/dist/cjs/mcp/index.d.ts +3 -0
- package/dist/cjs/mcp/index.js +66 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.js +184 -0
- package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
- package/dist/cjs/mcp/prompts/index.d.cts +2 -0
- package/dist/cjs/mcp/prompts/index.d.ts +2 -0
- package/dist/cjs/mcp/prompts/index.js +26 -0
- package/dist/cjs/mcp/prompts/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
- package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/cjs/mcp/resources/email.d.cts +11 -0
- package/dist/cjs/mcp/resources/email.d.ts +11 -0
- package/dist/cjs/mcp/resources/email.js +256 -0
- package/dist/cjs/mcp/resources/email.js.map +1 -0
- package/dist/cjs/mcp/resources/index.d.cts +1 -0
- package/dist/cjs/mcp/resources/index.d.ts +1 -0
- package/dist/cjs/mcp/resources/index.js +17 -0
- package/dist/cjs/mcp/resources/index.js.map +1 -0
- package/dist/cjs/mcp/tools/categories-list.d.cts +58 -0
- package/dist/cjs/mcp/tools/categories-list.d.ts +58 -0
- package/dist/cjs/mcp/tools/categories-list.js +298 -0
- package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
- package/dist/cjs/mcp/tools/index.d.cts +11 -0
- package/dist/cjs/mcp/tools/index.d.ts +11 -0
- package/dist/cjs/mcp/tools/index.js +62 -0
- package/dist/cjs/mcp/tools/index.js.map +1 -0
- package/dist/cjs/mcp/tools/label-add.d.cts +61 -0
- package/dist/cjs/mcp/tools/label-add.d.ts +61 -0
- package/dist/cjs/mcp/tools/label-add.js +280 -0
- package/dist/cjs/mcp/tools/label-add.js.map +1 -0
- package/dist/cjs/mcp/tools/label-delete.d.cts +71 -0
- package/dist/cjs/mcp/tools/label-delete.d.ts +71 -0
- package/dist/cjs/mcp/tools/label-delete.js +476 -0
- package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
- package/dist/cjs/mcp/tools/labels-list.d.cts +75 -0
- package/dist/cjs/mcp/tools/labels-list.d.ts +75 -0
- package/dist/cjs/mcp/tools/labels-list.js +298 -0
- package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
- package/dist/cjs/mcp/tools/message-get.d.cts +146 -0
- package/dist/cjs/mcp/tools/message-get.d.ts +146 -0
- package/dist/cjs/mcp/tools/message-get.js +317 -0
- package/dist/cjs/mcp/tools/message-get.js.map +1 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.cts +50 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.ts +50 -0
- package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
- package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +71 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +71 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js +450 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/cjs/mcp/tools/message-respond.d.cts +60 -0
- package/dist/cjs/mcp/tools/message-respond.d.ts +60 -0
- package/dist/cjs/mcp/tools/message-respond.js +367 -0
- package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
- package/dist/cjs/mcp/tools/message-search.d.cts +182 -0
- package/dist/cjs/mcp/tools/message-search.d.ts +182 -0
- package/dist/cjs/mcp/tools/message-search.js +405 -0
- package/dist/cjs/mcp/tools/message-search.js.map +1 -0
- package/dist/cjs/mcp/tools/message-send.d.cts +87 -0
- package/dist/cjs/mcp/tools/message-send.d.ts +87 -0
- package/dist/cjs/mcp/tools/message-send.js +288 -0
- package/dist/cjs/mcp/tools/message-send.js.map +1 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.cts +84 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.ts +84 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js +530 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/gmail-query-schema.d.cts +36 -0
- package/dist/cjs/schemas/gmail-query-schema.d.ts +36 -0
- package/dist/cjs/schemas/gmail-query-schema.js +117 -0
- package/dist/cjs/schemas/gmail-query-schema.js.map +1 -0
- package/dist/cjs/schemas/index.d.cts +1 -0
- package/dist/cjs/schemas/index.d.ts +1 -0
- package/dist/cjs/schemas/index.js +19 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +48 -0
- package/dist/cjs/setup/config.d.ts +48 -0
- package/dist/cjs/setup/config.js +217 -0
- package/dist/cjs/setup/config.js.map +1 -0
- package/dist/cjs/setup/http.d.cts +8 -0
- package/dist/cjs/setup/http.d.ts +8 -0
- package/dist/cjs/setup/http.js +267 -0
- package/dist/cjs/setup/http.js.map +1 -0
- package/dist/cjs/setup/index.d.cts +5 -0
- package/dist/cjs/setup/index.d.ts +5 -0
- package/dist/cjs/setup/index.js +46 -0
- package/dist/cjs/setup/index.js.map +1 -0
- package/dist/cjs/setup/oauth-google.d.cts +54 -0
- package/dist/cjs/setup/oauth-google.d.ts +54 -0
- package/dist/cjs/setup/oauth-google.js +332 -0
- package/dist/cjs/setup/oauth-google.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +12 -0
- package/dist/cjs/setup/runtime.d.ts +12 -0
- package/dist/cjs/setup/runtime.js +489 -0
- package/dist/cjs/setup/runtime.js.map +1 -0
- package/dist/cjs/setup/stdio.d.cts +7 -0
- package/dist/cjs/setup/stdio.d.ts +7 -0
- package/dist/cjs/setup/stdio.js +239 -0
- package/dist/cjs/setup/stdio.js.map +1 -0
- package/dist/cjs/types.d.cts +54 -0
- package/dist/cjs/types.d.ts +54 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants.d.ts +11 -0
- package/dist/esm/constants.js +14 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/email/composition/rfc822-builder.d.ts +11 -0
- package/dist/esm/email/composition/rfc822-builder.js +13 -0
- package/dist/esm/email/composition/rfc822-builder.js.map +1 -0
- package/dist/esm/email/messages/fetch-message.d.ts +24 -0
- package/dist/esm/email/messages/fetch-message.js +123 -0
- package/dist/esm/email/messages/fetch-message.js.map +1 -0
- package/dist/esm/email/messages/messages.d.ts +7 -0
- package/dist/esm/email/messages/messages.js +91 -0
- package/dist/esm/email/messages/messages.js.map +1 -0
- package/dist/esm/email/parsing/header-parsing.d.ts +1 -0
- package/dist/esm/email/parsing/header-parsing.js +1 -0
- package/dist/esm/email/parsing/header-parsing.js.map +1 -0
- package/dist/esm/email/parsing/headers-utils.d.ts +5 -0
- package/dist/esm/email/parsing/headers-utils.js +25 -0
- package/dist/esm/email/parsing/headers-utils.js.map +1 -0
- package/dist/esm/email/parsing/html-processing.d.ts +8 -0
- package/dist/esm/email/parsing/html-processing.js +39 -0
- package/dist/esm/email/parsing/html-processing.js.map +1 -0
- package/dist/esm/email/parsing/message-extraction.d.ts +2 -0
- package/dist/esm/email/parsing/message-extraction.js +3 -0
- package/dist/esm/email/parsing/message-extraction.js.map +1 -0
- package/dist/esm/email/querying/execute-query.d.ts +17 -0
- package/dist/esm/email/querying/execute-query.js +45 -0
- package/dist/esm/email/querying/execute-query.js.map +1 -0
- package/dist/esm/email/querying/pagination.d.ts +27 -0
- package/dist/esm/email/querying/pagination.js +152 -0
- package/dist/esm/email/querying/pagination.js.map +1 -0
- package/dist/esm/email/querying/query-builder.d.ts +47 -0
- package/dist/esm/email/querying/query-builder.js +306 -0
- package/dist/esm/email/querying/query-builder.js.map +1 -0
- package/dist/esm/email/querying/search-execution.d.ts +29 -0
- package/dist/esm/email/querying/search-execution.js +35 -0
- package/dist/esm/email/querying/search-execution.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/labels/gmail-labels.d.ts +2 -0
- package/dist/esm/labels/gmail-labels.js +43 -0
- package/dist/esm/labels/gmail-labels.js.map +1 -0
- package/dist/esm/lib/base64-encoding.d.ts +2 -0
- package/dist/esm/lib/base64-encoding.js +13 -0
- package/dist/esm/lib/base64-encoding.js.map +1 -0
- package/dist/esm/lib/create-store.d.ts +2 -0
- package/dist/esm/lib/create-store.js +6 -0
- package/dist/esm/lib/create-store.js.map +1 -0
- package/dist/esm/lib/date-conversion.d.ts +1 -0
- package/dist/esm/lib/date-conversion.js +5 -0
- package/dist/esm/lib/date-conversion.js.map +1 -0
- package/dist/esm/lib/messages-to-row.d.ts +61 -0
- package/dist/esm/lib/messages-to-row.js +188 -0
- package/dist/esm/lib/messages-to-row.js.map +1 -0
- package/dist/esm/mcp/index.d.ts +3 -0
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/esm/mcp/prompts/draft-email.js +37 -0
- package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
- package/dist/esm/mcp/prompts/index.d.ts +2 -0
- package/dist/esm/mcp/prompts/index.js +2 -0
- package/dist/esm/mcp/prompts/index.js.map +1 -0
- package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/esm/mcp/prompts/query-syntax.js +74 -0
- package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/esm/mcp/resources/email.d.ts +11 -0
- package/dist/esm/mcp/resources/email.js +92 -0
- package/dist/esm/mcp/resources/email.js.map +1 -0
- package/dist/esm/mcp/resources/index.d.ts +1 -0
- package/dist/esm/mcp/resources/index.js +1 -0
- package/dist/esm/mcp/resources/index.js.map +1 -0
- package/dist/esm/mcp/tools/categories-list.d.ts +58 -0
- package/dist/esm/mcp/tools/categories-list.js +124 -0
- package/dist/esm/mcp/tools/categories-list.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +11 -0
- package/dist/esm/mcp/tools/index.js +11 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/mcp/tools/label-add.d.ts +61 -0
- package/dist/esm/mcp/tools/label-add.js +101 -0
- package/dist/esm/mcp/tools/label-add.js.map +1 -0
- package/dist/esm/mcp/tools/label-delete.d.ts +71 -0
- package/dist/esm/mcp/tools/label-delete.js +186 -0
- package/dist/esm/mcp/tools/label-delete.js.map +1 -0
- package/dist/esm/mcp/tools/labels-list.d.ts +75 -0
- package/dist/esm/mcp/tools/labels-list.js +122 -0
- package/dist/esm/mcp/tools/labels-list.js.map +1 -0
- package/dist/esm/mcp/tools/message-get.d.ts +146 -0
- package/dist/esm/mcp/tools/message-get.js +145 -0
- package/dist/esm/mcp/tools/message-get.js.map +1 -0
- package/dist/esm/mcp/tools/message-mark-read.d.ts +50 -0
- package/dist/esm/mcp/tools/message-mark-read.js +80 -0
- package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/esm/mcp/tools/message-move-to-trash.d.ts +71 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js +167 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/esm/mcp/tools/message-respond.d.ts +60 -0
- package/dist/esm/mcp/tools/message-respond.js +152 -0
- package/dist/esm/mcp/tools/message-respond.js.map +1 -0
- package/dist/esm/mcp/tools/message-search.d.ts +182 -0
- package/dist/esm/mcp/tools/message-search.js +180 -0
- package/dist/esm/mcp/tools/message-search.js.map +1 -0
- package/dist/esm/mcp/tools/message-send.d.ts +87 -0
- package/dist/esm/mcp/tools/message-send.js +115 -0
- package/dist/esm/mcp/tools/message-send.js.map +1 -0
- package/dist/esm/mcp/tools/messages-export-csv.d.ts +84 -0
- package/dist/esm/mcp/tools/messages-export-csv.js +261 -0
- package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/gmail-query-schema.d.ts +36 -0
- package/dist/esm/schemas/gmail-query-schema.js +72 -0
- package/dist/esm/schemas/gmail-query-schema.js.map +1 -0
- package/dist/esm/schemas/index.d.ts +1 -0
- package/dist/esm/schemas/index.js +1 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/setup/config.d.ts +48 -0
- package/dist/esm/setup/config.js +175 -0
- package/dist/esm/setup/config.js.map +1 -0
- package/dist/esm/setup/http.d.ts +8 -0
- package/dist/esm/setup/http.js +61 -0
- package/dist/esm/setup/http.js.map +1 -0
- package/dist/esm/setup/index.d.ts +5 -0
- package/dist/esm/setup/index.js +5 -0
- package/dist/esm/setup/index.js.map +1 -0
- package/dist/esm/setup/oauth-google.d.ts +54 -0
- package/dist/esm/setup/oauth-google.js +142 -0
- package/dist/esm/setup/oauth-google.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +12 -0
- package/dist/esm/setup/runtime.js +115 -0
- package/dist/esm/setup/runtime.js.map +1 -0
- package/dist/esm/setup/stdio.d.ts +7 -0
- package/dist/esm/setup/stdio.js +38 -0
- package/dist/esm/setup/stdio.js.map +1 -0
- package/dist/esm/types.d.ts +54 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get extractFiltersFromParsed () {
|
|
13
|
+
return extractFiltersFromParsed;
|
|
14
|
+
},
|
|
15
|
+
get toGmailQuery () {
|
|
16
|
+
return toGmailQuery;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function _array_like_to_array(arr, len) {
|
|
20
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
21
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
22
|
+
return arr2;
|
|
23
|
+
}
|
|
24
|
+
function _array_without_holes(arr) {
|
|
25
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
26
|
+
}
|
|
27
|
+
function _iterable_to_array(iter) {
|
|
28
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
29
|
+
}
|
|
30
|
+
function _non_iterable_spread() {
|
|
31
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
32
|
+
}
|
|
33
|
+
function _to_consumable_array(arr) {
|
|
34
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
35
|
+
}
|
|
36
|
+
function _type_of(obj) {
|
|
37
|
+
"@swc/helpers - typeof";
|
|
38
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
39
|
+
}
|
|
40
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
41
|
+
if (!o) return;
|
|
42
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
43
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
44
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
45
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
46
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Gmail category mappings - case insensitive input to exact system labels
|
|
50
|
+
*/ var GMAIL_CATEGORIES = {
|
|
51
|
+
primary: 'CATEGORY_PERSONAL',
|
|
52
|
+
social: 'CATEGORY_SOCIAL',
|
|
53
|
+
promotions: 'CATEGORY_PROMOTIONS',
|
|
54
|
+
updates: 'CATEGORY_UPDATES',
|
|
55
|
+
forums: 'CATEGORY_FORUMS'
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Validate and map category name to Gmail system label
|
|
59
|
+
* Throws error for invalid categories (fail fast principle)
|
|
60
|
+
*/ function mapCategoryToLabel(category) {
|
|
61
|
+
// Input validation - fail fast on invalid input
|
|
62
|
+
if (!category || typeof category !== 'string') {
|
|
63
|
+
throw new Error("Invalid category: expected non-empty string, got ".concat(typeof category === "undefined" ? "undefined" : _type_of(category)));
|
|
64
|
+
}
|
|
65
|
+
var trimmed = category.trim();
|
|
66
|
+
if (trimmed === '') {
|
|
67
|
+
throw new Error('Invalid category: empty string after trimming');
|
|
68
|
+
}
|
|
69
|
+
// Fail fast on unknown categories
|
|
70
|
+
var normalizedCategory = trimmed.toLowerCase();
|
|
71
|
+
var systemLabel = GMAIL_CATEGORIES[normalizedCategory];
|
|
72
|
+
if (!systemLabel) {
|
|
73
|
+
throw new Error('Invalid Gmail category: "'.concat(category, '". Valid categories: ').concat(Object.keys(GMAIL_CATEGORIES).join(', ')));
|
|
74
|
+
}
|
|
75
|
+
return systemLabel;
|
|
76
|
+
}
|
|
77
|
+
function toGmailQuery(query) {
|
|
78
|
+
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
79
|
+
var slashDates = options.dateSlash !== false;
|
|
80
|
+
var subjectIncludes = [];
|
|
81
|
+
var bodyIncludes = [];
|
|
82
|
+
var textIncludes = [];
|
|
83
|
+
var fromIncludes = [];
|
|
84
|
+
var toIncludes = [];
|
|
85
|
+
var ccIncludes = [];
|
|
86
|
+
var bccIncludes = [];
|
|
87
|
+
var categoriesIncludes = [];
|
|
88
|
+
var labelIncludes = [];
|
|
89
|
+
var hasAttachment;
|
|
90
|
+
function p(s) {
|
|
91
|
+
return "(".concat(String(s !== null && s !== void 0 ? s : ''), ")");
|
|
92
|
+
}
|
|
93
|
+
function fmt(d) {
|
|
94
|
+
var str = String(d !== null && d !== void 0 ? d : '');
|
|
95
|
+
return slashDates ? str.replace(/-/g, '/') : str;
|
|
96
|
+
}
|
|
97
|
+
function fv(field, raw) {
|
|
98
|
+
var rawVal = String(raw !== null && raw !== void 0 ? raw : '');
|
|
99
|
+
if (rawVal.trim() === '') {
|
|
100
|
+
throw new Error("Invalid ".concat(field, " value: empty string"));
|
|
101
|
+
}
|
|
102
|
+
var v = quote(rawVal);
|
|
103
|
+
if (field === 'subject') subjectIncludes.push(rawVal);
|
|
104
|
+
if (field === 'body') bodyIncludes.push(rawVal);
|
|
105
|
+
if (field === 'text') {
|
|
106
|
+
textIncludes.push(rawVal);
|
|
107
|
+
bodyIncludes.push(rawVal);
|
|
108
|
+
}
|
|
109
|
+
if (field === 'from') fromIncludes.push(rawVal);
|
|
110
|
+
if (field === 'to') toIncludes.push(rawVal);
|
|
111
|
+
if (field === 'cc') ccIncludes.push(rawVal);
|
|
112
|
+
if (field === 'bcc') bccIncludes.push(rawVal);
|
|
113
|
+
if (field === 'categories') {
|
|
114
|
+
var systemLabel = mapCategoryToLabel(rawVal);
|
|
115
|
+
categoriesIncludes.push(rawVal);
|
|
116
|
+
return "label:".concat(systemLabel);
|
|
117
|
+
}
|
|
118
|
+
if (field === 'label') {
|
|
119
|
+
// Direct passthrough to Gmail's label syntax (case-sensitive)
|
|
120
|
+
labelIncludes.push(rawVal);
|
|
121
|
+
return "label:".concat(quote(rawVal));
|
|
122
|
+
}
|
|
123
|
+
if (field === 'text' || field === 'body') return p("subject:".concat(v, " OR ").concat(v));
|
|
124
|
+
return "".concat(field, ":").concat(v);
|
|
125
|
+
}
|
|
126
|
+
function chain(op, arr) {
|
|
127
|
+
if (arr.length === 0) throw new Error("chain: empty array for ".concat(op, " operation"));
|
|
128
|
+
if (arr.length === 1) {
|
|
129
|
+
var _arr_;
|
|
130
|
+
var first = (_arr_ = arr[0]) !== null && _arr_ !== void 0 ? _arr_ : '';
|
|
131
|
+
return first;
|
|
132
|
+
}
|
|
133
|
+
return p(arr.join(" ".concat(op, " ")));
|
|
134
|
+
}
|
|
135
|
+
function fieldExpr(field, op) {
|
|
136
|
+
if (op.$any) {
|
|
137
|
+
var results = op.$any.map(function(v) {
|
|
138
|
+
return fv(field, String(v !== null && v !== void 0 ? v : ''));
|
|
139
|
+
});
|
|
140
|
+
return chain('OR', results);
|
|
141
|
+
}
|
|
142
|
+
if (op.$all) {
|
|
143
|
+
var results1 = op.$all.map(function(v) {
|
|
144
|
+
return fv(field, String(v !== null && v !== void 0 ? v : ''));
|
|
145
|
+
});
|
|
146
|
+
return chain('AND', results1);
|
|
147
|
+
}
|
|
148
|
+
if (op.$none) {
|
|
149
|
+
var results2 = op.$none.map(function(v) {
|
|
150
|
+
return fv(field, String(v !== null && v !== void 0 ? v : ''));
|
|
151
|
+
});
|
|
152
|
+
return "NOT ".concat(p(chain('OR', results2)));
|
|
153
|
+
}
|
|
154
|
+
throw new Error("Unknown field operator ".concat(JSON.stringify(op)));
|
|
155
|
+
}
|
|
156
|
+
function dateExpr(d) {
|
|
157
|
+
var _parts_;
|
|
158
|
+
var parts = [];
|
|
159
|
+
if (d && (typeof d === "undefined" ? "undefined" : _type_of(d)) === 'object' && '$gte' in d) {
|
|
160
|
+
parts.push("after:".concat(fmt(d.$gte)));
|
|
161
|
+
}
|
|
162
|
+
if (d && (typeof d === "undefined" ? "undefined" : _type_of(d)) === 'object' && '$lt' in d) {
|
|
163
|
+
parts.push("before:".concat(fmt(d.$lt)));
|
|
164
|
+
}
|
|
165
|
+
return parts.length > 1 ? p(parts.join(' AND ')) : (_parts_ = parts[0]) !== null && _parts_ !== void 0 ? _parts_ : '';
|
|
166
|
+
}
|
|
167
|
+
function fieldKeys() {
|
|
168
|
+
return [
|
|
169
|
+
'from',
|
|
170
|
+
'to',
|
|
171
|
+
'cc',
|
|
172
|
+
'bcc',
|
|
173
|
+
'subject',
|
|
174
|
+
'text',
|
|
175
|
+
'body',
|
|
176
|
+
'categories',
|
|
177
|
+
'label'
|
|
178
|
+
];
|
|
179
|
+
}
|
|
180
|
+
function quote(s) {
|
|
181
|
+
var str = String(s !== null && s !== void 0 ? s : '');
|
|
182
|
+
return /[\s"()]/.test(str) ? '"'.concat(str.replace(/["\\]/g, function(m) {
|
|
183
|
+
return "\\".concat(m);
|
|
184
|
+
}), '"') : str;
|
|
185
|
+
}
|
|
186
|
+
function emit(n) {
|
|
187
|
+
if (!n || (typeof n === "undefined" ? "undefined" : _type_of(n)) !== 'object') return '';
|
|
188
|
+
if ('$and' in n && Array.isArray(n.$and)) {
|
|
189
|
+
return p(n.$and.map(emit).join(' AND '));
|
|
190
|
+
}
|
|
191
|
+
if ('$or' in n && Array.isArray(n.$or)) {
|
|
192
|
+
return p(n.$or.map(emit).join(' OR '));
|
|
193
|
+
}
|
|
194
|
+
if ('$not' in n) {
|
|
195
|
+
return "NOT ".concat(emit(n.$not));
|
|
196
|
+
}
|
|
197
|
+
if ('hasAttachment' in n) {
|
|
198
|
+
hasAttachment = true;
|
|
199
|
+
return 'has:attachment';
|
|
200
|
+
}
|
|
201
|
+
if ('fuzzyPhrase' in n) {
|
|
202
|
+
// Gmail fuzzy phrase matching using quoted strings
|
|
203
|
+
// Example: { fuzzyPhrase: "quarterly report" } -> "quarterly report"
|
|
204
|
+
return quote(n.fuzzyPhrase);
|
|
205
|
+
}
|
|
206
|
+
if ('date' in n) {
|
|
207
|
+
return dateExpr(n.date);
|
|
208
|
+
}
|
|
209
|
+
// Handle empty objects
|
|
210
|
+
var keys = Object.keys(n);
|
|
211
|
+
if (keys.length === 0) return '';
|
|
212
|
+
if (keys.length === 1) {
|
|
213
|
+
var _keys_;
|
|
214
|
+
var k = String((_keys_ = keys[0]) !== null && _keys_ !== void 0 ? _keys_ : '');
|
|
215
|
+
if (fieldKeys().includes(k)) {
|
|
216
|
+
var op = n[k];
|
|
217
|
+
// Handle string-only category queries properly (C2 fix)
|
|
218
|
+
var normalizedOp = typeof op === 'string' ? {
|
|
219
|
+
$any: [
|
|
220
|
+
op
|
|
221
|
+
]
|
|
222
|
+
} : op !== null && op !== void 0 ? op : {};
|
|
223
|
+
return fieldExpr(k, normalizedOp);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
throw new Error("Unknown node: ".concat(JSON.stringify(n)));
|
|
227
|
+
}
|
|
228
|
+
function emitTop(n) {
|
|
229
|
+
if (!n || (typeof n === "undefined" ? "undefined" : _type_of(n)) !== 'object') return '';
|
|
230
|
+
// Handle empty objects
|
|
231
|
+
if (Object.keys(n).length === 0) return '';
|
|
232
|
+
if ('$and' in n && Array.isArray(n.$and)) {
|
|
233
|
+
return n.$and.map(emit).join(' ');
|
|
234
|
+
}
|
|
235
|
+
if ('$or' in n && Array.isArray(n.$or)) {
|
|
236
|
+
return n.$or.map(emit).join(' OR ');
|
|
237
|
+
}
|
|
238
|
+
if ('$not' in n) {
|
|
239
|
+
return "NOT ".concat(emit(n.$not));
|
|
240
|
+
}
|
|
241
|
+
if ('hasAttachment' in n) {
|
|
242
|
+
hasAttachment = true;
|
|
243
|
+
return 'has:attachment';
|
|
244
|
+
}
|
|
245
|
+
if ('fuzzyPhrase' in n) {
|
|
246
|
+
// Gmail fuzzy phrase matching using quoted strings
|
|
247
|
+
return quote(n.fuzzyPhrase);
|
|
248
|
+
}
|
|
249
|
+
if ('date' in n) {
|
|
250
|
+
return dateExpr(n.date);
|
|
251
|
+
}
|
|
252
|
+
return emit(n);
|
|
253
|
+
}
|
|
254
|
+
var q = emitTop(query);
|
|
255
|
+
var filters = {};
|
|
256
|
+
if (subjectIncludes.length) filters.subjectIncludes = subjectIncludes;
|
|
257
|
+
if (bodyIncludes.length) filters.bodyIncludes = bodyIncludes;
|
|
258
|
+
if (textIncludes.length) filters.textIncludes = textIncludes;
|
|
259
|
+
if (fromIncludes.length) filters.fromIncludes = fromIncludes;
|
|
260
|
+
if (toIncludes.length) filters.toIncludes = toIncludes;
|
|
261
|
+
if (ccIncludes.length) filters.ccIncludes = ccIncludes;
|
|
262
|
+
if (bccIncludes.length) filters.bccIncludes = bccIncludes;
|
|
263
|
+
if (categoriesIncludes.length) filters.categoriesIncludes = categoriesIncludes;
|
|
264
|
+
if (labelIncludes.length) filters.labelIncludes = labelIncludes;
|
|
265
|
+
if (typeof hasAttachment === 'boolean') filters.hasAttachment = hasAttachment;
|
|
266
|
+
return {
|
|
267
|
+
q: q !== null && q !== void 0 ? q : '',
|
|
268
|
+
filters: filters
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function extractFiltersFromParsed(parsed) {
|
|
272
|
+
var filters = {
|
|
273
|
+
subjectIncludes: [],
|
|
274
|
+
bodyIncludes: [],
|
|
275
|
+
textIncludes: [],
|
|
276
|
+
categoriesIncludes: [],
|
|
277
|
+
labelIncludes: []
|
|
278
|
+
};
|
|
279
|
+
function walk(node) {
|
|
280
|
+
if (!node || (typeof node === "undefined" ? "undefined" : _type_of(node)) !== 'object') return;
|
|
281
|
+
if ('$and' in node && Array.isArray(node.$and)) {
|
|
282
|
+
node.$and.forEach(walk);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
if ('$or' in node && Array.isArray(node.$or)) {
|
|
286
|
+
node.$or.forEach(walk);
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
if ('$not' in node) {
|
|
290
|
+
walk(node.$not);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if ('hasAttachment' in node) {
|
|
294
|
+
filters.hasAttachment = node.hasAttachment === true;
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
if ('date' in node) {
|
|
298
|
+
var dateObj = node.date;
|
|
299
|
+
if (dateObj && (typeof dateObj === "undefined" ? "undefined" : _type_of(dateObj)) === 'object') {
|
|
300
|
+
if ('$gte' in dateObj) {
|
|
301
|
+
filters.since = String(dateObj.$gte);
|
|
302
|
+
}
|
|
303
|
+
if ('$lt' in dateObj) {
|
|
304
|
+
filters.before = String(dateObj.$lt);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
var keys = Object.keys(node || {});
|
|
310
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
311
|
+
try {
|
|
312
|
+
for(var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
313
|
+
var k = _step.value;
|
|
314
|
+
var v = node[k];
|
|
315
|
+
if (!v || (typeof v === "undefined" ? "undefined" : _type_of(v)) !== 'object') continue;
|
|
316
|
+
if (k === 'subject') {
|
|
317
|
+
var _filters_subjectIncludes, _filters_subjectIncludes1, _filters_subjectIncludes2;
|
|
318
|
+
var _filters_subjectIncludes3, _filters_subjectIncludes4, _filters_subjectIncludes5;
|
|
319
|
+
if ('$any' in v && Array.isArray(v.$any)) (_filters_subjectIncludes3 = filters.subjectIncludes) === null || _filters_subjectIncludes3 === void 0 ? void 0 : (_filters_subjectIncludes = _filters_subjectIncludes3).push.apply(_filters_subjectIncludes, _to_consumable_array(v.$any));
|
|
320
|
+
if ('$all' in v && Array.isArray(v.$all)) (_filters_subjectIncludes4 = filters.subjectIncludes) === null || _filters_subjectIncludes4 === void 0 ? void 0 : (_filters_subjectIncludes1 = _filters_subjectIncludes4).push.apply(_filters_subjectIncludes1, _to_consumable_array(v.$all));
|
|
321
|
+
if ('$none' in v && Array.isArray(v.$none)) (_filters_subjectIncludes5 = filters.subjectIncludes) === null || _filters_subjectIncludes5 === void 0 ? void 0 : (_filters_subjectIncludes2 = _filters_subjectIncludes5).push.apply(_filters_subjectIncludes2, _to_consumable_array(v.$none));
|
|
322
|
+
} else if (k === 'body') {
|
|
323
|
+
var _filters_bodyIncludes, _filters_bodyIncludes1, _filters_bodyIncludes2;
|
|
324
|
+
var _filters_bodyIncludes3, _filters_bodyIncludes4, _filters_bodyIncludes5;
|
|
325
|
+
if ('$any' in v && Array.isArray(v.$any)) (_filters_bodyIncludes3 = filters.bodyIncludes) === null || _filters_bodyIncludes3 === void 0 ? void 0 : (_filters_bodyIncludes = _filters_bodyIncludes3).push.apply(_filters_bodyIncludes, _to_consumable_array(v.$any));
|
|
326
|
+
if ('$all' in v && Array.isArray(v.$all)) (_filters_bodyIncludes4 = filters.bodyIncludes) === null || _filters_bodyIncludes4 === void 0 ? void 0 : (_filters_bodyIncludes1 = _filters_bodyIncludes4).push.apply(_filters_bodyIncludes1, _to_consumable_array(v.$all));
|
|
327
|
+
if ('$none' in v && Array.isArray(v.$none)) (_filters_bodyIncludes5 = filters.bodyIncludes) === null || _filters_bodyIncludes5 === void 0 ? void 0 : (_filters_bodyIncludes2 = _filters_bodyIncludes5).push.apply(_filters_bodyIncludes2, _to_consumable_array(v.$none));
|
|
328
|
+
} else if (k === 'text') {
|
|
329
|
+
var _filters_textIncludes, _filters_textIncludes1, _filters_textIncludes2;
|
|
330
|
+
var _filters_textIncludes3, _filters_textIncludes4, _filters_textIncludes5;
|
|
331
|
+
if ('$any' in v && Array.isArray(v.$any)) (_filters_textIncludes3 = filters.textIncludes) === null || _filters_textIncludes3 === void 0 ? void 0 : (_filters_textIncludes = _filters_textIncludes3).push.apply(_filters_textIncludes, _to_consumable_array(v.$any));
|
|
332
|
+
if ('$all' in v && Array.isArray(v.$all)) (_filters_textIncludes4 = filters.textIncludes) === null || _filters_textIncludes4 === void 0 ? void 0 : (_filters_textIncludes1 = _filters_textIncludes4).push.apply(_filters_textIncludes1, _to_consumable_array(v.$all));
|
|
333
|
+
if ('$none' in v && Array.isArray(v.$none)) (_filters_textIncludes5 = filters.textIncludes) === null || _filters_textIncludes5 === void 0 ? void 0 : (_filters_textIncludes2 = _filters_textIncludes5).push.apply(_filters_textIncludes2, _to_consumable_array(v.$none));
|
|
334
|
+
} else if (k === 'categories') {
|
|
335
|
+
// Validate all categories (will throw on invalid)
|
|
336
|
+
if ('$any' in v && Array.isArray(v.$any)) {
|
|
337
|
+
var _filters_categoriesIncludes;
|
|
338
|
+
var _filters_categoriesIncludes1;
|
|
339
|
+
v.$any.forEach(function(cat) {
|
|
340
|
+
mapCategoryToLabel(String(cat));
|
|
341
|
+
});
|
|
342
|
+
(_filters_categoriesIncludes1 = filters.categoriesIncludes) === null || _filters_categoriesIncludes1 === void 0 ? void 0 : (_filters_categoriesIncludes = _filters_categoriesIncludes1).push.apply(_filters_categoriesIncludes, _to_consumable_array(v.$any.map(String)));
|
|
343
|
+
}
|
|
344
|
+
if ('$all' in v && Array.isArray(v.$all)) {
|
|
345
|
+
var _filters_categoriesIncludes2;
|
|
346
|
+
var _filters_categoriesIncludes3;
|
|
347
|
+
v.$all.forEach(function(cat) {
|
|
348
|
+
mapCategoryToLabel(String(cat));
|
|
349
|
+
});
|
|
350
|
+
(_filters_categoriesIncludes3 = filters.categoriesIncludes) === null || _filters_categoriesIncludes3 === void 0 ? void 0 : (_filters_categoriesIncludes2 = _filters_categoriesIncludes3).push.apply(_filters_categoriesIncludes2, _to_consumable_array(v.$all.map(String)));
|
|
351
|
+
}
|
|
352
|
+
if ('$none' in v && Array.isArray(v.$none)) {
|
|
353
|
+
var _filters_categoriesIncludes4;
|
|
354
|
+
var _filters_categoriesIncludes5;
|
|
355
|
+
v.$none.forEach(function(cat) {
|
|
356
|
+
mapCategoryToLabel(String(cat));
|
|
357
|
+
});
|
|
358
|
+
(_filters_categoriesIncludes5 = filters.categoriesIncludes) === null || _filters_categoriesIncludes5 === void 0 ? void 0 : (_filters_categoriesIncludes4 = _filters_categoriesIncludes5).push.apply(_filters_categoriesIncludes4, _to_consumable_array(v.$none.map(String)));
|
|
359
|
+
}
|
|
360
|
+
} else if (k === 'label') {
|
|
361
|
+
var _filters_labelIncludes, _filters_labelIncludes1, _filters_labelIncludes2;
|
|
362
|
+
var _filters_labelIncludes3, _filters_labelIncludes4, _filters_labelIncludes5;
|
|
363
|
+
// Direct passthrough for labels (case-sensitive)
|
|
364
|
+
if ('$any' in v && Array.isArray(v.$any)) (_filters_labelIncludes3 = filters.labelIncludes) === null || _filters_labelIncludes3 === void 0 ? void 0 : (_filters_labelIncludes = _filters_labelIncludes3).push.apply(_filters_labelIncludes, _to_consumable_array(v.$any.map(String)));
|
|
365
|
+
if ('$all' in v && Array.isArray(v.$all)) (_filters_labelIncludes4 = filters.labelIncludes) === null || _filters_labelIncludes4 === void 0 ? void 0 : (_filters_labelIncludes1 = _filters_labelIncludes4).push.apply(_filters_labelIncludes1, _to_consumable_array(v.$all.map(String)));
|
|
366
|
+
if ('$none' in v && Array.isArray(v.$none)) (_filters_labelIncludes5 = filters.labelIncludes) === null || _filters_labelIncludes5 === void 0 ? void 0 : (_filters_labelIncludes2 = _filters_labelIncludes5).push.apply(_filters_labelIncludes2, _to_consumable_array(v.$none.map(String)));
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
} catch (err) {
|
|
370
|
+
_didIteratorError = true;
|
|
371
|
+
_iteratorError = err;
|
|
372
|
+
} finally{
|
|
373
|
+
try {
|
|
374
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
375
|
+
_iterator.return();
|
|
376
|
+
}
|
|
377
|
+
} finally{
|
|
378
|
+
if (_didIteratorError) {
|
|
379
|
+
throw _iteratorError;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
walk(parsed);
|
|
385
|
+
return filters;
|
|
386
|
+
}
|
|
387
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-gmail/src/email/querying/query-builder.ts"],"sourcesContent":["import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';\n\n/**\n * Field operator interface for query filters\n */\nexport interface FieldOperator {\n $any?: string[];\n $all?: string[];\n $none?: string[];\n}\n\n/**\n * Field query interface with support for all email fields including categories and labels\n */\nexport interface FieldQuery {\n from?: FieldOperator | string;\n to?: FieldOperator | string;\n cc?: FieldOperator | string;\n bcc?: FieldOperator | string;\n subject?: FieldOperator | string;\n text?: FieldOperator | string;\n body?: FieldOperator | string;\n categories?: FieldOperator | string;\n label?: FieldOperator | string;\n}\n\n/**\n * Filter extraction result with all collected values from a query\n */\nexport interface Filters {\n subjectIncludes?: string[];\n bodyIncludes?: string[];\n textIncludes?: string[];\n fromIncludes?: string[];\n toIncludes?: string[];\n ccIncludes?: string[];\n bccIncludes?: string[];\n categoriesIncludes?: string[];\n labelIncludes?: string[];\n hasAttachment?: boolean;\n since?: string;\n before?: string;\n}\n\n/**\n * Gmail category mappings - case insensitive input to exact system labels\n */\nconst GMAIL_CATEGORIES = {\n primary: 'CATEGORY_PERSONAL',\n social: 'CATEGORY_SOCIAL',\n promotions: 'CATEGORY_PROMOTIONS',\n updates: 'CATEGORY_UPDATES',\n forums: 'CATEGORY_FORUMS',\n} as const;\n\n/**\n * Validate and map category name to Gmail system label\n * Throws error for invalid categories (fail fast principle)\n */\nfunction mapCategoryToLabel(category: string): string {\n // Input validation - fail fast on invalid input\n if (!category || typeof category !== 'string') {\n throw new Error(`Invalid category: expected non-empty string, got ${typeof category}`);\n }\n\n const trimmed = category.trim();\n if (trimmed === '') {\n throw new Error('Invalid category: empty string after trimming');\n }\n\n // Fail fast on unknown categories\n const normalizedCategory = trimmed.toLowerCase();\n const systemLabel = GMAIL_CATEGORIES[normalizedCategory as keyof typeof GMAIL_CATEGORIES];\n\n if (!systemLabel) {\n throw new Error(`Invalid Gmail category: \"${category}\". Valid categories: ${Object.keys(GMAIL_CATEGORIES).join(', ')}`);\n }\n\n return systemLabel;\n}\n\nexport function toGmailQuery(query: QueryNode, options: { dateSlash?: boolean } = {}) {\n const slashDates = options.dateSlash !== false;\n const subjectIncludes: string[] = [];\n const bodyIncludes: string[] = [];\n const textIncludes: string[] = [];\n const fromIncludes: string[] = [];\n const toIncludes: string[] = [];\n const ccIncludes: string[] = [];\n const bccIncludes: string[] = [];\n const categoriesIncludes: string[] = [];\n const labelIncludes: string[] = [];\n let hasAttachment: boolean | undefined;\n\n function p(s: unknown) {\n return `(${String(s ?? '')})`;\n }\n function fmt(d: unknown) {\n const str = String(d ?? '');\n return slashDates ? str.replace(/-/g, '/') : str;\n }\n\n function fv(field: string, raw?: unknown) {\n const rawVal = String(raw ?? '');\n if (rawVal.trim() === '') {\n throw new Error(`Invalid ${field} value: empty string`);\n }\n const v = quote(rawVal);\n if (field === 'subject') subjectIncludes.push(rawVal);\n if (field === 'body') bodyIncludes.push(rawVal);\n if (field === 'text') {\n textIncludes.push(rawVal);\n bodyIncludes.push(rawVal);\n }\n if (field === 'from') fromIncludes.push(rawVal);\n if (field === 'to') toIncludes.push(rawVal);\n if (field === 'cc') ccIncludes.push(rawVal);\n if (field === 'bcc') bccIncludes.push(rawVal);\n if (field === 'categories') {\n const systemLabel = mapCategoryToLabel(rawVal);\n categoriesIncludes.push(rawVal);\n return `label:${systemLabel}`;\n }\n if (field === 'label') {\n // Direct passthrough to Gmail's label syntax (case-sensitive)\n labelIncludes.push(rawVal);\n return `label:${quote(rawVal)}`;\n }\n if (field === 'text' || field === 'body') return p(`subject:${v} OR ${v}`);\n return `${field}:${v}`;\n }\n\n function chain(op: 'AND' | 'OR', arr: string[]) {\n if (arr.length === 0) throw new Error(`chain: empty array for ${op} operation`);\n if (arr.length === 1) {\n const first = arr[0] ?? '';\n return first;\n }\n return p(arr.join(` ${op} `));\n }\n\n function fieldExpr(field: string, op: FieldOperator) {\n if (op.$any) {\n const results = op.$any.map((v: string) => fv(field, String(v ?? '')));\n return chain('OR', results);\n }\n if (op.$all) {\n const results = op.$all.map((v: string) => fv(field, String(v ?? '')));\n return chain('AND', results);\n }\n if (op.$none) {\n const results = op.$none.map((v: string) => fv(field, String(v ?? '')));\n return `NOT ${p(chain('OR', results))}`;\n }\n throw new Error(`Unknown field operator ${JSON.stringify(op)}`);\n }\n\n function dateExpr(d: unknown) {\n const parts: string[] = [];\n if (d && typeof d === 'object' && '$gte' in d) {\n parts.push(`after:${fmt(d.$gte)}`);\n }\n if (d && typeof d === 'object' && '$lt' in d) {\n parts.push(`before:${fmt(d.$lt)}`);\n }\n return parts.length > 1 ? p(parts.join(' AND ')) : (parts[0] ?? '');\n }\n\n function fieldKeys() {\n return ['from', 'to', 'cc', 'bcc', 'subject', 'text', 'body', 'categories', 'label'];\n }\n\n function quote(s?: unknown) {\n const str = String(s ?? '');\n return /[\\s\"()]/.test(str) ? `\"${str.replace(/[\"\\\\]/g, (m) => `\\\\${m}`)}\"` : str;\n }\n\n function emit(n: unknown): string {\n if (!n || typeof n !== 'object') return '';\n\n if ('$and' in n && Array.isArray(n.$and)) {\n return p(n.$and.map(emit).join(' AND '));\n }\n if ('$or' in n && Array.isArray(n.$or)) {\n return p(n.$or.map(emit).join(' OR '));\n }\n if ('$not' in n) {\n return `NOT ${emit(n.$not)}`;\n }\n if ('hasAttachment' in n) {\n hasAttachment = true;\n return 'has:attachment';\n }\n if ('fuzzyPhrase' in n) {\n // Gmail fuzzy phrase matching using quoted strings\n // Example: { fuzzyPhrase: \"quarterly report\" } -> \"quarterly report\"\n return quote(n.fuzzyPhrase);\n }\n if ('date' in n) {\n return dateExpr(n.date);\n }\n\n // Handle empty objects\n const keys = Object.keys(n);\n if (keys.length === 0) return '';\n\n if (keys.length === 1) {\n const k = String(keys[0] ?? '');\n if (fieldKeys().includes(k)) {\n const op = (n as Record<string, unknown>)[k];\n // Handle string-only category queries properly (C2 fix)\n const normalizedOp: FieldOperator = typeof op === 'string' ? { $any: [op] } : (op ?? {});\n return fieldExpr(k, normalizedOp);\n }\n }\n throw new Error(`Unknown node: ${JSON.stringify(n)}`);\n }\n\n function emitTop(n: unknown): string {\n if (!n || typeof n !== 'object') return '';\n\n // Handle empty objects\n if (Object.keys(n).length === 0) return '';\n\n if ('$and' in n && Array.isArray(n.$and)) {\n return n.$and.map(emit).join(' ');\n }\n if ('$or' in n && Array.isArray(n.$or)) {\n return n.$or.map(emit).join(' OR ');\n }\n if ('$not' in n) {\n return `NOT ${emit(n.$not)}`;\n }\n if ('hasAttachment' in n) {\n hasAttachment = true;\n return 'has:attachment';\n }\n if ('fuzzyPhrase' in n) {\n // Gmail fuzzy phrase matching using quoted strings\n return quote(n.fuzzyPhrase);\n }\n if ('date' in n) {\n return dateExpr(n.date);\n }\n return emit(n);\n }\n\n const q = emitTop(query);\n const filters: Record<string, unknown> = {};\n if (subjectIncludes.length) filters.subjectIncludes = subjectIncludes;\n if (bodyIncludes.length) filters.bodyIncludes = bodyIncludes;\n if (textIncludes.length) filters.textIncludes = textIncludes;\n if (fromIncludes.length) filters.fromIncludes = fromIncludes;\n if (toIncludes.length) filters.toIncludes = toIncludes;\n if (ccIncludes.length) filters.ccIncludes = ccIncludes;\n if (bccIncludes.length) filters.bccIncludes = bccIncludes;\n if (categoriesIncludes.length) filters.categoriesIncludes = categoriesIncludes;\n if (labelIncludes.length) filters.labelIncludes = labelIncludes;\n if (typeof hasAttachment === 'boolean') filters.hasAttachment = hasAttachment;\n return { q: q ?? '', filters };\n}\n\nexport function extractFiltersFromParsed(parsed: QueryNode): Filters {\n const filters: Filters = {\n subjectIncludes: [],\n bodyIncludes: [],\n textIncludes: [],\n categoriesIncludes: [],\n labelIncludes: [],\n };\n\n function walk(node: unknown): void {\n if (!node || typeof node !== 'object') return;\n\n if ('$and' in node && Array.isArray(node.$and)) {\n node.$and.forEach(walk);\n return;\n }\n if ('$or' in node && Array.isArray(node.$or)) {\n node.$or.forEach(walk);\n return;\n }\n if ('$not' in node) {\n walk(node.$not);\n return;\n }\n if ('hasAttachment' in node) {\n filters.hasAttachment = node.hasAttachment === true;\n return;\n }\n if ('date' in node) {\n const dateObj = node.date;\n if (dateObj && typeof dateObj === 'object') {\n if ('$gte' in dateObj) {\n filters.since = String(dateObj.$gte);\n }\n if ('$lt' in dateObj) {\n filters.before = String(dateObj.$lt);\n }\n }\n return;\n }\n\n const keys = Object.keys(node || {});\n for (const k of keys) {\n const v = (node as Record<string, unknown>)[k];\n if (!v || typeof v !== 'object') continue;\n\n if (k === 'subject') {\n if ('$any' in v && Array.isArray(v.$any)) filters.subjectIncludes?.push(...v.$any);\n if ('$all' in v && Array.isArray(v.$all)) filters.subjectIncludes?.push(...v.$all);\n if ('$none' in v && Array.isArray(v.$none)) filters.subjectIncludes?.push(...v.$none);\n } else if (k === 'body') {\n if ('$any' in v && Array.isArray(v.$any)) filters.bodyIncludes?.push(...v.$any);\n if ('$all' in v && Array.isArray(v.$all)) filters.bodyIncludes?.push(...v.$all);\n if ('$none' in v && Array.isArray(v.$none)) filters.bodyIncludes?.push(...v.$none);\n } else if (k === 'text') {\n if ('$any' in v && Array.isArray(v.$any)) filters.textIncludes?.push(...v.$any);\n if ('$all' in v && Array.isArray(v.$all)) filters.textIncludes?.push(...v.$all);\n if ('$none' in v && Array.isArray(v.$none)) filters.textIncludes?.push(...v.$none);\n } else if (k === 'categories') {\n // Validate all categories (will throw on invalid)\n if ('$any' in v && Array.isArray(v.$any)) {\n v.$any.forEach((cat: unknown) => {\n mapCategoryToLabel(String(cat));\n });\n filters.categoriesIncludes?.push(...v.$any.map(String));\n }\n if ('$all' in v && Array.isArray(v.$all)) {\n v.$all.forEach((cat: unknown) => {\n mapCategoryToLabel(String(cat));\n });\n filters.categoriesIncludes?.push(...v.$all.map(String));\n }\n if ('$none' in v && Array.isArray(v.$none)) {\n v.$none.forEach((cat: unknown) => {\n mapCategoryToLabel(String(cat));\n });\n filters.categoriesIncludes?.push(...v.$none.map(String));\n }\n } else if (k === 'label') {\n // Direct passthrough for labels (case-sensitive)\n if ('$any' in v && Array.isArray(v.$any)) filters.labelIncludes?.push(...v.$any.map(String));\n if ('$all' in v && Array.isArray(v.$all)) filters.labelIncludes?.push(...v.$all.map(String));\n if ('$none' in v && Array.isArray(v.$none)) filters.labelIncludes?.push(...v.$none.map(String));\n }\n }\n }\n walk(parsed);\n return filters;\n}\n"],"names":["extractFiltersFromParsed","toGmailQuery","GMAIL_CATEGORIES","primary","social","promotions","updates","forums","mapCategoryToLabel","category","Error","trimmed","trim","normalizedCategory","toLowerCase","systemLabel","Object","keys","join","query","options","slashDates","dateSlash","subjectIncludes","bodyIncludes","textIncludes","fromIncludes","toIncludes","ccIncludes","bccIncludes","categoriesIncludes","labelIncludes","hasAttachment","p","s","String","fmt","d","str","replace","fv","field","raw","rawVal","v","quote","push","chain","op","arr","length","first","fieldExpr","$any","results","map","$all","$none","JSON","stringify","dateExpr","parts","$gte","$lt","fieldKeys","test","m","emit","n","Array","isArray","$and","$or","$not","fuzzyPhrase","date","k","includes","normalizedOp","emitTop","q","filters","parsed","walk","node","forEach","dateObj","since","before","cat"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { gmail_v1 } from 'googleapis';
|
|
2
|
+
import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';
|
|
3
|
+
import type { Logger } from '../../types.js';
|
|
4
|
+
export interface GmailSearchOptions {
|
|
5
|
+
readonly query?: QueryNode;
|
|
6
|
+
readonly pageSize?: number;
|
|
7
|
+
readonly includeBody?: boolean;
|
|
8
|
+
readonly pageToken: string | undefined;
|
|
9
|
+
readonly logger: Logger;
|
|
10
|
+
}
|
|
11
|
+
export interface GmailEmailSummary {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly provider: 'gmail';
|
|
14
|
+
readonly threadId?: string;
|
|
15
|
+
readonly date?: string;
|
|
16
|
+
readonly from?: string;
|
|
17
|
+
readonly fromName?: string;
|
|
18
|
+
readonly to?: string;
|
|
19
|
+
readonly cc?: string;
|
|
20
|
+
readonly bcc?: string;
|
|
21
|
+
readonly subject?: string;
|
|
22
|
+
readonly snippet?: string;
|
|
23
|
+
readonly body?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface GmailSearchResult {
|
|
26
|
+
readonly messages: gmail_v1.Schema$Message[];
|
|
27
|
+
readonly nextPageToken: string | undefined;
|
|
28
|
+
}
|
|
29
|
+
export declare function searchMessages(gmail: gmail_v1.Gmail, opts: GmailSearchOptions): Promise<GmailSearchResult>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { gmail_v1 } from 'googleapis';
|
|
2
|
+
import type { GmailQuery as QueryNode } from '../../schemas/gmail-query-schema.js';
|
|
3
|
+
import type { Logger } from '../../types.js';
|
|
4
|
+
export interface GmailSearchOptions {
|
|
5
|
+
readonly query?: QueryNode;
|
|
6
|
+
readonly pageSize?: number;
|
|
7
|
+
readonly includeBody?: boolean;
|
|
8
|
+
readonly pageToken: string | undefined;
|
|
9
|
+
readonly logger: Logger;
|
|
10
|
+
}
|
|
11
|
+
export interface GmailEmailSummary {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly provider: 'gmail';
|
|
14
|
+
readonly threadId?: string;
|
|
15
|
+
readonly date?: string;
|
|
16
|
+
readonly from?: string;
|
|
17
|
+
readonly fromName?: string;
|
|
18
|
+
readonly to?: string;
|
|
19
|
+
readonly cc?: string;
|
|
20
|
+
readonly bcc?: string;
|
|
21
|
+
readonly subject?: string;
|
|
22
|
+
readonly snippet?: string;
|
|
23
|
+
readonly body?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface GmailSearchResult {
|
|
26
|
+
readonly messages: gmail_v1.Schema$Message[];
|
|
27
|
+
readonly nextPageToken: string | undefined;
|
|
28
|
+
}
|
|
29
|
+
export declare function searchMessages(gmail: gmail_v1.Gmail, opts: GmailSearchOptions): Promise<GmailSearchResult>;
|