@mcp-z/mcp-sheets 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.
Files changed (363) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +181 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +7 -0
  5. package/dist/cjs/constants.d.ts +7 -0
  6. package/dist/cjs/constants.js +18 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/index.d.cts +8 -0
  9. package/dist/cjs/index.d.ts +8 -0
  10. package/dist/cjs/index.js +314 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/lib/create-store.d.cts +2 -0
  13. package/dist/cjs/lib/create-store.d.ts +2 -0
  14. package/dist/cjs/lib/create-store.js +166 -0
  15. package/dist/cjs/lib/create-store.js.map +1 -0
  16. package/dist/cjs/mcp/index.d.cts +3 -0
  17. package/dist/cjs/mcp/index.d.ts +3 -0
  18. package/dist/cjs/mcp/index.js +66 -0
  19. package/dist/cjs/mcp/index.js.map +1 -0
  20. package/dist/cjs/mcp/prompts/a1-notation.d.cts +19 -0
  21. package/dist/cjs/mcp/prompts/a1-notation.d.ts +19 -0
  22. package/dist/cjs/mcp/prompts/a1-notation.js +169 -0
  23. package/dist/cjs/mcp/prompts/a1-notation.js.map +1 -0
  24. package/dist/cjs/mcp/prompts/index.d.cts +1 -0
  25. package/dist/cjs/mcp/prompts/index.d.ts +1 -0
  26. package/dist/cjs/mcp/prompts/index.js +17 -0
  27. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  28. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  29. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  30. package/dist/cjs/mcp/resources/index.js +17 -0
  31. package/dist/cjs/mcp/resources/index.js.map +1 -0
  32. package/dist/cjs/mcp/resources/spreadsheet.d.cts +2 -0
  33. package/dist/cjs/mcp/resources/spreadsheet.d.ts +2 -0
  34. package/dist/cjs/mcp/resources/spreadsheet.js +258 -0
  35. package/dist/cjs/mcp/resources/spreadsheet.js.map +1 -0
  36. package/dist/cjs/mcp/tools/cells-format.d.cts +144 -0
  37. package/dist/cjs/mcp/tools/cells-format.d.ts +144 -0
  38. package/dist/cjs/mcp/tools/cells-format.js +484 -0
  39. package/dist/cjs/mcp/tools/cells-format.js.map +1 -0
  40. package/dist/cjs/mcp/tools/chart-create.d.cts +94 -0
  41. package/dist/cjs/mcp/tools/chart-create.d.ts +94 -0
  42. package/dist/cjs/mcp/tools/chart-create.js +575 -0
  43. package/dist/cjs/mcp/tools/chart-create.js.map +1 -0
  44. package/dist/cjs/mcp/tools/columns-get.d.cts +55 -0
  45. package/dist/cjs/mcp/tools/columns-get.d.ts +55 -0
  46. package/dist/cjs/mcp/tools/columns-get.js +289 -0
  47. package/dist/cjs/mcp/tools/columns-get.js.map +1 -0
  48. package/dist/cjs/mcp/tools/columns-update.d.cts +86 -0
  49. package/dist/cjs/mcp/tools/columns-update.d.ts +86 -0
  50. package/dist/cjs/mcp/tools/columns-update.js +482 -0
  51. package/dist/cjs/mcp/tools/columns-update.js.map +1 -0
  52. package/dist/cjs/mcp/tools/csv-get-columns.d.cts +43 -0
  53. package/dist/cjs/mcp/tools/csv-get-columns.d.ts +43 -0
  54. package/dist/cjs/mcp/tools/csv-get-columns.js +386 -0
  55. package/dist/cjs/mcp/tools/csv-get-columns.js.map +1 -0
  56. package/dist/cjs/mcp/tools/dimensions-batch-update.d.cts +118 -0
  57. package/dist/cjs/mcp/tools/dimensions-batch-update.d.ts +118 -0
  58. package/dist/cjs/mcp/tools/dimensions-batch-update.js +504 -0
  59. package/dist/cjs/mcp/tools/dimensions-batch-update.js.map +1 -0
  60. package/dist/cjs/mcp/tools/dimensions-move.d.cts +86 -0
  61. package/dist/cjs/mcp/tools/dimensions-move.d.ts +86 -0
  62. package/dist/cjs/mcp/tools/dimensions-move.js +359 -0
  63. package/dist/cjs/mcp/tools/dimensions-move.js.map +1 -0
  64. package/dist/cjs/mcp/tools/index.d.cts +26 -0
  65. package/dist/cjs/mcp/tools/index.d.ts +26 -0
  66. package/dist/cjs/mcp/tools/index.js +122 -0
  67. package/dist/cjs/mcp/tools/index.js.map +1 -0
  68. package/dist/cjs/mcp/tools/lib/dimension-operations.d.cts +48 -0
  69. package/dist/cjs/mcp/tools/lib/dimension-operations.d.ts +48 -0
  70. package/dist/cjs/mcp/tools/lib/dimension-operations.js +177 -0
  71. package/dist/cjs/mcp/tools/lib/dimension-operations.js.map +1 -0
  72. package/dist/cjs/mcp/tools/rows-append.d.cts +58 -0
  73. package/dist/cjs/mcp/tools/rows-append.d.ts +58 -0
  74. package/dist/cjs/mcp/tools/rows-append.js +335 -0
  75. package/dist/cjs/mcp/tools/rows-append.js.map +1 -0
  76. package/dist/cjs/mcp/tools/rows-csv-append.d.cts +67 -0
  77. package/dist/cjs/mcp/tools/rows-csv-append.d.ts +67 -0
  78. package/dist/cjs/mcp/tools/rows-csv-append.js +859 -0
  79. package/dist/cjs/mcp/tools/rows-csv-append.js.map +1 -0
  80. package/dist/cjs/mcp/tools/rows-get.d.cts +56 -0
  81. package/dist/cjs/mcp/tools/rows-get.d.ts +56 -0
  82. package/dist/cjs/mcp/tools/rows-get.js +292 -0
  83. package/dist/cjs/mcp/tools/rows-get.js.map +1 -0
  84. package/dist/cjs/mcp/tools/sheet-copy-to.d.cts +68 -0
  85. package/dist/cjs/mcp/tools/sheet-copy-to.d.ts +68 -0
  86. package/dist/cjs/mcp/tools/sheet-copy-to.js +341 -0
  87. package/dist/cjs/mcp/tools/sheet-copy-to.js.map +1 -0
  88. package/dist/cjs/mcp/tools/sheet-copy.d.cts +80 -0
  89. package/dist/cjs/mcp/tools/sheet-copy.d.ts +80 -0
  90. package/dist/cjs/mcp/tools/sheet-copy.js +394 -0
  91. package/dist/cjs/mcp/tools/sheet-copy.js.map +1 -0
  92. package/dist/cjs/mcp/tools/sheet-create.d.cts +56 -0
  93. package/dist/cjs/mcp/tools/sheet-create.d.ts +56 -0
  94. package/dist/cjs/mcp/tools/sheet-create.js +283 -0
  95. package/dist/cjs/mcp/tools/sheet-create.js.map +1 -0
  96. package/dist/cjs/mcp/tools/sheet-delete.d.cts +62 -0
  97. package/dist/cjs/mcp/tools/sheet-delete.d.ts +62 -0
  98. package/dist/cjs/mcp/tools/sheet-delete.js +341 -0
  99. package/dist/cjs/mcp/tools/sheet-delete.js.map +1 -0
  100. package/dist/cjs/mcp/tools/sheet-find.d.cts +48 -0
  101. package/dist/cjs/mcp/tools/sheet-find.d.ts +48 -0
  102. package/dist/cjs/mcp/tools/sheet-find.js +261 -0
  103. package/dist/cjs/mcp/tools/sheet-find.js.map +1 -0
  104. package/dist/cjs/mcp/tools/sheet-rename.d.cts +60 -0
  105. package/dist/cjs/mcp/tools/sheet-rename.d.ts +60 -0
  106. package/dist/cjs/mcp/tools/sheet-rename.js +305 -0
  107. package/dist/cjs/mcp/tools/sheet-rename.js.map +1 -0
  108. package/dist/cjs/mcp/tools/spreadsheet-copy.d.cts +58 -0
  109. package/dist/cjs/mcp/tools/spreadsheet-copy.d.ts +58 -0
  110. package/dist/cjs/mcp/tools/spreadsheet-copy.js +319 -0
  111. package/dist/cjs/mcp/tools/spreadsheet-copy.js.map +1 -0
  112. package/dist/cjs/mcp/tools/spreadsheet-create.d.cts +52 -0
  113. package/dist/cjs/mcp/tools/spreadsheet-create.d.ts +52 -0
  114. package/dist/cjs/mcp/tools/spreadsheet-create.js +270 -0
  115. package/dist/cjs/mcp/tools/spreadsheet-create.js.map +1 -0
  116. package/dist/cjs/mcp/tools/spreadsheet-find.d.cts +58 -0
  117. package/dist/cjs/mcp/tools/spreadsheet-find.d.ts +58 -0
  118. package/dist/cjs/mcp/tools/spreadsheet-find.js +334 -0
  119. package/dist/cjs/mcp/tools/spreadsheet-find.js.map +1 -0
  120. package/dist/cjs/mcp/tools/spreadsheet-rename.d.cts +56 -0
  121. package/dist/cjs/mcp/tools/spreadsheet-rename.d.ts +56 -0
  122. package/dist/cjs/mcp/tools/spreadsheet-rename.js +289 -0
  123. package/dist/cjs/mcp/tools/spreadsheet-rename.js.map +1 -0
  124. package/dist/cjs/mcp/tools/validation-set.d.cts +144 -0
  125. package/dist/cjs/mcp/tools/validation-set.d.ts +144 -0
  126. package/dist/cjs/mcp/tools/validation-set.js +564 -0
  127. package/dist/cjs/mcp/tools/validation-set.js.map +1 -0
  128. package/dist/cjs/mcp/tools/values-batch-update.d.cts +102 -0
  129. package/dist/cjs/mcp/tools/values-batch-update.d.ts +102 -0
  130. package/dist/cjs/mcp/tools/values-batch-update.js +409 -0
  131. package/dist/cjs/mcp/tools/values-batch-update.js.map +1 -0
  132. package/dist/cjs/mcp/tools/values-clear.d.cts +56 -0
  133. package/dist/cjs/mcp/tools/values-clear.d.ts +56 -0
  134. package/dist/cjs/mcp/tools/values-clear.js +308 -0
  135. package/dist/cjs/mcp/tools/values-clear.js.map +1 -0
  136. package/dist/cjs/mcp/tools/values-csv-update.d.cts +75 -0
  137. package/dist/cjs/mcp/tools/values-csv-update.d.ts +75 -0
  138. package/dist/cjs/mcp/tools/values-csv-update.js +500 -0
  139. package/dist/cjs/mcp/tools/values-csv-update.js.map +1 -0
  140. package/dist/cjs/mcp/tools/values-replace.d.cts +68 -0
  141. package/dist/cjs/mcp/tools/values-replace.d.ts +68 -0
  142. package/dist/cjs/mcp/tools/values-replace.js +378 -0
  143. package/dist/cjs/mcp/tools/values-replace.js.map +1 -0
  144. package/dist/cjs/mcp/tools/values-search.d.cts +74 -0
  145. package/dist/cjs/mcp/tools/values-search.d.ts +74 -0
  146. package/dist/cjs/mcp/tools/values-search.js +470 -0
  147. package/dist/cjs/mcp/tools/values-search.js.map +1 -0
  148. package/dist/cjs/package.json +1 -0
  149. package/dist/cjs/schemas/index.d.cts +14 -0
  150. package/dist/cjs/schemas/index.d.ts +14 -0
  151. package/dist/cjs/schemas/index.js +64 -0
  152. package/dist/cjs/schemas/index.js.map +1 -0
  153. package/dist/cjs/setup/config.d.cts +44 -0
  154. package/dist/cjs/setup/config.d.ts +44 -0
  155. package/dist/cjs/setup/config.js +201 -0
  156. package/dist/cjs/setup/config.js.map +1 -0
  157. package/dist/cjs/setup/http.d.cts +8 -0
  158. package/dist/cjs/setup/http.d.ts +8 -0
  159. package/dist/cjs/setup/http.js +260 -0
  160. package/dist/cjs/setup/http.js.map +1 -0
  161. package/dist/cjs/setup/index.d.cts +5 -0
  162. package/dist/cjs/setup/index.d.ts +5 -0
  163. package/dist/cjs/setup/index.js +46 -0
  164. package/dist/cjs/setup/index.js.map +1 -0
  165. package/dist/cjs/setup/oauth-google.d.cts +54 -0
  166. package/dist/cjs/setup/oauth-google.d.ts +54 -0
  167. package/dist/cjs/setup/oauth-google.js +332 -0
  168. package/dist/cjs/setup/oauth-google.js.map +1 -0
  169. package/dist/cjs/setup/runtime.d.cts +10 -0
  170. package/dist/cjs/setup/runtime.d.ts +10 -0
  171. package/dist/cjs/setup/runtime.js +353 -0
  172. package/dist/cjs/setup/runtime.js.map +1 -0
  173. package/dist/cjs/setup/stdio.d.cts +7 -0
  174. package/dist/cjs/setup/stdio.d.ts +7 -0
  175. package/dist/cjs/setup/stdio.js +239 -0
  176. package/dist/cjs/setup/stdio.js.map +1 -0
  177. package/dist/cjs/spreadsheet/column-utilities.d.cts +1 -0
  178. package/dist/cjs/spreadsheet/column-utilities.d.ts +1 -0
  179. package/dist/cjs/spreadsheet/column-utilities.js +21 -0
  180. package/dist/cjs/spreadsheet/column-utilities.js.map +1 -0
  181. package/dist/cjs/spreadsheet/csv-streaming.d.cts +19 -0
  182. package/dist/cjs/spreadsheet/csv-streaming.d.ts +19 -0
  183. package/dist/cjs/spreadsheet/csv-streaming.js +188 -0
  184. package/dist/cjs/spreadsheet/csv-streaming.js.map +1 -0
  185. package/dist/cjs/spreadsheet/data-operations.d.cts +115 -0
  186. package/dist/cjs/spreadsheet/data-operations.d.ts +115 -0
  187. package/dist/cjs/spreadsheet/data-operations.js +1515 -0
  188. package/dist/cjs/spreadsheet/data-operations.js.map +1 -0
  189. package/dist/cjs/spreadsheet/deduplication-utils.d.cts +31 -0
  190. package/dist/cjs/spreadsheet/deduplication-utils.d.ts +31 -0
  191. package/dist/cjs/spreadsheet/deduplication-utils.js +65 -0
  192. package/dist/cjs/spreadsheet/deduplication-utils.js.map +1 -0
  193. package/dist/cjs/spreadsheet/range-operations.d.cts +184 -0
  194. package/dist/cjs/spreadsheet/range-operations.d.ts +184 -0
  195. package/dist/cjs/spreadsheet/range-operations.js +672 -0
  196. package/dist/cjs/spreadsheet/range-operations.js.map +1 -0
  197. package/dist/cjs/spreadsheet/sheet-operations.d.cts +30 -0
  198. package/dist/cjs/spreadsheet/sheet-operations.d.ts +30 -0
  199. package/dist/cjs/spreadsheet/sheet-operations.js +811 -0
  200. package/dist/cjs/spreadsheet/sheet-operations.js.map +1 -0
  201. package/dist/cjs/spreadsheet/spreadsheet-management.d.cts +21 -0
  202. package/dist/cjs/spreadsheet/spreadsheet-management.d.ts +21 -0
  203. package/dist/cjs/spreadsheet/spreadsheet-management.js +310 -0
  204. package/dist/cjs/spreadsheet/spreadsheet-management.js.map +1 -0
  205. package/dist/cjs/types.d.cts +53 -0
  206. package/dist/cjs/types.d.ts +53 -0
  207. package/dist/cjs/types.js +5 -0
  208. package/dist/cjs/types.js.map +1 -0
  209. package/dist/esm/constants.d.ts +7 -0
  210. package/dist/esm/constants.js +7 -0
  211. package/dist/esm/constants.js.map +1 -0
  212. package/dist/esm/index.d.ts +8 -0
  213. package/dist/esm/index.js +34 -0
  214. package/dist/esm/index.js.map +1 -0
  215. package/dist/esm/lib/create-store.d.ts +2 -0
  216. package/dist/esm/lib/create-store.js +6 -0
  217. package/dist/esm/lib/create-store.js.map +1 -0
  218. package/dist/esm/mcp/index.d.ts +3 -0
  219. package/dist/esm/mcp/index.js +6 -0
  220. package/dist/esm/mcp/index.js.map +1 -0
  221. package/dist/esm/mcp/prompts/a1-notation.d.ts +19 -0
  222. package/dist/esm/mcp/prompts/a1-notation.js +49 -0
  223. package/dist/esm/mcp/prompts/a1-notation.js.map +1 -0
  224. package/dist/esm/mcp/prompts/index.d.ts +1 -0
  225. package/dist/esm/mcp/prompts/index.js +1 -0
  226. package/dist/esm/mcp/prompts/index.js.map +1 -0
  227. package/dist/esm/mcp/resources/index.d.ts +1 -0
  228. package/dist/esm/mcp/resources/index.js +1 -0
  229. package/dist/esm/mcp/resources/index.js.map +1 -0
  230. package/dist/esm/mcp/resources/spreadsheet.d.ts +2 -0
  231. package/dist/esm/mcp/resources/spreadsheet.js +88 -0
  232. package/dist/esm/mcp/resources/spreadsheet.js.map +1 -0
  233. package/dist/esm/mcp/tools/cells-format.d.ts +144 -0
  234. package/dist/esm/mcp/tools/cells-format.js +288 -0
  235. package/dist/esm/mcp/tools/cells-format.js.map +1 -0
  236. package/dist/esm/mcp/tools/chart-create.d.ts +94 -0
  237. package/dist/esm/mcp/tools/chart-create.js +408 -0
  238. package/dist/esm/mcp/tools/chart-create.js.map +1 -0
  239. package/dist/esm/mcp/tools/columns-get.d.ts +55 -0
  240. package/dist/esm/mcp/tools/columns-get.js +113 -0
  241. package/dist/esm/mcp/tools/columns-get.js.map +1 -0
  242. package/dist/esm/mcp/tools/columns-update.d.ts +86 -0
  243. package/dist/esm/mcp/tools/columns-update.js +296 -0
  244. package/dist/esm/mcp/tools/columns-update.js.map +1 -0
  245. package/dist/esm/mcp/tools/csv-get-columns.d.ts +43 -0
  246. package/dist/esm/mcp/tools/csv-get-columns.js +95 -0
  247. package/dist/esm/mcp/tools/csv-get-columns.js.map +1 -0
  248. package/dist/esm/mcp/tools/dimensions-batch-update.d.ts +118 -0
  249. package/dist/esm/mcp/tools/dimensions-batch-update.js +321 -0
  250. package/dist/esm/mcp/tools/dimensions-batch-update.js.map +1 -0
  251. package/dist/esm/mcp/tools/dimensions-move.d.ts +86 -0
  252. package/dist/esm/mcp/tools/dimensions-move.js +183 -0
  253. package/dist/esm/mcp/tools/dimensions-move.js.map +1 -0
  254. package/dist/esm/mcp/tools/index.d.ts +26 -0
  255. package/dist/esm/mcp/tools/index.js +26 -0
  256. package/dist/esm/mcp/tools/index.js.map +1 -0
  257. package/dist/esm/mcp/tools/lib/dimension-operations.d.ts +48 -0
  258. package/dist/esm/mcp/tools/lib/dimension-operations.js +93 -0
  259. package/dist/esm/mcp/tools/lib/dimension-operations.js.map +1 -0
  260. package/dist/esm/mcp/tools/rows-append.d.ts +58 -0
  261. package/dist/esm/mcp/tools/rows-append.js +151 -0
  262. package/dist/esm/mcp/tools/rows-append.js.map +1 -0
  263. package/dist/esm/mcp/tools/rows-csv-append.d.ts +67 -0
  264. package/dist/esm/mcp/tools/rows-csv-append.js +342 -0
  265. package/dist/esm/mcp/tools/rows-csv-append.js.map +1 -0
  266. package/dist/esm/mcp/tools/rows-get.d.ts +56 -0
  267. package/dist/esm/mcp/tools/rows-get.js +116 -0
  268. package/dist/esm/mcp/tools/rows-get.js.map +1 -0
  269. package/dist/esm/mcp/tools/sheet-copy-to.d.ts +68 -0
  270. package/dist/esm/mcp/tools/sheet-copy-to.js +156 -0
  271. package/dist/esm/mcp/tools/sheet-copy-to.js.map +1 -0
  272. package/dist/esm/mcp/tools/sheet-copy.d.ts +80 -0
  273. package/dist/esm/mcp/tools/sheet-copy.js +177 -0
  274. package/dist/esm/mcp/tools/sheet-copy.js.map +1 -0
  275. package/dist/esm/mcp/tools/sheet-create.d.ts +56 -0
  276. package/dist/esm/mcp/tools/sheet-create.js +110 -0
  277. package/dist/esm/mcp/tools/sheet-create.js.map +1 -0
  278. package/dist/esm/mcp/tools/sheet-delete.d.ts +62 -0
  279. package/dist/esm/mcp/tools/sheet-delete.js +125 -0
  280. package/dist/esm/mcp/tools/sheet-delete.js.map +1 -0
  281. package/dist/esm/mcp/tools/sheet-find.d.ts +48 -0
  282. package/dist/esm/mcp/tools/sheet-find.js +90 -0
  283. package/dist/esm/mcp/tools/sheet-find.js.map +1 -0
  284. package/dist/esm/mcp/tools/sheet-rename.d.ts +60 -0
  285. package/dist/esm/mcp/tools/sheet-rename.js +128 -0
  286. package/dist/esm/mcp/tools/sheet-rename.js.map +1 -0
  287. package/dist/esm/mcp/tools/spreadsheet-copy.d.ts +58 -0
  288. package/dist/esm/mcp/tools/spreadsheet-copy.js +117 -0
  289. package/dist/esm/mcp/tools/spreadsheet-copy.js.map +1 -0
  290. package/dist/esm/mcp/tools/spreadsheet-create.d.ts +52 -0
  291. package/dist/esm/mcp/tools/spreadsheet-create.js +97 -0
  292. package/dist/esm/mcp/tools/spreadsheet-create.js.map +1 -0
  293. package/dist/esm/mcp/tools/spreadsheet-find.d.ts +58 -0
  294. package/dist/esm/mcp/tools/spreadsheet-find.js +113 -0
  295. package/dist/esm/mcp/tools/spreadsheet-find.js.map +1 -0
  296. package/dist/esm/mcp/tools/spreadsheet-rename.d.ts +56 -0
  297. package/dist/esm/mcp/tools/spreadsheet-rename.js +112 -0
  298. package/dist/esm/mcp/tools/spreadsheet-rename.js.map +1 -0
  299. package/dist/esm/mcp/tools/validation-set.d.ts +144 -0
  300. package/dist/esm/mcp/tools/validation-set.js +366 -0
  301. package/dist/esm/mcp/tools/validation-set.js.map +1 -0
  302. package/dist/esm/mcp/tools/values-batch-update.d.ts +102 -0
  303. package/dist/esm/mcp/tools/values-batch-update.js +224 -0
  304. package/dist/esm/mcp/tools/values-batch-update.js.map +1 -0
  305. package/dist/esm/mcp/tools/values-clear.d.ts +56 -0
  306. package/dist/esm/mcp/tools/values-clear.js +131 -0
  307. package/dist/esm/mcp/tools/values-clear.js.map +1 -0
  308. package/dist/esm/mcp/tools/values-csv-update.d.ts +75 -0
  309. package/dist/esm/mcp/tools/values-csv-update.js +202 -0
  310. package/dist/esm/mcp/tools/values-csv-update.js.map +1 -0
  311. package/dist/esm/mcp/tools/values-replace.d.ts +68 -0
  312. package/dist/esm/mcp/tools/values-replace.js +171 -0
  313. package/dist/esm/mcp/tools/values-replace.js.map +1 -0
  314. package/dist/esm/mcp/tools/values-search.d.ts +74 -0
  315. package/dist/esm/mcp/tools/values-search.js +229 -0
  316. package/dist/esm/mcp/tools/values-search.js.map +1 -0
  317. package/dist/esm/package.json +1 -0
  318. package/dist/esm/schemas/index.d.ts +14 -0
  319. package/dist/esm/schemas/index.js +35 -0
  320. package/dist/esm/schemas/index.js.map +1 -0
  321. package/dist/esm/setup/config.d.ts +44 -0
  322. package/dist/esm/setup/config.js +151 -0
  323. package/dist/esm/setup/config.js.map +1 -0
  324. package/dist/esm/setup/http.d.ts +8 -0
  325. package/dist/esm/setup/http.js +54 -0
  326. package/dist/esm/setup/http.js.map +1 -0
  327. package/dist/esm/setup/index.d.ts +5 -0
  328. package/dist/esm/setup/index.js +5 -0
  329. package/dist/esm/setup/index.js.map +1 -0
  330. package/dist/esm/setup/oauth-google.d.ts +54 -0
  331. package/dist/esm/setup/oauth-google.js +142 -0
  332. package/dist/esm/setup/oauth-google.js.map +1 -0
  333. package/dist/esm/setup/runtime.d.ts +10 -0
  334. package/dist/esm/setup/runtime.js +84 -0
  335. package/dist/esm/setup/runtime.js.map +1 -0
  336. package/dist/esm/setup/stdio.d.ts +7 -0
  337. package/dist/esm/setup/stdio.js +38 -0
  338. package/dist/esm/setup/stdio.js.map +1 -0
  339. package/dist/esm/spreadsheet/column-utilities.d.ts +1 -0
  340. package/dist/esm/spreadsheet/column-utilities.js +10 -0
  341. package/dist/esm/spreadsheet/column-utilities.js.map +1 -0
  342. package/dist/esm/spreadsheet/csv-streaming.d.ts +19 -0
  343. package/dist/esm/spreadsheet/csv-streaming.js +43 -0
  344. package/dist/esm/spreadsheet/csv-streaming.js.map +1 -0
  345. package/dist/esm/spreadsheet/data-operations.d.ts +115 -0
  346. package/dist/esm/spreadsheet/data-operations.js +712 -0
  347. package/dist/esm/spreadsheet/data-operations.js.map +1 -0
  348. package/dist/esm/spreadsheet/deduplication-utils.d.ts +31 -0
  349. package/dist/esm/spreadsheet/deduplication-utils.js +54 -0
  350. package/dist/esm/spreadsheet/deduplication-utils.js.map +1 -0
  351. package/dist/esm/spreadsheet/range-operations.d.ts +184 -0
  352. package/dist/esm/spreadsheet/range-operations.js +591 -0
  353. package/dist/esm/spreadsheet/range-operations.js.map +1 -0
  354. package/dist/esm/spreadsheet/sheet-operations.d.ts +30 -0
  355. package/dist/esm/spreadsheet/sheet-operations.js +359 -0
  356. package/dist/esm/spreadsheet/sheet-operations.js.map +1 -0
  357. package/dist/esm/spreadsheet/spreadsheet-management.d.ts +21 -0
  358. package/dist/esm/spreadsheet/spreadsheet-management.js +73 -0
  359. package/dist/esm/spreadsheet/spreadsheet-management.js.map +1 -0
  360. package/dist/esm/types.d.ts +53 -0
  361. package/dist/esm/types.js +1 -0
  362. package/dist/esm/types.js.map +1 -0
  363. package/package.json +108 -0
