@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,672 @@
1
+ /**
2
+ * Range Operations Utilities for Google Sheets
3
+ *
4
+ * This module provides comprehensive utilities for working with A1 notation,
5
+ * range parsing, batch operations, and range validation in Google Sheets.
6
+ *
7
+ * Key features:
8
+ * - A1 notation validation and parsing
9
+ * - Range manipulation and calculation utilities
10
+ * - Batch operation builders for Google Sheets API
11
+ * - Cell count and dimension calculations
12
+ * - Range conflict detection for batch operations
13
+ * - Google Sheets limits validation and enforcement
14
+ */ "use strict";
15
+ Object.defineProperty(exports, "__esModule", {
16
+ value: true
17
+ });
18
+ function _export(target, all) {
19
+ for(var name in all)Object.defineProperty(target, name, {
20
+ enumerable: true,
21
+ get: Object.getOwnPropertyDescriptor(all, name).get
22
+ });
23
+ }
24
+ _export(exports, {
25
+ get GOOGLE_SHEETS_LIMITS () {
26
+ return GOOGLE_SHEETS_LIMITS;
27
+ },
28
+ get buildValuesBatchUpdateRequest () {
29
+ return buildValuesBatchUpdateRequest;
30
+ },
31
+ get calculateRangeDimensions () {
32
+ return calculateRangeDimensions;
33
+ },
34
+ get calculateTotalCells () {
35
+ return calculateTotalCells;
36
+ },
37
+ get columnIndexToString () {
38
+ return columnIndexToString;
39
+ },
40
+ get columnStringToIndex () {
41
+ return columnStringToIndex;
42
+ },
43
+ get detectRangeConflicts () {
44
+ return detectRangeConflicts;
45
+ },
46
+ get expandRange () {
47
+ return expandRange;
48
+ },
49
+ get getRangeIntersection () {
50
+ return getRangeIntersection;
51
+ },
52
+ get isValidA1Notation () {
53
+ return isValidA1Notation;
54
+ },
55
+ get parseA1Notation () {
56
+ return parseA1Notation;
57
+ },
58
+ get parseCellReference () {
59
+ return parseCellReference;
60
+ },
61
+ get rangeReferenceToGridRange () {
62
+ return rangeReferenceToGridRange;
63
+ },
64
+ get rangeToA1Notation () {
65
+ return rangeToA1Notation;
66
+ },
67
+ get rangesOverlap () {
68
+ return rangesOverlap;
69
+ },
70
+ get splitRangeIntoChunks () {
71
+ return splitRangeIntoChunks;
72
+ },
73
+ get validateA1Notation () {
74
+ return validateA1Notation;
75
+ },
76
+ get validateBatchRanges () {
77
+ return validateBatchRanges;
78
+ }
79
+ });
80
+ var _columnutilities = require("./column-utilities.js");
81
+ function _array_like_to_array(arr, len) {
82
+ if (len == null || len > arr.length) len = arr.length;
83
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
84
+ return arr2;
85
+ }
86
+ function _array_with_holes(arr) {
87
+ if (Array.isArray(arr)) return arr;
88
+ }
89
+ function _iterable_to_array_limit(arr, i) {
90
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
91
+ if (_i == null) return;
92
+ var _arr = [];
93
+ var _n = true;
94
+ var _d = false;
95
+ var _s, _e;
96
+ try {
97
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
98
+ _arr.push(_s.value);
99
+ if (i && _arr.length === i) break;
100
+ }
101
+ } catch (err) {
102
+ _d = true;
103
+ _e = err;
104
+ } finally{
105
+ try {
106
+ if (!_n && _i["return"] != null) _i["return"]();
107
+ } finally{
108
+ if (_d) throw _e;
109
+ }
110
+ }
111
+ return _arr;
112
+ }
113
+ function _non_iterable_rest() {
114
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
115
+ }
116
+ function _sliced_to_array(arr, i) {
117
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
118
+ }
119
+ function _unsupported_iterable_to_array(o, minLen) {
120
+ if (!o) return;
121
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
122
+ var n = Object.prototype.toString.call(o).slice(8, -1);
123
+ if (n === "Object" && o.constructor) n = o.constructor.name;
124
+ if (n === "Map" || n === "Set") return Array.from(n);
125
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
126
+ }
127
+ var GOOGLE_SHEETS_LIMITS = {
128
+ MAX_ROWS: 10000000,
129
+ MAX_COLUMNS: 18278,
130
+ MAX_CELLS: 10000000,
131
+ MAX_BATCH_REQUESTS: 1000,
132
+ MAX_DIMENSION_BATCH_REQUESTS: 100
133
+ };
134
+ function isValidA1Notation(notation) {
135
+ if (!notation || typeof notation !== 'string') {
136
+ return false;
137
+ }
138
+ // Use the same regex pattern as in the schema
139
+ var a1Pattern = /^(?:[A-Z]{1,3}(?:[1-9]\d{0,6}|10000000)(?::[A-Z]{1,3}(?:[1-9]\d{0,6}|10000000))?|[A-Z]{1,3}:[A-Z]{1,3}|(?:[1-9]\d{0,6}|10000000):(?:[1-9]\d{0,6}|10000000))$/;
140
+ if (!a1Pattern.test(notation)) {
141
+ return false;
142
+ }
143
+ // Additional validation for Google Sheets limits
144
+ var parts = notation.split(':');
145
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
146
+ try {
147
+ for(var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
148
+ var part = _step.value;
149
+ // Check cell reference
150
+ var cellMatch = part.match(/^([A-Z]{1,3})([1-9]\d{0,6}|10000000)$/);
151
+ if (cellMatch && cellMatch[1] && cellMatch[2]) {
152
+ var _cellMatch = _sliced_to_array(cellMatch, 3), colStr = _cellMatch[1], rowStr = _cellMatch[2];
153
+ // Validate column
154
+ var colNum = columnStringToIndex(colStr);
155
+ if (colNum > GOOGLE_SHEETS_LIMITS.MAX_COLUMNS) {
156
+ return false;
157
+ }
158
+ // Validate row
159
+ var rowNum = parseInt(rowStr, 10);
160
+ if (rowNum > GOOGLE_SHEETS_LIMITS.MAX_ROWS) {
161
+ return false;
162
+ }
163
+ }
164
+ // Check column reference
165
+ var colMatch = part.match(/^([A-Z]{1,3})$/);
166
+ if (colMatch && colMatch[1]) {
167
+ var colNum1 = columnStringToIndex(colMatch[1]);
168
+ if (colNum1 > GOOGLE_SHEETS_LIMITS.MAX_COLUMNS) {
169
+ return false;
170
+ }
171
+ }
172
+ // Check row reference
173
+ var rowMatch = part.match(/^([1-9]\d{0,6}|10000000)$/);
174
+ if (rowMatch && rowMatch[1]) {
175
+ var rowNum1 = parseInt(rowMatch[1], 10);
176
+ if (rowNum1 > GOOGLE_SHEETS_LIMITS.MAX_ROWS) {
177
+ return false;
178
+ }
179
+ }
180
+ }
181
+ } catch (err) {
182
+ _didIteratorError = true;
183
+ _iteratorError = err;
184
+ } finally{
185
+ try {
186
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
187
+ _iterator.return();
188
+ }
189
+ } finally{
190
+ if (_didIteratorError) {
191
+ throw _iteratorError;
192
+ }
193
+ }
194
+ }
195
+ return true;
196
+ }
197
+ function validateA1Notation(notation) {
198
+ if (!isValidA1Notation(notation)) {
199
+ throw new Error('Invalid A1 notation: "'.concat(notation, '". Valid formats: A1, A1:B2, A:B, 1:2'));
200
+ }
201
+ }
202
+ function columnStringToIndex(colStr) {
203
+ var colNum = 0;
204
+ for(var i = 0; i < colStr.length; i++){
205
+ colNum = colNum * 26 + (colStr.charCodeAt(i) - 64);
206
+ }
207
+ return colNum;
208
+ }
209
+ function columnIndexToString(colIndex) {
210
+ return (0, _columnutilities.a1Col)(colIndex);
211
+ }
212
+ function parseCellReference(cellRef) {
213
+ var match = cellRef.match(/^([A-Z]{1,3})([1-9]\d{0,6}|10000000)$/);
214
+ if (!match || !match[1] || !match[2]) {
215
+ throw new Error("Invalid cell reference: ".concat(cellRef));
216
+ }
217
+ var _match = _sliced_to_array(match, 3), column = _match[1], rowStr = _match[2];
218
+ var row = parseInt(rowStr, 10);
219
+ var columnIndex = columnStringToIndex(column);
220
+ return {
221
+ column: column,
222
+ columnIndex: columnIndex,
223
+ row: row
224
+ };
225
+ }
226
+ function parseA1Notation(notation) {
227
+ validateA1Notation(notation);
228
+ var parts = notation.split(':');
229
+ if (parts.length === 1) {
230
+ var part = parts[0];
231
+ if (!part) {
232
+ throw new Error('Invalid A1 notation: empty part after split');
233
+ }
234
+ // Single cell reference (e.g., A1)
235
+ var cellMatch = part.match(/^([A-Z]{1,3})([1-9]\d{0,6}|10000000)$/);
236
+ if (cellMatch && cellMatch[1] && cellMatch[2]) {
237
+ var startCell = parseCellReference(part);
238
+ return {
239
+ type: 'cell',
240
+ startCell: startCell,
241
+ endCell: startCell
242
+ };
243
+ }
244
+ // Single column reference (e.g., A)
245
+ var colMatch = part.match(/^([A-Z]{1,3})$/);
246
+ if (colMatch && colMatch[1]) {
247
+ var column = colMatch[1];
248
+ var columnIndex = columnStringToIndex(column);
249
+ return {
250
+ type: 'column',
251
+ startColumn: column,
252
+ endColumn: column,
253
+ startColumnIndex: columnIndex,
254
+ endColumnIndex: columnIndex
255
+ };
256
+ }
257
+ // Single row reference (e.g., 1)
258
+ var rowMatch = part.match(/^([1-9]\d{0,6}|10000000)$/);
259
+ if (rowMatch && rowMatch[1]) {
260
+ var row = parseInt(rowMatch[1], 10);
261
+ return {
262
+ type: 'row',
263
+ startRow: row,
264
+ endRow: row
265
+ };
266
+ }
267
+ }
268
+ if (parts.length === 2 && parts[0] && parts[1]) {
269
+ var _parts = _sliced_to_array(parts, 2), start = _parts[0], end = _parts[1];
270
+ // Cell range (e.g., A1:B5)
271
+ var startCellMatch = start.match(/^([A-Z]{1,3})([1-9]\d{0,6}|10000000)$/);
272
+ var endCellMatch = end.match(/^([A-Z]{1,3})([1-9]\d{0,6}|10000000)$/);
273
+ if (startCellMatch && endCellMatch && startCellMatch[1] && startCellMatch[2] && endCellMatch[1] && endCellMatch[2]) {
274
+ var startCell1 = parseCellReference(start);
275
+ var endCell = parseCellReference(end);
276
+ return {
277
+ type: 'range',
278
+ startCell: startCell1,
279
+ endCell: endCell
280
+ };
281
+ }
282
+ // Column range (e.g., A:B)
283
+ var startColMatch = start.match(/^([A-Z]{1,3})$/);
284
+ var endColMatch = end.match(/^([A-Z]{1,3})$/);
285
+ if (startColMatch && endColMatch && startColMatch[1] && endColMatch[1]) {
286
+ var startColumn = startColMatch[1];
287
+ var endColumn = endColMatch[1];
288
+ var startColumnIndex = columnStringToIndex(startColumn);
289
+ var endColumnIndex = columnStringToIndex(endColumn);
290
+ return {
291
+ type: 'column',
292
+ startColumn: startColumn,
293
+ endColumn: endColumn,
294
+ startColumnIndex: startColumnIndex,
295
+ endColumnIndex: endColumnIndex
296
+ };
297
+ }
298
+ // Row range (e.g., 1:5)
299
+ var startRowMatch = start.match(/^([1-9]\d{0,6}|10000000)$/);
300
+ var endRowMatch = end.match(/^([1-9]\d{0,6}|10000000)$/);
301
+ if (startRowMatch && endRowMatch && startRowMatch[1] && endRowMatch[1]) {
302
+ var startRow = parseInt(startRowMatch[1], 10);
303
+ var endRow = parseInt(endRowMatch[1], 10);
304
+ return {
305
+ type: 'row',
306
+ startRow: startRow,
307
+ endRow: endRow
308
+ };
309
+ }
310
+ }
311
+ throw new Error("Unable to parse A1 notation: ".concat(notation));
312
+ }
313
+ function rangeToA1Notation(range) {
314
+ switch(range.type){
315
+ case 'cell':
316
+ if (!range.startCell) throw new Error('Invalid cell range: missing startCell');
317
+ return "".concat(range.startCell.column).concat(range.startCell.row);
318
+ case 'range':
319
+ if (!range.startCell || !range.endCell) throw new Error('Invalid range: missing start or end cell');
320
+ return "".concat(range.startCell.column).concat(range.startCell.row, ":").concat(range.endCell.column).concat(range.endCell.row);
321
+ case 'column':
322
+ if (!range.startColumn || !range.endColumn) throw new Error('Invalid column range: missing start or end column');
323
+ if (range.startColumn === range.endColumn) {
324
+ return range.startColumn;
325
+ }
326
+ return "".concat(range.startColumn, ":").concat(range.endColumn);
327
+ case 'row':
328
+ if (range.startRow === undefined || range.endRow === undefined) throw new Error('Invalid row range: missing start or end row');
329
+ if (range.startRow === range.endRow) {
330
+ return range.startRow.toString();
331
+ }
332
+ return "".concat(range.startRow, ":").concat(range.endRow);
333
+ default:
334
+ throw new Error("Unknown range type: ".concat(range.type));
335
+ }
336
+ }
337
+ function calculateRangeDimensions(notation) {
338
+ var range = parseA1Notation(notation);
339
+ switch(range.type){
340
+ case 'cell':
341
+ return {
342
+ rows: 1,
343
+ columns: 1,
344
+ cells: 1
345
+ };
346
+ case 'range':
347
+ {
348
+ if (!range.startCell || !range.endCell) throw new Error('Invalid range: missing cells');
349
+ var rows = range.endCell.row - range.startCell.row + 1;
350
+ var columns = range.endCell.columnIndex - range.startCell.columnIndex + 1;
351
+ return {
352
+ rows: rows,
353
+ columns: columns,
354
+ cells: rows * columns
355
+ };
356
+ }
357
+ case 'column':
358
+ {
359
+ if (range.startColumnIndex === undefined || range.endColumnIndex === undefined) {
360
+ throw new Error('Invalid column range: missing column indices');
361
+ }
362
+ var columnCount = range.endColumnIndex - range.startColumnIndex + 1;
363
+ return {
364
+ rows: GOOGLE_SHEETS_LIMITS.MAX_ROWS,
365
+ columns: columnCount,
366
+ cells: GOOGLE_SHEETS_LIMITS.MAX_ROWS * columnCount
367
+ };
368
+ }
369
+ case 'row':
370
+ {
371
+ if (range.startRow === undefined || range.endRow === undefined) {
372
+ throw new Error('Invalid row range: missing row numbers');
373
+ }
374
+ var rowCount = range.endRow - range.startRow + 1;
375
+ return {
376
+ rows: rowCount,
377
+ columns: GOOGLE_SHEETS_LIMITS.MAX_COLUMNS,
378
+ cells: rowCount * GOOGLE_SHEETS_LIMITS.MAX_COLUMNS
379
+ };
380
+ }
381
+ default:
382
+ throw new Error("Unknown range type: ".concat(range.type));
383
+ }
384
+ }
385
+ function calculateTotalCells(ranges) {
386
+ return ranges.reduce(function(total, range) {
387
+ var dimensions = calculateRangeDimensions(range);
388
+ return total + dimensions.cells;
389
+ }, 0);
390
+ }
391
+ function buildValuesBatchUpdateRequest(requests, sheetTitle) {
392
+ var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
393
+ // Validate all ranges first
394
+ requests.forEach(function(req, index) {
395
+ try {
396
+ validateA1Notation(req.range);
397
+ } catch (error) {
398
+ throw new Error("Invalid range in request ".concat(index, ": ").concat(error));
399
+ }
400
+ });
401
+ // Calculate total cells for validation
402
+ var totalCells = calculateTotalCells(requests.map(function(r) {
403
+ return r.range;
404
+ }));
405
+ if (totalCells > GOOGLE_SHEETS_LIMITS.MAX_CELLS) {
406
+ throw new Error("Batch update exceeds maximum cells limit: ".concat(totalCells, " > ").concat(GOOGLE_SHEETS_LIMITS.MAX_CELLS));
407
+ }
408
+ // Build the request
409
+ var data = requests.map(function(req) {
410
+ return {
411
+ range: "".concat(sheetTitle, "!").concat(req.range),
412
+ values: req.values,
413
+ majorDimension: req.majorDimension || 'ROWS'
414
+ };
415
+ });
416
+ return {
417
+ valueInputOption: options.valueInputOption || 'USER_ENTERED',
418
+ data: data,
419
+ includeValuesInResponse: options.includeValuesInResponse || false,
420
+ responseDateTimeRenderOption: options.responseDateTimeRenderOption || 'FORMATTED_STRING',
421
+ responseValueRenderOption: options.responseValueRenderOption || 'FORMATTED_VALUE'
422
+ };
423
+ }
424
+ function rangesOverlap(range1, range2) {
425
+ try {
426
+ var parsed1 = parseA1Notation(range1);
427
+ var parsed2 = parseA1Notation(range2);
428
+ // Different types might still overlap, so we need to normalize to cell ranges
429
+ var normalized1 = normalizeRangeToBounds(parsed1);
430
+ var normalized2 = normalizeRangeToBounds(parsed2);
431
+ // Check for overlap
432
+ return !(normalized1.endRow < normalized2.startRow || normalized2.endRow < normalized1.startRow || normalized1.endCol < normalized2.startCol || normalized2.endCol < normalized1.startCol);
433
+ } catch (unused) {
434
+ // If we can't parse the ranges, assume no overlap
435
+ return false;
436
+ }
437
+ }
438
+ /**
439
+ * Normalizes a range to bounds for overlap checking
440
+ */ function normalizeRangeToBounds(range) {
441
+ switch(range.type){
442
+ case 'cell':
443
+ if (!range.startCell) throw new Error('Invalid cell range');
444
+ return {
445
+ startRow: range.startCell.row,
446
+ endRow: range.startCell.row,
447
+ startCol: range.startCell.columnIndex,
448
+ endCol: range.startCell.columnIndex
449
+ };
450
+ case 'range':
451
+ if (!range.startCell || !range.endCell) throw new Error('Invalid range');
452
+ return {
453
+ startRow: range.startCell.row,
454
+ endRow: range.endCell.row,
455
+ startCol: range.startCell.columnIndex,
456
+ endCol: range.endCell.columnIndex
457
+ };
458
+ case 'column':
459
+ if (range.startColumnIndex === undefined || range.endColumnIndex === undefined) {
460
+ throw new Error('Invalid column range');
461
+ }
462
+ return {
463
+ startRow: 1,
464
+ endRow: GOOGLE_SHEETS_LIMITS.MAX_ROWS,
465
+ startCol: range.startColumnIndex,
466
+ endCol: range.endColumnIndex
467
+ };
468
+ case 'row':
469
+ if (range.startRow === undefined || range.endRow === undefined) {
470
+ throw new Error('Invalid row range');
471
+ }
472
+ return {
473
+ startRow: range.startRow,
474
+ endRow: range.endRow,
475
+ startCol: 1,
476
+ endCol: GOOGLE_SHEETS_LIMITS.MAX_COLUMNS
477
+ };
478
+ default:
479
+ throw new Error("Unknown range type: ".concat(range.type));
480
+ }
481
+ }
482
+ function detectRangeConflicts(ranges) {
483
+ var conflicts = [];
484
+ for(var i = 0; i < ranges.length; i++){
485
+ for(var j = i + 1; j < ranges.length; j++){
486
+ var range1 = ranges[i];
487
+ var range2 = ranges[j];
488
+ if (!range1 || !range2) continue;
489
+ if (rangesOverlap(range1, range2)) {
490
+ conflicts.push({
491
+ range1: range1,
492
+ range2: range2,
493
+ conflictType: 'overlap',
494
+ description: "Ranges ".concat(range1, " and ").concat(range2, " overlap")
495
+ });
496
+ }
497
+ }
498
+ }
499
+ return conflicts;
500
+ }
501
+ function validateBatchRanges(ranges) {
502
+ var errors = [];
503
+ var warnings = [];
504
+ var totalCells = 0;
505
+ // Validate each range
506
+ ranges.forEach(function(range, index) {
507
+ try {
508
+ validateA1Notation(range);
509
+ var dimensions = calculateRangeDimensions(range);
510
+ totalCells += dimensions.cells;
511
+ // Check for very large ranges that might cause performance issues
512
+ if (dimensions.cells > 1000000) {
513
+ warnings.push("Range ".concat(index + 1, " (").concat(range, ") affects ").concat(dimensions.cells.toLocaleString(), " cells, which may impact performance"));
514
+ }
515
+ } catch (error) {
516
+ errors.push("Range ".concat(index + 1, " (").concat(range, "): ").concat(error));
517
+ }
518
+ });
519
+ // Check batch size limits
520
+ if (ranges.length > GOOGLE_SHEETS_LIMITS.MAX_BATCH_REQUESTS) {
521
+ errors.push("Too many ranges: ".concat(ranges.length, " > ").concat(GOOGLE_SHEETS_LIMITS.MAX_BATCH_REQUESTS));
522
+ }
523
+ // Check total cells limit
524
+ if (totalCells > GOOGLE_SHEETS_LIMITS.MAX_CELLS) {
525
+ errors.push("Total cells exceed limit: ".concat(totalCells.toLocaleString(), " > ").concat(GOOGLE_SHEETS_LIMITS.MAX_CELLS.toLocaleString()));
526
+ }
527
+ // Check for conflicts
528
+ var conflicts = detectRangeConflicts(ranges);
529
+ conflicts.forEach(function(conflict) {
530
+ warnings.push(conflict.description);
531
+ });
532
+ return {
533
+ valid: errors.length === 0,
534
+ errors: errors,
535
+ warnings: warnings,
536
+ totalCells: totalCells
537
+ };
538
+ }
539
+ function expandRange(notation, expandRows, expandCols) {
540
+ var range = parseA1Notation(notation);
541
+ if (range.type === 'cell' && range.startCell) {
542
+ var newEndRow = Math.min(range.startCell.row + expandRows, GOOGLE_SHEETS_LIMITS.MAX_ROWS);
543
+ var newEndCol = Math.min(range.startCell.columnIndex + expandCols, GOOGLE_SHEETS_LIMITS.MAX_COLUMNS);
544
+ var newEndColStr = columnIndexToString(newEndCol);
545
+ if (expandRows === 0 && expandCols === 0) {
546
+ return notation;
547
+ }
548
+ return "".concat(range.startCell.column).concat(range.startCell.row, ":").concat(newEndColStr).concat(newEndRow);
549
+ }
550
+ if (range.type === 'range' && range.startCell && range.endCell) {
551
+ var newEndRow1 = Math.min(range.endCell.row + expandRows, GOOGLE_SHEETS_LIMITS.MAX_ROWS);
552
+ var newEndCol1 = Math.min(range.endCell.columnIndex + expandCols, GOOGLE_SHEETS_LIMITS.MAX_COLUMNS);
553
+ var newEndColStr1 = columnIndexToString(newEndCol1);
554
+ return "".concat(range.startCell.column).concat(range.startCell.row, ":").concat(newEndColStr1).concat(newEndRow1);
555
+ }
556
+ // For row and column ranges, expansion doesn't make sense in the same way
557
+ return notation;
558
+ }
559
+ function getRangeIntersection(range1, range2) {
560
+ try {
561
+ var parsed1 = parseA1Notation(range1);
562
+ var parsed2 = parseA1Notation(range2);
563
+ var bounds1 = normalizeRangeToBounds(parsed1);
564
+ var bounds2 = normalizeRangeToBounds(parsed2);
565
+ // Check if they overlap
566
+ if (!rangesOverlap(range1, range2)) {
567
+ return null;
568
+ }
569
+ // Calculate intersection bounds
570
+ var startRow = Math.max(bounds1.startRow, bounds2.startRow);
571
+ var endRow = Math.min(bounds1.endRow, bounds2.endRow);
572
+ var startCol = Math.max(bounds1.startCol, bounds2.startCol);
573
+ var endCol = Math.min(bounds1.endCol, bounds2.endCol);
574
+ var startColStr = columnIndexToString(startCol);
575
+ var endColStr = columnIndexToString(endCol);
576
+ if (startRow === endRow && startCol === endCol) {
577
+ return "".concat(startColStr).concat(startRow);
578
+ }
579
+ return "".concat(startColStr).concat(startRow, ":").concat(endColStr).concat(endRow);
580
+ } catch (unused) {
581
+ return null;
582
+ }
583
+ }
584
+ function splitRangeIntoChunks(notation) {
585
+ var maxCellsPerChunk = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 100000;
586
+ var range = parseA1Notation(notation);
587
+ var dimensions = calculateRangeDimensions(notation);
588
+ if (dimensions.cells <= maxCellsPerChunk) {
589
+ return [
590
+ notation
591
+ ];
592
+ }
593
+ var chunks = [];
594
+ if (range.type === 'range' && range.startCell && range.endCell) {
595
+ var totalRows = range.endCell.row - range.startCell.row + 1;
596
+ var totalCols = range.endCell.columnIndex - range.startCell.columnIndex + 1;
597
+ // Calculate chunk size based on max cells
598
+ var cellsPerRow = totalCols;
599
+ var maxRowsPerChunk = Math.floor(maxCellsPerChunk / cellsPerRow);
600
+ if (maxRowsPerChunk >= 1) {
601
+ // Split by rows
602
+ for(var currentRow = range.startCell.row; currentRow <= range.endCell.row; currentRow += maxRowsPerChunk){
603
+ var chunkEndRow = Math.min(currentRow + maxRowsPerChunk - 1, range.endCell.row);
604
+ var chunkRange = "".concat(range.startCell.column).concat(currentRow, ":").concat(range.endCell.column).concat(chunkEndRow);
605
+ chunks.push(chunkRange);
606
+ }
607
+ } else {
608
+ // If even one row is too big, split by columns
609
+ var maxColsPerChunk = Math.floor(maxCellsPerChunk / totalRows);
610
+ for(var currentCol = range.startCell.columnIndex; currentCol <= range.endCell.columnIndex; currentCol += maxColsPerChunk){
611
+ var chunkEndCol = Math.min(currentCol + maxColsPerChunk - 1, range.endCell.columnIndex);
612
+ var startColStr = columnIndexToString(currentCol);
613
+ var endColStr = columnIndexToString(chunkEndCol);
614
+ var chunkRange1 = "".concat(startColStr).concat(range.startCell.row, ":").concat(endColStr).concat(range.endCell.row);
615
+ chunks.push(chunkRange1);
616
+ }
617
+ }
618
+ } else {
619
+ // For other range types, just return the original range
620
+ // (column and row ranges are already at their limits)
621
+ chunks.push(notation);
622
+ }
623
+ return chunks;
624
+ }
625
+ function rangeReferenceToGridRange(rangeRef, sheetId) {
626
+ if (rangeRef.type === 'cell' || rangeRef.type === 'range') {
627
+ // For cell and range types, extract from startCell/endCell
628
+ if (!rangeRef.startCell || !rangeRef.endCell) {
629
+ throw new Error("Invalid ".concat(rangeRef.type, " range: missing start or end cell"));
630
+ }
631
+ return {
632
+ sheetId: sheetId,
633
+ // Convert 1-based row to 0-based startRowIndex
634
+ startRowIndex: rangeRef.startCell.row - 1,
635
+ // endRowIndex is exclusive (so row 5 becomes endRowIndex 5)
636
+ endRowIndex: rangeRef.endCell.row,
637
+ // Convert 1-based column index to 0-based startColumnIndex
638
+ startColumnIndex: rangeRef.startCell.columnIndex - 1,
639
+ // endColumnIndex is exclusive
640
+ endColumnIndex: rangeRef.endCell.columnIndex
641
+ };
642
+ }
643
+ if (rangeRef.type === 'row') {
644
+ // For row types, use startRow/endRow and omit column indices for full row width
645
+ if (rangeRef.startRow === undefined || rangeRef.endRow === undefined) {
646
+ throw new Error('Invalid row range: missing start or end row');
647
+ }
648
+ return {
649
+ sheetId: sheetId,
650
+ // Convert 1-based row to 0-based startRowIndex
651
+ startRowIndex: rangeRef.startRow - 1,
652
+ // endRowIndex is exclusive
653
+ endRowIndex: rangeRef.endRow
654
+ };
655
+ }
656
+ if (rangeRef.type === 'column') {
657
+ // For column types, use startColumnIndex/endColumnIndex and omit row indices for full column height
658
+ if (rangeRef.startColumnIndex === undefined || rangeRef.endColumnIndex === undefined) {
659
+ throw new Error('Invalid column range: missing start or end column index');
660
+ }
661
+ return {
662
+ sheetId: sheetId,
663
+ // Omit startRowIndex and endRowIndex to apply to all rows
664
+ // Convert 1-based column index to 0-based startColumnIndex
665
+ startColumnIndex: rangeRef.startColumnIndex - 1,
666
+ // endColumnIndex is exclusive
667
+ endColumnIndex: rangeRef.endColumnIndex
668
+ };
669
+ }
670
+ throw new Error("Unknown range type: ".concat(rangeRef.type));
671
+ }
672
+ /* 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; }