@@ -0,0 +1,811 @@
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 ensureSheetIfNeeded () {
13
+ return ensureSheetIfNeeded;
14
+ },
15
+ get ensureTabAndHeaders () {
16
+ return ensureTabAndHeaders;
17
+ },
18
+ get findSheetByRef () {
19
+ return findSheetByRef;
20
+ }
21
+ });
22
+ var _columnutilities = require("./column-utilities.js");
23
+ function _array_like_to_array(arr, len) {
24
+ if (len == null || len > arr.length) len = arr.length;
25
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
26
+ return arr2;
27
+ }
28
+ function _array_without_holes(arr) {
29
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
30
+ }
31
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
32
+ try {
33
+ var info = gen[key](arg);
34
+ var value = info.value;
35
+ } catch (error) {
36
+ reject(error);
37
+ return;
38
+ }
39
+ if (info.done) {
40
+ resolve(value);
41
+ } else {
42
+ Promise.resolve(value).then(_next, _throw);
43
+ }
44
+ }
45
+ function _async_to_generator(fn) {
46
+ return function() {
47
+ var self = this, args = arguments;
48
+ return new Promise(function(resolve, reject) {
49
+ var gen = fn.apply(self, args);
50
+ function _next(value) {
51
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
52
+ }
53
+ function _throw(err) {
54
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
55
+ }
56
+ _next(undefined);
57
+ });
58
+ };
59
+ }
60
+ function _iterable_to_array(iter) {
61
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
62
+ }
63
+ function _non_iterable_spread() {
64
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
65
+ }
66
+ function _to_consumable_array(arr) {
67
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
68
+ }
69
+ function _unsupported_iterable_to_array(o, minLen) {
70
+ if (!o) return;
71
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
72
+ var n = Object.prototype.toString.call(o).slice(8, -1);
73
+ if (n === "Object" && o.constructor) n = o.constructor.name;
74
+ if (n === "Map" || n === "Set") return Array.from(n);
75
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
76
+ }
77
+ function _ts_generator(thisArg, body) {
78
+ var f, y, t, _ = {
79
+ label: 0,
80
+ sent: function() {
81
+ if (t[0] & 1) throw t[1];
82
+ return t[1];
83
+ },
84
+ trys: [],
85
+ ops: []
86
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
87
+ return d(g, "next", {
88
+ value: verb(0)
89
+ }), d(g, "throw", {
90
+ value: verb(1)
91
+ }), d(g, "return", {
92
+ value: verb(2)
93
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
94
+ value: function() {
95
+ return this;
96
+ }
97
+ }), g;
98
+ function verb(n) {
99
+ return function(v) {
100
+ return step([
101
+ n,
102
+ v
103
+ ]);
104
+ };
105
+ }
106
+ function step(op) {
107
+ if (f) throw new TypeError("Generator is already executing.");
108
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
109
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
110
+ if (y = 0, t) op = [
111
+ op[0] & 2,
112
+ t.value
113
+ ];
114
+ switch(op[0]){
115
+ case 0:
116
+ case 1:
117
+ t = op;
118
+ break;
119
+ case 4:
120
+ _.label++;
121
+ return {
122
+ value: op[1],
123
+ done: false
124
+ };
125
+ case 5:
126
+ _.label++;
127
+ y = op[1];
128
+ op = [
129
+ 0
130
+ ];
131
+ continue;
132
+ case 7:
133
+ op = _.ops.pop();
134
+ _.trys.pop();
135
+ continue;
136
+ default:
137
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
138
+ _ = 0;
139
+ continue;
140
+ }
141
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
142
+ _.label = op[1];
143
+ break;
144
+ }
145
+ if (op[0] === 6 && _.label < t[1]) {
146
+ _.label = t[1];
147
+ t = op;
148
+ break;
149
+ }
150
+ if (t && _.label < t[2]) {
151
+ _.label = t[2];
152
+ _.ops.push(op);
153
+ break;
154
+ }
155
+ if (t[2]) _.ops.pop();
156
+ _.trys.pop();
157
+ continue;
158
+ }
159
+ op = body.call(thisArg, _);
160
+ } catch (e) {
161
+ op = [
162
+ 6,
163
+ e
164
+ ];
165
+ y = 0;
166
+ } finally{
167
+ f = t = 0;
168
+ }
169
+ if (op[0] & 5) throw op[1];
170
+ return {
171
+ value: op[0] ? op[1] : void 0,
172
+ done: true
173
+ };
174
+ }
175
+ }
176
+ function ensureSheetIfNeeded(sheets, id, sheetTitle, ensureSheet, headers, logger) {
177
+ return _async_to_generator(function() {
178
+ var _res_data_replies__addSheet_properties, _res_data_replies__addSheet, _res_data_replies_, _res_data_replies, _res_data, ssResp, ss, has, _ss_sheets_find_properties, _ss_sheets_find, _ss_sheets, sid, result, _ref, merged, e, _logger_warn, res, createdId, result1, _ref1, merged1, e1, _logger_warn1;
179
+ return _ts_generator(this, function(_state) {
180
+ switch(_state.label){
181
+ case 0:
182
+ if (!sheetTitle) return [
183
+ 2,
184
+ {
185
+ sheetCreated: false
186
+ }
187
+ ];
188
+ return [
189
+ 4,
190
+ sheets.spreadsheets.get({
191
+ spreadsheetId: id
192
+ })
193
+ ];
194
+ case 1:
195
+ ssResp = _state.sent();
196
+ ss = ssResp.data;
197
+ has = Array.isArray(ss === null || ss === void 0 ? void 0 : ss.sheets) && ss.sheets.some(function(s) {
198
+ var _s_properties;
199
+ return (s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.title) === sheetTitle;
200
+ });
201
+ if (!has) return [
202
+ 3,
203
+ 6
204
+ ];
205
+ sid = (_ss_sheets = ss.sheets) === null || _ss_sheets === void 0 ? void 0 : (_ss_sheets_find = _ss_sheets.find(function(s) {
206
+ var _s_properties;
207
+ return (s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.title) === sheetTitle;
208
+ })) === null || _ss_sheets_find === void 0 ? void 0 : (_ss_sheets_find_properties = _ss_sheets_find.properties) === null || _ss_sheets_find_properties === void 0 ? void 0 : _ss_sheets_find_properties.sheetId;
209
+ result = {
210
+ sheetCreated: false
211
+ };
212
+ if (sid != null) result.sheetGUID = String(sid);
213
+ if (!headers) return [
214
+ 3,
215
+ 5
216
+ ];
217
+ _state.label = 2;
218
+ case 2:
219
+ _state.trys.push([
220
+ 2,
221
+ 4,
222
+ ,
223
+ 5
224
+ ]);
225
+ return [
226
+ 4,
227
+ ensureTabAndHeaders(sheets, {
228
+ spreadsheetId: id,
229
+ sheetTitle: sheetTitle,
230
+ requiredHeader: headers,
231
+ logger: logger
232
+ })
233
+ ];
234
+ case 3:
235
+ _ref = _state.sent(), merged = _ref.header;
236
+ if (merged) result.headersEnsured = true;
237
+ return [
238
+ 3,
239
+ 5
240
+ ];
241
+ case 4:
242
+ e = _state.sent();
243
+ (_logger_warn = logger.warn) === null || _logger_warn === void 0 ? void 0 : _logger_warn.call(logger, 'ensureTabAndHeaders after sheet creation failed', e);
244
+ return [
245
+ 3,
246
+ 5
247
+ ];
248
+ case 5:
249
+ return [
250
+ 2,
251
+ result
252
+ ];
253
+ case 6:
254
+ if (!ensureSheet) return [
255
+ 2,
256
+ {
257
+ sheetCreated: false
258
+ }
259
+ ];
260
+ return [
261
+ 4,
262
+ sheets.spreadsheets.batchUpdate({
263
+ spreadsheetId: id,
264
+ requestBody: {
265
+ requests: [
266
+ {
267
+ addSheet: {
268
+ properties: {
269
+ title: sheetTitle
270
+ }
271
+ }
272
+ }
273
+ ]
274
+ }
275
+ })
276
+ ];
277
+ case 7:
278
+ res = _state.sent();
279
+ createdId = (_res_data = res.data) === null || _res_data === void 0 ? void 0 : (_res_data_replies = _res_data.replies) === null || _res_data_replies === void 0 ? void 0 : (_res_data_replies_ = _res_data_replies[0]) === null || _res_data_replies_ === void 0 ? void 0 : (_res_data_replies__addSheet = _res_data_replies_.addSheet) === null || _res_data_replies__addSheet === void 0 ? void 0 : (_res_data_replies__addSheet_properties = _res_data_replies__addSheet.properties) === null || _res_data_replies__addSheet_properties === void 0 ? void 0 : _res_data_replies__addSheet_properties.sheetId;
280
+ result1 = {
281
+ sheetCreated: !!createdId
282
+ };
283
+ if (createdId != null) result1.sheetGUID = String(createdId);
284
+ if (!(createdId && headers)) return [
285
+ 3,
286
+ 11
287
+ ];
288
+ _state.label = 8;
289
+ case 8:
290
+ _state.trys.push([
291
+ 8,
292
+ 10,
293
+ ,
294
+ 11
295
+ ]);
296
+ return [
297
+ 4,
298
+ ensureTabAndHeaders(sheets, {
299
+ spreadsheetId: id,
300
+ sheetTitle: sheetTitle,
301
+ requiredHeader: headers,
302
+ logger: logger
303
+ })
304
+ ];
305
+ case 9:
306
+ _ref1 = _state.sent(), merged1 = _ref1.header;
307
+ if (merged1) result1.headersEnsured = true;
308
+ return [
309
+ 3,
310
+ 11
311
+ ];
312
+ case 10:
313
+ e1 = _state.sent();
314
+ (_logger_warn1 = logger.warn) === null || _logger_warn1 === void 0 ? void 0 : _logger_warn1.call(logger, 'ensureTabAndHeaders after sheet creation failed', e1);
315
+ return [
316
+ 3,
317
+ 11
318
+ ];
319
+ case 11:
320
+ return [
321
+ 2,
322
+ result1
323
+ ];
324
+ }
325
+ });
326
+ })();
327
+ }
328
+ function findSheetByRef(client, spreadsheetId, sheetRef, logger) {
329
+ return _async_to_generator(function() {
330
+ var _ssResp_data, _logger_debug, _logger_warn, ssResp, sheets, trimmedRef, _logger_warn1, exactTitleMatch, _logger_debug1, exactGuidMatch, _logger_debug2, caseInsensitiveMatch, _logger_debug3, trimmedTitleMatch, _logger_debug4, caseInsensitiveTrimmedMatch, _logger_debug5, partialMatch, _logger_debug6;
331
+ return _ts_generator(this, function(_state) {
332
+ switch(_state.label){
333
+ case 0:
334
+ return [
335
+ 4,
336
+ client.spreadsheets.get({
337
+ spreadsheetId: spreadsheetId
338
+ })
339
+ ];
340
+ case 1:
341
+ ssResp = _state.sent();
342
+ sheets = ((_ssResp_data = ssResp.data) === null || _ssResp_data === void 0 ? void 0 : _ssResp_data.sheets) || [];
343
+ trimmedRef = sheetRef === null || sheetRef === void 0 ? void 0 : sheetRef.trim();
344
+ (_logger_debug = logger.debug) === null || _logger_debug === void 0 ? void 0 : _logger_debug.call(logger, 'findSheetByRef called', {
345
+ spreadsheetId: spreadsheetId,
346
+ sheetRef: sheetRef,
347
+ trimmedRef: trimmedRef,
348
+ availableSheets: sheets.map(function(s) {
349
+ var _s_properties, _s_properties1;
350
+ return {
351
+ title: s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.title,
352
+ id: s === null || s === void 0 ? void 0 : (_s_properties1 = s.properties) === null || _s_properties1 === void 0 ? void 0 : _s_properties1.sheetId
353
+ };
354
+ })
355
+ });
356
+ if (!trimmedRef) {
357
+ ;
358
+ (_logger_warn1 = logger.warn) === null || _logger_warn1 === void 0 ? void 0 : _logger_warn1.call(logger, 'findSheetByRef empty sheetRef');
359
+ return [
360
+ 2,
361
+ null
362
+ ];
363
+ }
364
+ // Strategy 1: Try exact title match first (most common case)
365
+ exactTitleMatch = sheets.find(function(s) {
366
+ var _s_properties;
367
+ return (s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.title) === trimmedRef;
368
+ });
369
+ if (exactTitleMatch) {
370
+ ;
371
+ (_logger_debug1 = logger.debug) === null || _logger_debug1 === void 0 ? void 0 : _logger_debug1.call(logger, 'findSheetByRef exact title match found');
372
+ return [
373
+ 2,
374
+ exactTitleMatch
375
+ ];
376
+ }
377
+ // Strategy 2: Try exact GUID match (for when user passes actual sheet ID)
378
+ exactGuidMatch = sheets.find(function(s) {
379
+ var _s_properties;
380
+ return String(s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === trimmedRef;
381
+ });
382
+ if (exactGuidMatch) {
383
+ ;
384
+ (_logger_debug2 = logger.debug) === null || _logger_debug2 === void 0 ? void 0 : _logger_debug2.call(logger, 'findSheetByRef exact GUID match found');
385
+ return [
386
+ 2,
387
+ exactGuidMatch
388
+ ];
389
+ }
390
+ // Strategy 3: Case-insensitive title match
391
+ caseInsensitiveMatch = sheets.find(function(s) {
392
+ var _s_properties_title, _s_properties;
393
+ return (s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : (_s_properties_title = _s_properties.title) === null || _s_properties_title === void 0 ? void 0 : _s_properties_title.toLowerCase()) === trimmedRef.toLowerCase();
394
+ });
395
+ if (caseInsensitiveMatch) {
396
+ ;
397
+ (_logger_debug3 = logger.debug) === null || _logger_debug3 === void 0 ? void 0 : _logger_debug3.call(logger, 'findSheetByRef case-insensitive title match found');
398
+ return [
399
+ 2,
400
+ caseInsensitiveMatch
401
+ ];
402
+ }
403
+ // Strategy 4: Trimmed title match (handles extra whitespace in sheet names)
404
+ trimmedTitleMatch = sheets.find(function(s) {
405
+ var _s_properties_title, _s_properties;
406
+ return (s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : (_s_properties_title = _s_properties.title) === null || _s_properties_title === void 0 ? void 0 : _s_properties_title.trim()) === trimmedRef;
407
+ });
408
+ if (trimmedTitleMatch) {
409
+ ;
410
+ (_logger_debug4 = logger.debug) === null || _logger_debug4 === void 0 ? void 0 : _logger_debug4.call(logger, 'findSheetByRef trimmed title match found');
411
+ return [
412
+ 2,
413
+ trimmedTitleMatch
414
+ ];
415
+ }
416
+ // Strategy 5: Case-insensitive + trimmed title match
417
+ caseInsensitiveTrimmedMatch = sheets.find(function(s) {
418
+ var _s_properties_title, _s_properties;
419
+ return (s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : (_s_properties_title = _s_properties.title) === null || _s_properties_title === void 0 ? void 0 : _s_properties_title.trim().toLowerCase()) === trimmedRef.toLowerCase();
420
+ });
421
+ if (caseInsensitiveTrimmedMatch) {
422
+ ;
423
+ (_logger_debug5 = logger.debug) === null || _logger_debug5 === void 0 ? void 0 : _logger_debug5.call(logger, 'findSheetByRef case-insensitive trimmed title match found');
424
+ return [
425
+ 2,
426
+ caseInsensitiveTrimmedMatch
427
+ ];
428
+ }
429
+ // Strategy 6: Partial title match (last resort)
430
+ partialMatch = sheets.find(function(s) {
431
+ var _s_properties_title, _s_properties;
432
+ return s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : (_s_properties_title = _s_properties.title) === null || _s_properties_title === void 0 ? void 0 : _s_properties_title.toLowerCase().includes(trimmedRef.toLowerCase());
433
+ });
434
+ if (partialMatch) {
435
+ ;
436
+ (_logger_debug6 = logger.debug) === null || _logger_debug6 === void 0 ? void 0 : _logger_debug6.call(logger, 'findSheetByRef partial title match found');
437
+ return [
438
+ 2,
439
+ partialMatch
440
+ ];
441
+ }
442
+ (_logger_warn = logger.warn) === null || _logger_warn === void 0 ? void 0 : _logger_warn.call(logger, 'findSheetByRef no match found', {
443
+ searchRef: trimmedRef,
444
+ availableTitles: sheets.map(function(s) {
445
+ var _s_properties;
446
+ return s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.title;
447
+ }),
448
+ availableIds: sheets.map(function(s) {
449
+ var _s_properties;
450
+ return s === null || s === void 0 ? void 0 : (_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId;
451
+ })
452
+ });
453
+ return [
454
+ 2,
455
+ null
456
+ ];
457
+ }
458
+ });
459
+ })();
460
+ }
461
+ function ensureTabAndHeaders(_0, _1) {
462
+ return _async_to_generator(function(sheets, param) {
463
+ var spreadsheetId, sheetTitle, sheetRef, _param_requiredHeader, requiredHeader, _param_keyColumns, keyColumns, logger, _Math, _Math1, resolvedSheetTitle, sheet, _sheet_properties, defaultHeader, header, existingHeader, resp, vr, values, _err, unused, mergedHeader, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, col, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, name, keySet, chunkSize, startRow, normalizeKeyColumnsByName, keyColsIdx, validKeyIdxs, minIdx, maxIdx, startCol, endCol, endRow, range, respChunk, vrChunk, chunkRows, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop, _iterator2, _step2;
464
+ return _ts_generator(this, function(_state) {
465
+ switch(_state.label){
466
+ case 0:
467
+ spreadsheetId = param.spreadsheetId, sheetTitle = param.sheetTitle, sheetRef = param.sheetRef, _param_requiredHeader = param.requiredHeader, requiredHeader = _param_requiredHeader === void 0 ? null : _param_requiredHeader, _param_keyColumns = param.keyColumns, keyColumns = _param_keyColumns === void 0 ? [
468
+ 'id'
469
+ ] : _param_keyColumns, logger = param.logger;
470
+ if (!sheets) throw new Error('ensureTabAndHeaders: sheets is required');
471
+ if (!spreadsheetId) throw new Error('ensureTabAndHeaders: spreadsheetId is required');
472
+ if (!sheetTitle && !sheetRef) throw new Error('ensureTabAndHeaders: either sheetTitle or sheetRef is required');
473
+ // Resolve the actual sheet title from sheetRef if provided
474
+ resolvedSheetTitle = sheetTitle;
475
+ if (!sheetRef) return [
476
+ 3,
477
+ 2
478
+ ];
479
+ return [
480
+ 4,
481
+ findSheetByRef(sheets, spreadsheetId, sheetRef, logger)
482
+ ];
483
+ case 1:
484
+ sheet = _state.sent();
485
+ if (sheet) {
486
+ ;
487
+ resolvedSheetTitle = ((_sheet_properties = sheet.properties) === null || _sheet_properties === void 0 ? void 0 : _sheet_properties.title) || sheetRef;
488
+ } else {
489
+ // Sheet doesn't exist, use the sheetRef as the title for creation
490
+ resolvedSheetTitle = sheetRef;
491
+ }
492
+ _state.label = 2;
493
+ case 2:
494
+ if (!resolvedSheetTitle) throw new Error('ensureTabAndHeaders: could not resolve sheet title');
495
+ defaultHeader = [
496
+ 'id',
497
+ 'provider',
498
+ 'threadId',
499
+ 'to',
500
+ 'from',
501
+ 'cc',
502
+ 'bcc',
503
+ 'date',
504
+ 'subject',
505
+ 'labels',
506
+ 'snippet',
507
+ 'body'
508
+ ];
509
+ header = Array.isArray(requiredHeader) && requiredHeader.length ? requiredHeader : defaultHeader;
510
+ existingHeader = null;
511
+ _state.label = 3;
512
+ case 3:
513
+ _state.trys.push([
514
+ 3,
515
+ 5,
516
+ ,
517
+ 11
518
+ ]);
519
+ return [
520
+ 4,
521
+ sheets.spreadsheets.values.get({
522
+ spreadsheetId: spreadsheetId,
523
+ range: "".concat(resolvedSheetTitle, "!1:1"),
524
+ majorDimension: 'ROWS'
525
+ })
526
+ ];
527
+ case 4:
528
+ resp = _state.sent();
529
+ vr = resp.data;
530
+ values = ((vr === null || vr === void 0 ? void 0 : vr.values) || [])[0] || [];
531
+ existingHeader = values.length ? values : null;
532
+ return [
533
+ 3,
534
+ 11
535
+ ];
536
+ case 5:
537
+ _err = _state.sent();
538
+ _state.label = 6;
539
+ case 6:
540
+ _state.trys.push([
541
+ 6,
542
+ 8,
543
+ ,
544
+ 9
545
+ ]);
546
+ return [
547
+ 4,
548
+ sheets.spreadsheets.batchUpdate({
549
+ spreadsheetId: spreadsheetId,
550
+ requestBody: {
551
+ requests: [
552
+ {
553
+ addSheet: {
554
+ properties: {
555
+ title: resolvedSheetTitle
556
+ }
557
+ }
558
+ }
559
+ ]
560
+ }
561
+ })
562
+ ];
563
+ case 7:
564
+ _state.sent();
565
+ return [
566
+ 3,
567
+ 9
568
+ ];
569
+ case 8:
570
+ unused = _state.sent();
571
+ return [
572
+ 3,
573
+ 9
574
+ ];
575
+ case 9:
576
+ return [
577
+ 4,
578
+ sheets.spreadsheets.values.append({
579
+ spreadsheetId: spreadsheetId,
580
+ range: "".concat(resolvedSheetTitle, "!A1"),
581
+ valueInputOption: 'RAW',
582
+ insertDataOption: 'INSERT_ROWS',
583
+ requestBody: {
584
+ values: [
585
+ header
586
+ ]
587
+ }
588
+ })
589
+ ];
590
+ case 10:
591
+ _state.sent();
592
+ return [
593
+ 2,
594
+ {
595
+ header: header,
596
+ keySet: new Set()
597
+ }
598
+ ];
599
+ case 11:
600
+ if (!!existingHeader) return [
601
+ 3,
602
+ 13
603
+ ];
604
+ return [
605
+ 4,
606
+ sheets.spreadsheets.values.append({
607
+ spreadsheetId: spreadsheetId,
608
+ range: "".concat(resolvedSheetTitle, "!A1"),
609
+ valueInputOption: 'RAW',
610
+ insertDataOption: 'INSERT_ROWS',
611
+ requestBody: {
612
+ values: [
613
+ header
614
+ ]
615
+ }
616
+ })
617
+ ];
618
+ case 12:
619
+ _state.sent();
620
+ return [
621
+ 2,
622
+ {
623
+ header: header,
624
+ keySet: new Set()
625
+ }
626
+ ];
627
+ case 13:
628
+ mergedHeader = existingHeader.slice();
629
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
630
+ try {
631
+ for(_iterator = header[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
632
+ col = _step.value;
633
+ if (!mergedHeader.includes(col)) mergedHeader.push(col);
634
+ }
635
+ } catch (err) {
636
+ _didIteratorError = true;
637
+ _iteratorError = err;
638
+ } finally{
639
+ try {
640
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
641
+ _iterator.return();
642
+ }
643
+ } finally{
644
+ if (_didIteratorError) {
645
+ throw _iteratorError;
646
+ }
647
+ }
648
+ }
649
+ if (Array.isArray(keyColumns)) {
650
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
651
+ try {
652
+ for(_iterator1 = keyColumns[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
653
+ name = _step1.value;
654
+ if (typeof name !== 'string' || name.length === 0) throw new Error('ensureTabAndHeaders: keyColumns must be an array of non-empty strings');
655
+ if (!mergedHeader.includes(name)) mergedHeader.push(name);
656
+ }
657
+ } catch (err) {
658
+ _didIteratorError1 = true;
659
+ _iteratorError1 = err;
660
+ } finally{
661
+ try {
662
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
663
+ _iterator1.return();
664
+ }
665
+ } finally{
666
+ if (_didIteratorError1) {
667
+ throw _iteratorError1;
668
+ }
669
+ }
670
+ }
671
+ }
672
+ if (!(mergedHeader.length !== existingHeader.length)) return [
673
+ 3,
674
+ 15
675
+ ];
676
+ return [
677
+ 4,
678
+ sheets.spreadsheets.values.update({
679
+ spreadsheetId: spreadsheetId,
680
+ range: "".concat(resolvedSheetTitle, "!1:1"),
681
+ valueInputOption: 'RAW',
682
+ requestBody: {
683
+ values: [
684
+ mergedHeader
685
+ ]
686
+ }
687
+ })
688
+ ];
689
+ case 14:
690
+ _state.sent();
691
+ _state.label = 15;
692
+ case 15:
693
+ keySet = new Set();
694
+ chunkSize = 1000;
695
+ startRow = 2;
696
+ normalizeKeyColumnsByName = function(kc, hdr) {
697
+ if (!Array.isArray(kc) || kc.length === 0) return [];
698
+ return kc.map(function(name) {
699
+ if (typeof name !== 'string' || name.length === 0) return -1;
700
+ var idx = hdr.indexOf(name);
701
+ return Number.isInteger(idx) && idx >= 0 ? idx : -1;
702
+ });
703
+ };
704
+ keyColsIdx = normalizeKeyColumnsByName(keyColumns, mergedHeader);
705
+ validKeyIdxs = keyColsIdx.filter(function(i) {
706
+ return i >= 0;
707
+ });
708
+ if (validKeyIdxs.length === 0) return [
709
+ 2,
710
+ {
711
+ header: mergedHeader,
712
+ keySet: new Set(),
713
+ keyColumnsIdx: keyColsIdx
714
+ }
715
+ ];
716
+ minIdx = (_Math = Math).min.apply(_Math, _to_consumable_array(validKeyIdxs));
717
+ maxIdx = (_Math1 = Math).max.apply(_Math1, _to_consumable_array(validKeyIdxs));
718
+ startCol = (0, _columnutilities.a1Col)(minIdx + 1);
719
+ endCol = (0, _columnutilities.a1Col)(maxIdx + 1);
720
+ _state.label = 16;
721
+ case 16:
722
+ if (!true) return [
723
+ 3,
724
+ 18
725
+ ];
726
+ endRow = startRow + chunkSize - 1;
727
+ range = "".concat(resolvedSheetTitle, "!").concat(startCol).concat(startRow, ":").concat(endCol).concat(endRow);
728
+ return [
729
+ 4,
730
+ sheets.spreadsheets.values.get({
731
+ spreadsheetId: spreadsheetId,
732
+ range: range,
733
+ majorDimension: 'ROWS'
734
+ })
735
+ ];
736
+ case 17:
737
+ respChunk = _state.sent();
738
+ vrChunk = respChunk.data;
739
+ chunkRows = (vrChunk === null || vrChunk === void 0 ? void 0 : vrChunk.values) || [];
740
+ if (!chunkRows || chunkRows.length === 0) return [
741
+ 3,
742
+ 18
743
+ ];
744
+ _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
745
+ try {
746
+ _loop = function() {
747
+ var r = _step2.value;
748
+ var row = Array.isArray(r) ? r : [];
749
+ // Use the same key generation logic as appendRows for consistency
750
+ var lower = mergedHeader.map(function(h) {
751
+ return String(h !== null && h !== void 0 ? h : '').toLowerCase();
752
+ });
753
+ var provHeaderIdx = lower.indexOf('provider');
754
+ var idHeaderIdx = lower.indexOf('messageid');
755
+ if (idHeaderIdx === -1) idHeaderIdx = lower.indexOf('id');
756
+ var compositeKey = void 0;
757
+ if (provHeaderIdx >= 0 && idHeaderIdx >= 0) {
758
+ var _row_providerOffset, _row_idOffset;
759
+ // Special case: if both provider and id columns exist, use them
760
+ var providerOffset = provHeaderIdx - minIdx;
761
+ var idOffset = idHeaderIdx - minIdx;
762
+ var providerVal = providerOffset >= 0 ? String((_row_providerOffset = row[providerOffset]) !== null && _row_providerOffset !== void 0 ? _row_providerOffset : '').trim() : '';
763
+ var messageVal = idOffset >= 0 ? String((_row_idOffset = row[idOffset]) !== null && _row_idOffset !== void 0 ? _row_idOffset : '').trim() : '';
764
+ compositeKey = [
765
+ providerVal,
766
+ messageVal
767
+ ].join('\\');
768
+ } else {
769
+ // General case: use the specified key columns
770
+ var comps = keyColsIdx.map(function(i) {
771
+ var _row_;
772
+ return i < 0 ? '' : String((_row_ = row[i - minIdx]) !== null && _row_ !== void 0 ? _row_ : '').trim();
773
+ });
774
+ compositeKey = comps.join('\\');
775
+ }
776
+ if (compositeKey.replace(/\\+/g, '') !== '') keySet.add(compositeKey);
777
+ };
778
+ for(_iterator2 = chunkRows[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true)_loop();
779
+ } catch (err) {
780
+ _didIteratorError2 = true;
781
+ _iteratorError2 = err;
782
+ } finally{
783
+ try {
784
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
785
+ _iterator2.return();
786
+ }
787
+ } finally{
788
+ if (_didIteratorError2) {
789
+ throw _iteratorError2;
790
+ }
791
+ }
792
+ }
793
+ startRow += chunkRows.length;
794
+ return [
795
+ 3,
796
+ 16
797
+ ];
798
+ case 18:
799
+ return [
800
+ 2,
801
+ {
802
+ header: mergedHeader,
803
+ keySet: keySet,
804
+ keyColumnsIdx: keyColsIdx
805
+ }
806
+ ];
807
+ }
808
+ });
809
+ }).apply(this, arguments);
810
+ }
811
+ /* 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; }