gtypee 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 (464) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +1442 -0
  3. package/dist/bin/gtypee.d.ts +3 -0
  4. package/dist/bin/gtypee.d.ts.map +1 -0
  5. package/dist/bin/gtypee.js +18 -0
  6. package/dist/bin/gtypee.js.map +1 -0
  7. package/dist/src/authclient/authclient.d.ts +11 -0
  8. package/dist/src/authclient/authclient.d.ts.map +1 -0
  9. package/dist/src/authclient/authclient.js +26 -0
  10. package/dist/src/authclient/authclient.js.map +1 -0
  11. package/dist/src/cmd/agent/commands.d.ts +3 -0
  12. package/dist/src/cmd/agent/commands.d.ts.map +1 -0
  13. package/dist/src/cmd/agent/commands.js +16 -0
  14. package/dist/src/cmd/agent/commands.js.map +1 -0
  15. package/dist/src/cmd/appscript/commands.d.ts +24 -0
  16. package/dist/src/cmd/appscript/commands.d.ts.map +1 -0
  17. package/dist/src/cmd/appscript/commands.js +116 -0
  18. package/dist/src/cmd/appscript/commands.js.map +1 -0
  19. package/dist/src/cmd/appscript/runtime.d.ts +4 -0
  20. package/dist/src/cmd/appscript/runtime.d.ts.map +1 -0
  21. package/dist/src/cmd/appscript/runtime.js +64 -0
  22. package/dist/src/cmd/appscript/runtime.js.map +1 -0
  23. package/dist/src/cmd/auth/commands.d.ts +67 -0
  24. package/dist/src/cmd/auth/commands.d.ts.map +1 -0
  25. package/dist/src/cmd/auth/commands.js +184 -0
  26. package/dist/src/cmd/auth/commands.js.map +1 -0
  27. package/dist/src/cmd/auth/runtime.d.ts +20 -0
  28. package/dist/src/cmd/auth/runtime.d.ts.map +1 -0
  29. package/dist/src/cmd/auth/runtime.js +237 -0
  30. package/dist/src/cmd/auth/runtime.js.map +1 -0
  31. package/dist/src/cmd/calendar/commands.d.ts +58 -0
  32. package/dist/src/cmd/calendar/commands.d.ts.map +1 -0
  33. package/dist/src/cmd/calendar/commands.js +161 -0
  34. package/dist/src/cmd/calendar/commands.js.map +1 -0
  35. package/dist/src/cmd/calendar/runtime.d.ts +4 -0
  36. package/dist/src/cmd/calendar/runtime.d.ts.map +1 -0
  37. package/dist/src/cmd/calendar/runtime.js +164 -0
  38. package/dist/src/cmd/calendar/runtime.js.map +1 -0
  39. package/dist/src/cmd/chat/commands.d.ts +27 -0
  40. package/dist/src/cmd/chat/commands.d.ts.map +1 -0
  41. package/dist/src/cmd/chat/commands.js +113 -0
  42. package/dist/src/cmd/chat/commands.js.map +1 -0
  43. package/dist/src/cmd/chat/runtime.d.ts +4 -0
  44. package/dist/src/cmd/chat/runtime.d.ts.map +1 -0
  45. package/dist/src/cmd/chat/runtime.js +67 -0
  46. package/dist/src/cmd/chat/runtime.js.map +1 -0
  47. package/dist/src/cmd/classroom/commands.d.ts +22 -0
  48. package/dist/src/cmd/classroom/commands.d.ts.map +1 -0
  49. package/dist/src/cmd/classroom/commands.js +91 -0
  50. package/dist/src/cmd/classroom/commands.js.map +1 -0
  51. package/dist/src/cmd/classroom/runtime.d.ts +4 -0
  52. package/dist/src/cmd/classroom/runtime.d.ts.map +1 -0
  53. package/dist/src/cmd/classroom/runtime.js +67 -0
  54. package/dist/src/cmd/classroom/runtime.js.map +1 -0
  55. package/dist/src/cmd/command-registry.d.ts +8 -0
  56. package/dist/src/cmd/command-registry.d.ts.map +1 -0
  57. package/dist/src/cmd/command-registry.js +40 -0
  58. package/dist/src/cmd/command-registry.js.map +1 -0
  59. package/dist/src/cmd/completion/commands.d.ts +3 -0
  60. package/dist/src/cmd/completion/commands.d.ts.map +1 -0
  61. package/dist/src/cmd/completion/commands.js +29 -0
  62. package/dist/src/cmd/completion/commands.js.map +1 -0
  63. package/dist/src/cmd/config/commands.d.ts +10 -0
  64. package/dist/src/cmd/config/commands.d.ts.map +1 -0
  65. package/dist/src/cmd/config/commands.js +106 -0
  66. package/dist/src/cmd/config/commands.js.map +1 -0
  67. package/dist/src/cmd/contacts/commands.d.ts +18 -0
  68. package/dist/src/cmd/contacts/commands.d.ts.map +1 -0
  69. package/dist/src/cmd/contacts/commands.js +79 -0
  70. package/dist/src/cmd/contacts/commands.js.map +1 -0
  71. package/dist/src/cmd/contacts/runtime.d.ts +4 -0
  72. package/dist/src/cmd/contacts/runtime.d.ts.map +1 -0
  73. package/dist/src/cmd/contacts/runtime.js +67 -0
  74. package/dist/src/cmd/contacts/runtime.js.map +1 -0
  75. package/dist/src/cmd/docs/commands.d.ts +24 -0
  76. package/dist/src/cmd/docs/commands.d.ts.map +1 -0
  77. package/dist/src/cmd/docs/commands.js +82 -0
  78. package/dist/src/cmd/docs/commands.js.map +1 -0
  79. package/dist/src/cmd/docs/runtime.d.ts +4 -0
  80. package/dist/src/cmd/docs/runtime.d.ts.map +1 -0
  81. package/dist/src/cmd/docs/runtime.js +77 -0
  82. package/dist/src/cmd/docs/runtime.js.map +1 -0
  83. package/dist/src/cmd/drive/commands.d.ts +112 -0
  84. package/dist/src/cmd/drive/commands.d.ts.map +1 -0
  85. package/dist/src/cmd/drive/commands.js +431 -0
  86. package/dist/src/cmd/drive/commands.js.map +1 -0
  87. package/dist/src/cmd/drive/runtime.d.ts +4 -0
  88. package/dist/src/cmd/drive/runtime.d.ts.map +1 -0
  89. package/dist/src/cmd/drive/runtime.js +336 -0
  90. package/dist/src/cmd/drive/runtime.js.map +1 -0
  91. package/dist/src/cmd/execution-context.d.ts +33 -0
  92. package/dist/src/cmd/execution-context.d.ts.map +1 -0
  93. package/dist/src/cmd/execution-context.js +31 -0
  94. package/dist/src/cmd/execution-context.js.map +1 -0
  95. package/dist/src/cmd/exit-codes/commands.d.ts +5 -0
  96. package/dist/src/cmd/exit-codes/commands.d.ts.map +1 -0
  97. package/dist/src/cmd/exit-codes/commands.js +25 -0
  98. package/dist/src/cmd/exit-codes/commands.js.map +1 -0
  99. package/dist/src/cmd/exit-codes.d.ts +4 -0
  100. package/dist/src/cmd/exit-codes.d.ts.map +1 -0
  101. package/dist/src/cmd/exit-codes.js +4 -0
  102. package/dist/src/cmd/exit-codes.js.map +1 -0
  103. package/dist/src/cmd/exit.d.ts +7 -0
  104. package/dist/src/cmd/exit.d.ts.map +1 -0
  105. package/dist/src/cmd/exit.js +19 -0
  106. package/dist/src/cmd/exit.js.map +1 -0
  107. package/dist/src/cmd/forms/commands.d.ts +19 -0
  108. package/dist/src/cmd/forms/commands.d.ts.map +1 -0
  109. package/dist/src/cmd/forms/commands.js +73 -0
  110. package/dist/src/cmd/forms/commands.js.map +1 -0
  111. package/dist/src/cmd/forms/runtime.d.ts +4 -0
  112. package/dist/src/cmd/forms/runtime.d.ts.map +1 -0
  113. package/dist/src/cmd/forms/runtime.js +38 -0
  114. package/dist/src/cmd/forms/runtime.js.map +1 -0
  115. package/dist/src/cmd/gmail/commands.d.ts +187 -0
  116. package/dist/src/cmd/gmail/commands.d.ts.map +1 -0
  117. package/dist/src/cmd/gmail/commands.js +767 -0
  118. package/dist/src/cmd/gmail/commands.js.map +1 -0
  119. package/dist/src/cmd/gmail/runtime.d.ts +9 -0
  120. package/dist/src/cmd/gmail/runtime.d.ts.map +1 -0
  121. package/dist/src/cmd/gmail/runtime.js +644 -0
  122. package/dist/src/cmd/gmail/runtime.js.map +1 -0
  123. package/dist/src/cmd/groups/commands.d.ts +26 -0
  124. package/dist/src/cmd/groups/commands.d.ts.map +1 -0
  125. package/dist/src/cmd/groups/commands.js +105 -0
  126. package/dist/src/cmd/groups/commands.js.map +1 -0
  127. package/dist/src/cmd/groups/runtime.d.ts +4 -0
  128. package/dist/src/cmd/groups/runtime.d.ts.map +1 -0
  129. package/dist/src/cmd/groups/runtime.js +61 -0
  130. package/dist/src/cmd/groups/runtime.js.map +1 -0
  131. package/dist/src/cmd/keep/commands.d.ts +23 -0
  132. package/dist/src/cmd/keep/commands.d.ts.map +1 -0
  133. package/dist/src/cmd/keep/commands.js +111 -0
  134. package/dist/src/cmd/keep/commands.js.map +1 -0
  135. package/dist/src/cmd/keep/runtime.d.ts +4 -0
  136. package/dist/src/cmd/keep/runtime.d.ts.map +1 -0
  137. package/dist/src/cmd/keep/runtime.js +82 -0
  138. package/dist/src/cmd/keep/runtime.js.map +1 -0
  139. package/dist/src/cmd/people/commands.d.ts +22 -0
  140. package/dist/src/cmd/people/commands.d.ts.map +1 -0
  141. package/dist/src/cmd/people/commands.js +96 -0
  142. package/dist/src/cmd/people/commands.js.map +1 -0
  143. package/dist/src/cmd/people/runtime.d.ts +4 -0
  144. package/dist/src/cmd/people/runtime.d.ts.map +1 -0
  145. package/dist/src/cmd/people/runtime.js +65 -0
  146. package/dist/src/cmd/people/runtime.js.map +1 -0
  147. package/dist/src/cmd/rewrite-desire-path-args.d.ts +2 -0
  148. package/dist/src/cmd/rewrite-desire-path-args.d.ts.map +1 -0
  149. package/dist/src/cmd/rewrite-desire-path-args.js +75 -0
  150. package/dist/src/cmd/rewrite-desire-path-args.js.map +1 -0
  151. package/dist/src/cmd/root.d.ts +10 -0
  152. package/dist/src/cmd/root.d.ts.map +1 -0
  153. package/dist/src/cmd/root.js +341 -0
  154. package/dist/src/cmd/root.js.map +1 -0
  155. package/dist/src/cmd/schema/commands.d.ts +3 -0
  156. package/dist/src/cmd/schema/commands.d.ts.map +1 -0
  157. package/dist/src/cmd/schema/commands.js +21 -0
  158. package/dist/src/cmd/schema/commands.js.map +1 -0
  159. package/dist/src/cmd/script-path.d.ts +2 -0
  160. package/dist/src/cmd/script-path.d.ts.map +1 -0
  161. package/dist/src/cmd/script-path.js +4 -0
  162. package/dist/src/cmd/script-path.js.map +1 -0
  163. package/dist/src/cmd/sheets/commands.d.ts +20 -0
  164. package/dist/src/cmd/sheets/commands.d.ts.map +1 -0
  165. package/dist/src/cmd/sheets/commands.js +79 -0
  166. package/dist/src/cmd/sheets/commands.js.map +1 -0
  167. package/dist/src/cmd/sheets/runtime.d.ts +4 -0
  168. package/dist/src/cmd/sheets/runtime.d.ts.map +1 -0
  169. package/dist/src/cmd/sheets/runtime.js +37 -0
  170. package/dist/src/cmd/sheets/runtime.js.map +1 -0
  171. package/dist/src/cmd/slides/commands.d.ts +24 -0
  172. package/dist/src/cmd/slides/commands.d.ts.map +1 -0
  173. package/dist/src/cmd/slides/commands.js +90 -0
  174. package/dist/src/cmd/slides/commands.js.map +1 -0
  175. package/dist/src/cmd/slides/runtime.d.ts +4 -0
  176. package/dist/src/cmd/slides/runtime.d.ts.map +1 -0
  177. package/dist/src/cmd/slides/runtime.js +92 -0
  178. package/dist/src/cmd/slides/runtime.js.map +1 -0
  179. package/dist/src/cmd/tasks/commands.d.ts +28 -0
  180. package/dist/src/cmd/tasks/commands.d.ts.map +1 -0
  181. package/dist/src/cmd/tasks/commands.js +103 -0
  182. package/dist/src/cmd/tasks/commands.js.map +1 -0
  183. package/dist/src/cmd/tasks/runtime.d.ts +4 -0
  184. package/dist/src/cmd/tasks/runtime.d.ts.map +1 -0
  185. package/dist/src/cmd/tasks/runtime.js +56 -0
  186. package/dist/src/cmd/tasks/runtime.js.map +1 -0
  187. package/dist/src/cmd/time/commands.d.ts +17 -0
  188. package/dist/src/cmd/time/commands.d.ts.map +1 -0
  189. package/dist/src/cmd/time/commands.js +88 -0
  190. package/dist/src/cmd/time/commands.js.map +1 -0
  191. package/dist/src/cmd/version/commands.d.ts +3 -0
  192. package/dist/src/cmd/version/commands.d.ts.map +1 -0
  193. package/dist/src/cmd/version/commands.js +17 -0
  194. package/dist/src/cmd/version/commands.js.map +1 -0
  195. package/dist/src/cmd/workspace/commands.d.ts +222 -0
  196. package/dist/src/cmd/workspace/commands.d.ts.map +1 -0
  197. package/dist/src/cmd/workspace/commands.js +685 -0
  198. package/dist/src/cmd/workspace/commands.js.map +1 -0
  199. package/dist/src/cmd/workspace/runtime.d.ts +8 -0
  200. package/dist/src/cmd/workspace/runtime.d.ts.map +1 -0
  201. package/dist/src/cmd/workspace/runtime.js +852 -0
  202. package/dist/src/cmd/workspace/runtime.js.map +1 -0
  203. package/dist/src/config/clients.d.ts +8 -0
  204. package/dist/src/config/clients.d.ts.map +1 -0
  205. package/dist/src/config/clients.js +95 -0
  206. package/dist/src/config/clients.js.map +1 -0
  207. package/dist/src/config/config.d.ts +11 -0
  208. package/dist/src/config/config.d.ts.map +1 -0
  209. package/dist/src/config/config.js +54 -0
  210. package/dist/src/config/config.js.map +1 -0
  211. package/dist/src/config/credentials.d.ts +16 -0
  212. package/dist/src/config/credentials.d.ts.map +1 -0
  213. package/dist/src/config/credentials.js +97 -0
  214. package/dist/src/config/credentials.js.map +1 -0
  215. package/dist/src/config/migration.d.ts +13 -0
  216. package/dist/src/config/migration.d.ts.map +1 -0
  217. package/dist/src/config/migration.js +70 -0
  218. package/dist/src/config/migration.js.map +1 -0
  219. package/dist/src/config/paths.d.ts +11 -0
  220. package/dist/src/config/paths.d.ts.map +1 -0
  221. package/dist/src/config/paths.js +74 -0
  222. package/dist/src/config/paths.js.map +1 -0
  223. package/dist/src/googleapi/auth-factory.d.ts +46 -0
  224. package/dist/src/googleapi/auth-factory.d.ts.map +1 -0
  225. package/dist/src/googleapi/auth-factory.js +88 -0
  226. package/dist/src/googleapi/auth-factory.js.map +1 -0
  227. package/dist/src/googleapi/calendar.d.ts +3 -0
  228. package/dist/src/googleapi/calendar.d.ts.map +1 -0
  229. package/dist/src/googleapi/calendar.js +21 -0
  230. package/dist/src/googleapi/calendar.js.map +1 -0
  231. package/dist/src/googleapi/circuitbreaker.d.ts +19 -0
  232. package/dist/src/googleapi/circuitbreaker.d.ts.map +1 -0
  233. package/dist/src/googleapi/circuitbreaker.js +43 -0
  234. package/dist/src/googleapi/circuitbreaker.js.map +1 -0
  235. package/dist/src/googleapi/client.d.ts +17 -0
  236. package/dist/src/googleapi/client.d.ts.map +1 -0
  237. package/dist/src/googleapi/client.js +18 -0
  238. package/dist/src/googleapi/client.js.map +1 -0
  239. package/dist/src/googleapi/drive.d.ts +3 -0
  240. package/dist/src/googleapi/drive.d.ts.map +1 -0
  241. package/dist/src/googleapi/drive.js +11 -0
  242. package/dist/src/googleapi/drive.js.map +1 -0
  243. package/dist/src/googleapi/errors.d.ts +37 -0
  244. package/dist/src/googleapi/errors.d.ts.map +1 -0
  245. package/dist/src/googleapi/errors.js +93 -0
  246. package/dist/src/googleapi/errors.js.map +1 -0
  247. package/dist/src/googleapi/retry-constants.d.ts +5 -0
  248. package/dist/src/googleapi/retry-constants.d.ts.map +1 -0
  249. package/dist/src/googleapi/retry-constants.js +5 -0
  250. package/dist/src/googleapi/retry-constants.js.map +1 -0
  251. package/dist/src/googleapi/transport.d.ts +3 -0
  252. package/dist/src/googleapi/transport.d.ts.map +1 -0
  253. package/dist/src/googleapi/transport.js +39 -0
  254. package/dist/src/googleapi/transport.js.map +1 -0
  255. package/dist/src/googleauth/oauth-flow.d.ts +62 -0
  256. package/dist/src/googleauth/oauth-flow.d.ts.map +1 -0
  257. package/dist/src/googleauth/oauth-flow.js +262 -0
  258. package/dist/src/googleauth/oauth-flow.js.map +1 -0
  259. package/dist/src/googleauth/service.d.ts +28 -0
  260. package/dist/src/googleauth/service.d.ts.map +1 -0
  261. package/dist/src/googleauth/service.js +345 -0
  262. package/dist/src/googleauth/service.js.map +1 -0
  263. package/dist/src/index.d.ts +2 -0
  264. package/dist/src/index.d.ts.map +1 -0
  265. package/dist/src/index.js +2 -0
  266. package/dist/src/index.js.map +1 -0
  267. package/dist/src/outfmt/outfmt.d.ts +8 -0
  268. package/dist/src/outfmt/outfmt.d.ts.map +1 -0
  269. package/dist/src/outfmt/outfmt.js +66 -0
  270. package/dist/src/outfmt/outfmt.js.map +1 -0
  271. package/dist/src/secrets/store.d.ts +61 -0
  272. package/dist/src/secrets/store.d.ts.map +1 -0
  273. package/dist/src/secrets/store.js +247 -0
  274. package/dist/src/secrets/store.js.map +1 -0
  275. package/dist/test/authclient/authclient.test.d.ts +2 -0
  276. package/dist/test/authclient/authclient.test.d.ts.map +1 -0
  277. package/dist/test/authclient/authclient.test.js +14 -0
  278. package/dist/test/authclient/authclient.test.js.map +1 -0
  279. package/dist/test/bin/gtypee-entrypoint.test.d.ts +2 -0
  280. package/dist/test/bin/gtypee-entrypoint.test.d.ts.map +1 -0
  281. package/dist/test/bin/gtypee-entrypoint.test.js +17 -0
  282. package/dist/test/bin/gtypee-entrypoint.test.js.map +1 -0
  283. package/dist/test/cmd/agent/commands.test.d.ts +2 -0
  284. package/dist/test/cmd/agent/commands.test.d.ts.map +1 -0
  285. package/dist/test/cmd/agent/commands.test.js +12 -0
  286. package/dist/test/cmd/agent/commands.test.js.map +1 -0
  287. package/dist/test/cmd/appscript/commands.test.d.ts +2 -0
  288. package/dist/test/cmd/appscript/commands.test.d.ts.map +1 -0
  289. package/dist/test/cmd/appscript/commands.test.js +104 -0
  290. package/dist/test/cmd/appscript/commands.test.js.map +1 -0
  291. package/dist/test/cmd/auth/commands.test.d.ts +2 -0
  292. package/dist/test/cmd/auth/commands.test.d.ts.map +1 -0
  293. package/dist/test/cmd/auth/commands.test.js +142 -0
  294. package/dist/test/cmd/auth/commands.test.js.map +1 -0
  295. package/dist/test/cmd/auth/runtime.test.d.ts +2 -0
  296. package/dist/test/cmd/auth/runtime.test.d.ts.map +1 -0
  297. package/dist/test/cmd/auth/runtime.test.js +214 -0
  298. package/dist/test/cmd/auth/runtime.test.js.map +1 -0
  299. package/dist/test/cmd/calendar/commands.test.d.ts +2 -0
  300. package/dist/test/cmd/calendar/commands.test.d.ts.map +1 -0
  301. package/dist/test/cmd/calendar/commands.test.js +121 -0
  302. package/dist/test/cmd/calendar/commands.test.js.map +1 -0
  303. package/dist/test/cmd/chat/commands.test.d.ts +2 -0
  304. package/dist/test/cmd/chat/commands.test.d.ts.map +1 -0
  305. package/dist/test/cmd/chat/commands.test.js +57 -0
  306. package/dist/test/cmd/chat/commands.test.js.map +1 -0
  307. package/dist/test/cmd/classroom/commands.test.d.ts +2 -0
  308. package/dist/test/cmd/classroom/commands.test.d.ts.map +1 -0
  309. package/dist/test/cmd/classroom/commands.test.js +61 -0
  310. package/dist/test/cmd/classroom/commands.test.js.map +1 -0
  311. package/dist/test/cmd/completion/commands.test.d.ts +2 -0
  312. package/dist/test/cmd/completion/commands.test.d.ts.map +1 -0
  313. package/dist/test/cmd/completion/commands.test.js +30 -0
  314. package/dist/test/cmd/completion/commands.test.js.map +1 -0
  315. package/dist/test/cmd/config/commands.test.d.ts +2 -0
  316. package/dist/test/cmd/config/commands.test.d.ts.map +1 -0
  317. package/dist/test/cmd/config/commands.test.js +21 -0
  318. package/dist/test/cmd/config/commands.test.js.map +1 -0
  319. package/dist/test/cmd/contacts/commands.test.d.ts +2 -0
  320. package/dist/test/cmd/contacts/commands.test.d.ts.map +1 -0
  321. package/dist/test/cmd/contacts/commands.test.js +51 -0
  322. package/dist/test/cmd/contacts/commands.test.js.map +1 -0
  323. package/dist/test/cmd/docs/commands.test.d.ts +2 -0
  324. package/dist/test/cmd/docs/commands.test.d.ts.map +1 -0
  325. package/dist/test/cmd/docs/commands.test.js +39 -0
  326. package/dist/test/cmd/docs/commands.test.js.map +1 -0
  327. package/dist/test/cmd/drive/commands.test.d.ts +2 -0
  328. package/dist/test/cmd/drive/commands.test.d.ts.map +1 -0
  329. package/dist/test/cmd/drive/commands.test.js +409 -0
  330. package/dist/test/cmd/drive/commands.test.js.map +1 -0
  331. package/dist/test/cmd/execution-context.test.d.ts +2 -0
  332. package/dist/test/cmd/execution-context.test.d.ts.map +1 -0
  333. package/dist/test/cmd/execution-context.test.js +29 -0
  334. package/dist/test/cmd/execution-context.test.js.map +1 -0
  335. package/dist/test/cmd/exit-codes/commands.test.d.ts +2 -0
  336. package/dist/test/cmd/exit-codes/commands.test.d.ts.map +1 -0
  337. package/dist/test/cmd/exit-codes/commands.test.js +19 -0
  338. package/dist/test/cmd/exit-codes/commands.test.js.map +1 -0
  339. package/dist/test/cmd/exit.test.d.ts +2 -0
  340. package/dist/test/cmd/exit.test.d.ts.map +1 -0
  341. package/dist/test/cmd/exit.test.js +14 -0
  342. package/dist/test/cmd/exit.test.js.map +1 -0
  343. package/dist/test/cmd/forms/commands.test.d.ts +2 -0
  344. package/dist/test/cmd/forms/commands.test.d.ts.map +1 -0
  345. package/dist/test/cmd/forms/commands.test.js +42 -0
  346. package/dist/test/cmd/forms/commands.test.js.map +1 -0
  347. package/dist/test/cmd/gmail/commands.test.d.ts +2 -0
  348. package/dist/test/cmd/gmail/commands.test.d.ts.map +1 -0
  349. package/dist/test/cmd/gmail/commands.test.js +315 -0
  350. package/dist/test/cmd/gmail/commands.test.js.map +1 -0
  351. package/dist/test/cmd/groups/commands.test.d.ts +2 -0
  352. package/dist/test/cmd/groups/commands.test.d.ts.map +1 -0
  353. package/dist/test/cmd/groups/commands.test.js +79 -0
  354. package/dist/test/cmd/groups/commands.test.js.map +1 -0
  355. package/dist/test/cmd/keep/commands.test.d.ts +2 -0
  356. package/dist/test/cmd/keep/commands.test.d.ts.map +1 -0
  357. package/dist/test/cmd/keep/commands.test.js +87 -0
  358. package/dist/test/cmd/keep/commands.test.js.map +1 -0
  359. package/dist/test/cmd/people/commands.test.d.ts +2 -0
  360. package/dist/test/cmd/people/commands.test.d.ts.map +1 -0
  361. package/dist/test/cmd/people/commands.test.js +52 -0
  362. package/dist/test/cmd/people/commands.test.js.map +1 -0
  363. package/dist/test/cmd/rewrite-desire-path-args.test.d.ts +2 -0
  364. package/dist/test/cmd/rewrite-desire-path-args.test.d.ts.map +1 -0
  365. package/dist/test/cmd/rewrite-desire-path-args.test.js +21 -0
  366. package/dist/test/cmd/rewrite-desire-path-args.test.js.map +1 -0
  367. package/dist/test/cmd/root.test.d.ts +2 -0
  368. package/dist/test/cmd/root.test.d.ts.map +1 -0
  369. package/dist/test/cmd/root.test.js +323 -0
  370. package/dist/test/cmd/root.test.js.map +1 -0
  371. package/dist/test/cmd/runtime-scopes.test.d.ts +2 -0
  372. package/dist/test/cmd/runtime-scopes.test.d.ts.map +1 -0
  373. package/dist/test/cmd/runtime-scopes.test.js +133 -0
  374. package/dist/test/cmd/runtime-scopes.test.js.map +1 -0
  375. package/dist/test/cmd/schema/commands.test.d.ts +2 -0
  376. package/dist/test/cmd/schema/commands.test.d.ts.map +1 -0
  377. package/dist/test/cmd/schema/commands.test.js +31 -0
  378. package/dist/test/cmd/schema/commands.test.js.map +1 -0
  379. package/dist/test/cmd/sheets/commands.test.d.ts +2 -0
  380. package/dist/test/cmd/sheets/commands.test.d.ts.map +1 -0
  381. package/dist/test/cmd/sheets/commands.test.js +39 -0
  382. package/dist/test/cmd/sheets/commands.test.js.map +1 -0
  383. package/dist/test/cmd/slides/commands.test.d.ts +2 -0
  384. package/dist/test/cmd/slides/commands.test.d.ts.map +1 -0
  385. package/dist/test/cmd/slides/commands.test.js +48 -0
  386. package/dist/test/cmd/slides/commands.test.js.map +1 -0
  387. package/dist/test/cmd/tasks/commands.test.d.ts +2 -0
  388. package/dist/test/cmd/tasks/commands.test.d.ts.map +1 -0
  389. package/dist/test/cmd/tasks/commands.test.js +74 -0
  390. package/dist/test/cmd/tasks/commands.test.js.map +1 -0
  391. package/dist/test/cmd/time/commands.test.d.ts +2 -0
  392. package/dist/test/cmd/time/commands.test.d.ts.map +1 -0
  393. package/dist/test/cmd/time/commands.test.js +52 -0
  394. package/dist/test/cmd/time/commands.test.js.map +1 -0
  395. package/dist/test/cmd/version/commands.test.d.ts +2 -0
  396. package/dist/test/cmd/version/commands.test.d.ts.map +1 -0
  397. package/dist/test/cmd/version/commands.test.js +12 -0
  398. package/dist/test/cmd/version/commands.test.js.map +1 -0
  399. package/dist/test/cmd/workspace/commands.test.d.ts +2 -0
  400. package/dist/test/cmd/workspace/commands.test.d.ts.map +1 -0
  401. package/dist/test/cmd/workspace/commands.test.js +285 -0
  402. package/dist/test/cmd/workspace/commands.test.js.map +1 -0
  403. package/dist/test/config/clients.test.d.ts +2 -0
  404. package/dist/test/config/clients.test.d.ts.map +1 -0
  405. package/dist/test/config/clients.test.js +42 -0
  406. package/dist/test/config/clients.test.js.map +1 -0
  407. package/dist/test/config/config.test.d.ts +2 -0
  408. package/dist/test/config/config.test.d.ts.map +1 -0
  409. package/dist/test/config/config.test.js +80 -0
  410. package/dist/test/config/config.test.js.map +1 -0
  411. package/dist/test/config/credentials.test.d.ts +2 -0
  412. package/dist/test/config/credentials.test.d.ts.map +1 -0
  413. package/dist/test/config/credentials.test.js +78 -0
  414. package/dist/test/config/credentials.test.js.map +1 -0
  415. package/dist/test/config/migration.test.d.ts +2 -0
  416. package/dist/test/config/migration.test.d.ts.map +1 -0
  417. package/dist/test/config/migration.test.js +136 -0
  418. package/dist/test/config/migration.test.js.map +1 -0
  419. package/dist/test/config/paths.test.d.ts +2 -0
  420. package/dist/test/config/paths.test.d.ts.map +1 -0
  421. package/dist/test/config/paths.test.js +31 -0
  422. package/dist/test/config/paths.test.js.map +1 -0
  423. package/dist/test/googleapi/auth-factory.test.d.ts +2 -0
  424. package/dist/test/googleapi/auth-factory.test.d.ts.map +1 -0
  425. package/dist/test/googleapi/auth-factory.test.js +215 -0
  426. package/dist/test/googleapi/auth-factory.test.js.map +1 -0
  427. package/dist/test/googleapi/circuitbreaker.test.d.ts +2 -0
  428. package/dist/test/googleapi/circuitbreaker.test.d.ts.map +1 -0
  429. package/dist/test/googleapi/circuitbreaker.test.js +30 -0
  430. package/dist/test/googleapi/circuitbreaker.test.js.map +1 -0
  431. package/dist/test/googleapi/client.test.d.ts +2 -0
  432. package/dist/test/googleapi/client.test.d.ts.map +1 -0
  433. package/dist/test/googleapi/client.test.js +16 -0
  434. package/dist/test/googleapi/client.test.js.map +1 -0
  435. package/dist/test/googleapi/errors.test.d.ts +2 -0
  436. package/dist/test/googleapi/errors.test.d.ts.map +1 -0
  437. package/dist/test/googleapi/errors.test.js +21 -0
  438. package/dist/test/googleapi/errors.test.js.map +1 -0
  439. package/dist/test/googleapi/transport.test.d.ts +2 -0
  440. package/dist/test/googleapi/transport.test.d.ts.map +1 -0
  441. package/dist/test/googleapi/transport.test.js +25 -0
  442. package/dist/test/googleapi/transport.test.js.map +1 -0
  443. package/dist/test/googleauth/oauth-flow.test.d.ts +2 -0
  444. package/dist/test/googleauth/oauth-flow.test.d.ts.map +1 -0
  445. package/dist/test/googleauth/oauth-flow.test.js +85 -0
  446. package/dist/test/googleauth/oauth-flow.test.js.map +1 -0
  447. package/dist/test/googleauth/service.test.d.ts +2 -0
  448. package/dist/test/googleauth/service.test.d.ts.map +1 -0
  449. package/dist/test/googleauth/service.test.js +51 -0
  450. package/dist/test/googleauth/service.test.js.map +1 -0
  451. package/dist/test/outfmt/outfmt.test.d.ts +2 -0
  452. package/dist/test/outfmt/outfmt.test.d.ts.map +1 -0
  453. package/dist/test/outfmt/outfmt.test.js +41 -0
  454. package/dist/test/outfmt/outfmt.test.js.map +1 -0
  455. package/dist/test/secrets/store.test.d.ts +2 -0
  456. package/dist/test/secrets/store.test.d.ts.map +1 -0
  457. package/dist/test/secrets/store.test.js +164 -0
  458. package/dist/test/secrets/store.test.js.map +1 -0
  459. package/dist/vitest.config.d.ts +3 -0
  460. package/dist/vitest.config.d.ts.map +1 -0
  461. package/dist/vitest.config.js +11 -0
  462. package/dist/vitest.config.js.map +1 -0
  463. package/logo.svg +16 -0
  464. package/package.json +69 -0
@@ -0,0 +1,88 @@
1
+ import { google } from "googleapis";
2
+ import { readClientCredentialsFor } from "../config/credentials.js";
3
+ import { resolveClientWithOverride } from "../authclient/authclient.js";
4
+ import { KeyringStore, EncryptedFileBackend } from "../secrets/store.js";
5
+ import { AuthRequiredError } from "./errors.js";
6
+ import { credentialsEncPath } from "../config/paths.js";
7
+ /**
8
+ * Creates an authenticated client from stored credentials.
9
+ *
10
+ * Two paths:
11
+ * - Service Account (JWT): When resolver returns serviceAccount, uses google.auth.JWT
12
+ * with optional domain-wide delegation (impersonate → subject).
13
+ * - OAuth2: When no serviceAccount, uses stored refresh tokens + client credentials.
14
+ */
15
+ export async function createAuthenticatedClient(resolveAccount, options = {}) {
16
+ const store = options.store ?? new KeyringStore(new EncryptedFileBackend(credentialsEncPath()));
17
+ const readCreds = options.readCredentials ?? readClientCredentialsFor;
18
+ const resolved = await resolveAccount();
19
+ const { email, clientOverride } = resolved;
20
+ const sa = resolved.serviceAccount ?? "";
21
+ const impersonate = resolved.impersonate ?? "";
22
+ if (email === "" && sa === "") {
23
+ throw new AuthRequiredError("api", "", "", new Error("no account specified; use --account <email> or --sa <email> or log in first"));
24
+ }
25
+ // Service Account (JWT) path
26
+ if (sa !== "") {
27
+ let saKeyJson;
28
+ if (options.readServiceAccountKey) {
29
+ const saKey = await options.readServiceAccountKey(sa);
30
+ saKeyJson = JSON.stringify(saKey);
31
+ }
32
+ else {
33
+ saKeyJson = await store.getServiceAccountKey(sa);
34
+ }
35
+ if (!saKeyJson) {
36
+ throw new Error(`no service account key found for ${sa}; run: typee auth add-sa --key-file <key.json>`);
37
+ }
38
+ const saKey = JSON.parse(saKeyJson);
39
+ if (saKey.type !== "service_account") {
40
+ throw new Error(`key for ${sa} is not a service account key`);
41
+ }
42
+ const scopes = options.scopes ?? [];
43
+ const jwtOptions = {
44
+ email: saKey.client_email,
45
+ key: saKey.private_key,
46
+ scopes,
47
+ };
48
+ if (impersonate !== "") {
49
+ jwtOptions.subject = impersonate;
50
+ }
51
+ const jwtClient = new google.auth.JWT(jwtOptions);
52
+ return jwtClient;
53
+ }
54
+ // OAuth2 path
55
+ const client = await resolveClientWithOverride(email, clientOverride);
56
+ const credentials = await readCreds(client);
57
+ let token;
58
+ try {
59
+ token = await store.getToken(client, email);
60
+ }
61
+ catch {
62
+ throw new AuthRequiredError("api", email, client, new Error(`no token found for ${email}; run: typee login --email ${email}`));
63
+ }
64
+ const oauth2Client = new google.auth.OAuth2(credentials.clientId, credentials.clientSecret);
65
+ oauth2Client.setCredentials({ refresh_token: token.refreshToken });
66
+ return oauth2Client;
67
+ }
68
+ export class ServiceRuntime {
69
+ store;
70
+ readCredentials;
71
+ readServiceAccountKey;
72
+ resolveAccount;
73
+ constructor(options) {
74
+ this.store = options.store ?? new KeyringStore(new EncryptedFileBackend(credentialsEncPath()));
75
+ this.readCredentials = options.readCredentials ?? readClientCredentialsFor;
76
+ this.readServiceAccountKey = options.readServiceAccountKey;
77
+ this.resolveAccount = options.resolveAccount;
78
+ }
79
+ async getClient(scopes) {
80
+ return createAuthenticatedClient(this.resolveAccount, {
81
+ store: this.store,
82
+ readCredentials: this.readCredentials,
83
+ readServiceAccountKey: this.readServiceAccountKey,
84
+ scopes,
85
+ });
86
+ }
87
+ }
88
+ //# sourceMappingURL=auth-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-factory.js","sourceRoot":"","sources":["../../../src/googleapi/auth-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type CalendarResponse = "accepted" | "declined" | "tentative" | "needsAction";
2
+ export declare function normalizeCalendarResponse(input: string): CalendarResponse;
3
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/googleapi/calendar.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AAerF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAOzE"}
@@ -0,0 +1,21 @@
1
+ const responseAliases = {
2
+ accept: "accepted",
3
+ accepted: "accepted",
4
+ yes: "accepted",
5
+ decline: "declined",
6
+ declined: "declined",
7
+ no: "declined",
8
+ tentative: "tentative",
9
+ maybe: "tentative",
10
+ needsaction: "needsAction",
11
+ "needs-action": "needsAction",
12
+ };
13
+ export function normalizeCalendarResponse(input) {
14
+ const key = input.trim().toLowerCase();
15
+ const normalized = responseAliases[key];
16
+ if (normalized === undefined) {
17
+ throw new Error("response must be one of: accepted, declined, tentative, needsAction");
18
+ }
19
+ return normalized;
20
+ }
21
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/googleapi/calendar.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAqC;IACxD,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,EAAE,EAAE,UAAU;IACd,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,aAAa;CAC9B,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type CircuitBreakerOptions = {
2
+ threshold?: number;
3
+ resetMs?: number;
4
+ now?: () => number;
5
+ };
6
+ export declare class CircuitBreaker {
7
+ private failures;
8
+ private open;
9
+ private lastFailure;
10
+ private readonly threshold;
11
+ private readonly resetMs;
12
+ private readonly now;
13
+ constructor(opts?: CircuitBreakerOptions);
14
+ recordSuccess(): void;
15
+ recordFailure(): boolean;
16
+ isOpen(): boolean;
17
+ state(): "open" | "closed";
18
+ }
19
+ //# sourceMappingURL=circuitbreaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuitbreaker.d.ts","sourceRoot":"","sources":["../../../src/googleapi/circuitbreaker.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,GAAE,qBAA0B;IAM5C,aAAa,IAAI,IAAI;IAKrB,aAAa,IAAI,OAAO;IAUxB,MAAM,IAAI,OAAO;IAYjB,KAAK,IAAI,MAAM,GAAG,QAAQ;CAG3B"}
@@ -0,0 +1,43 @@
1
+ const DEFAULT_THRESHOLD = 5;
2
+ const DEFAULT_RESET_MS = 30_000;
3
+ export class CircuitBreaker {
4
+ failures = 0;
5
+ open = false;
6
+ lastFailure = 0;
7
+ threshold;
8
+ resetMs;
9
+ now;
10
+ constructor(opts = {}) {
11
+ this.threshold = opts.threshold ?? DEFAULT_THRESHOLD;
12
+ this.resetMs = opts.resetMs ?? DEFAULT_RESET_MS;
13
+ this.now = opts.now ?? (() => Date.now());
14
+ }
15
+ recordSuccess() {
16
+ this.failures = 0;
17
+ this.open = false;
18
+ }
19
+ recordFailure() {
20
+ this.failures += 1;
21
+ this.lastFailure = this.now();
22
+ if (this.failures >= this.threshold) {
23
+ this.open = true;
24
+ return true;
25
+ }
26
+ return false;
27
+ }
28
+ isOpen() {
29
+ if (!this.open) {
30
+ return false;
31
+ }
32
+ if (this.now() - this.lastFailure > this.resetMs) {
33
+ this.open = false;
34
+ this.failures = 0;
35
+ return false;
36
+ }
37
+ return true;
38
+ }
39
+ state() {
40
+ return this.isOpen() ? "open" : "closed";
41
+ }
42
+ }
43
+ //# sourceMappingURL=circuitbreaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuitbreaker.js","sourceRoot":"","sources":["../../../src/googleapi/circuitbreaker.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAQhC,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,KAAK,CAAC;IACb,WAAW,GAAG,CAAC,CAAC;IAEP,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,GAAG,CAAe;IAEnC,YAAY,OAA8B,EAAE;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC;QAChD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export declare const DEFAULT_HTTP_TIMEOUT_MS = 30000;
2
+ export declare const DEFAULT_GMAIL_LIST_QUERY = "in:anywhere";
3
+ export type OAuthClientConfigInput = {
4
+ clientId: string;
5
+ clientSecret: string;
6
+ scopes: string[];
7
+ timeoutMs?: number;
8
+ };
9
+ export type OAuthClientConfig = {
10
+ clientId: string;
11
+ clientSecret: string;
12
+ scopes: string[];
13
+ timeoutMs: number;
14
+ };
15
+ export declare function buildOAuthClientConfig(input: OAuthClientConfigInput): OAuthClientConfig;
16
+ export declare function defaultGmailListQuery(query?: string): string;
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/googleapi/client.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,CAOvF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5D"}
@@ -0,0 +1,18 @@
1
+ export const DEFAULT_HTTP_TIMEOUT_MS = 30_000;
2
+ export const DEFAULT_GMAIL_LIST_QUERY = "in:anywhere";
3
+ export function buildOAuthClientConfig(input) {
4
+ return {
5
+ clientId: input.clientId,
6
+ clientSecret: input.clientSecret,
7
+ scopes: [...input.scopes],
8
+ timeoutMs: input.timeoutMs ?? DEFAULT_HTTP_TIMEOUT_MS,
9
+ };
10
+ }
11
+ export function defaultGmailListQuery(query) {
12
+ const trimmed = query?.trim() ?? "";
13
+ if (trimmed === "") {
14
+ return DEFAULT_GMAIL_LIST_QUERY;
15
+ }
16
+ return trimmed;
17
+ }
18
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/googleapi/client.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAgBtD,MAAM,UAAU,sBAAsB,CAAC,KAA6B;IAClE,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,uBAAuB;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function resolveDriveDownloadPath(id: string, out?: string): string;
2
+ export declare function normalizeDriveSearchQuery(query: string): string;
3
+ //# sourceMappingURL=drive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../../src/googleapi/drive.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAMzE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,11 @@
1
+ export function resolveDriveDownloadPath(id, out) {
2
+ const trimmedOut = out?.trim() ?? "";
3
+ if (trimmedOut !== "") {
4
+ return trimmedOut;
5
+ }
6
+ return `${id}.download`;
7
+ }
8
+ export function normalizeDriveSearchQuery(query) {
9
+ return query.trim();
10
+ }
11
+ //# sourceMappingURL=drive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/googleapi/drive.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,wBAAwB,CAAC,EAAU,EAAE,GAAY;IAC/D,MAAM,UAAU,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,EAAE,WAAW,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,37 @@
1
+ export declare class AuthRequiredError extends Error {
2
+ readonly service: string;
3
+ readonly email: string;
4
+ readonly client: string;
5
+ readonly cause?: unknown | undefined;
6
+ constructor(service: string, email: string, client: string, cause?: unknown | undefined);
7
+ }
8
+ export declare class RateLimitError extends Error {
9
+ readonly retries: number;
10
+ readonly retryAfterMs: number;
11
+ constructor(retries: number, retryAfterMs?: number);
12
+ }
13
+ export declare class CircuitBreakerError extends Error {
14
+ constructor();
15
+ }
16
+ export declare class QuotaExceededError extends Error {
17
+ readonly resource: string;
18
+ constructor(resource?: string);
19
+ }
20
+ export declare class NotFoundError extends Error {
21
+ readonly resource: string;
22
+ readonly id: string;
23
+ constructor(resource: string, id?: string);
24
+ }
25
+ export declare class PermissionDeniedError extends Error {
26
+ readonly resource: string;
27
+ readonly action: string;
28
+ constructor(resource: string, action?: string);
29
+ }
30
+ export declare function isAuthRequiredError(error: unknown): error is AuthRequiredError;
31
+ export declare function isRateLimitError(error: unknown): error is RateLimitError;
32
+ export declare function isCircuitBreakerError(error: unknown): error is CircuitBreakerError;
33
+ export declare function isQuotaExceededError(error: unknown): error is QuotaExceededError;
34
+ export declare function isNotFoundError(error: unknown): error is NotFoundError;
35
+ export declare function isPermissionDeniedError(error: unknown): error is PermissionDeniedError;
36
+ export declare function toCliApiErrorMessage(service: string, error: unknown): string;
37
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/googleapi/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAHf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,YAAA;CAU3B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,YAAY;gBADZ,OAAO,EAAE,MAAM,EACf,YAAY,SAAI;CAS5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,SAAK;CAInC;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,EAAE;gBADF,QAAQ,EAAE,MAAM,EAChB,EAAE,SAAK;CAKnB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAE5C,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,MAAM;gBADN,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAK;CAKvB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAEtF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAc5E"}
@@ -0,0 +1,93 @@
1
+ export class AuthRequiredError extends Error {
2
+ service;
3
+ email;
4
+ client;
5
+ cause;
6
+ constructor(service, email, client, cause) {
7
+ super(client !== ""
8
+ ? `auth required for ${service} ${email} (client ${client})`
9
+ : `auth required for ${service} ${email}`, cause ? { cause } : undefined);
10
+ this.service = service;
11
+ this.email = email;
12
+ this.client = client;
13
+ this.cause = cause;
14
+ this.name = "AuthRequiredError";
15
+ }
16
+ }
17
+ export class RateLimitError extends Error {
18
+ retries;
19
+ retryAfterMs;
20
+ constructor(retries, retryAfterMs = 0) {
21
+ super(retryAfterMs > 0
22
+ ? `rate limit exceeded, retry after ${retryAfterMs}ms (attempted ${retries} retries)`
23
+ : `rate limit exceeded after ${retries} retries`);
24
+ this.retries = retries;
25
+ this.retryAfterMs = retryAfterMs;
26
+ this.name = "RateLimitError";
27
+ }
28
+ }
29
+ export class CircuitBreakerError extends Error {
30
+ constructor() {
31
+ super("circuit breaker is open, too many recent failures - try again later");
32
+ this.name = "CircuitBreakerError";
33
+ }
34
+ }
35
+ export class QuotaExceededError extends Error {
36
+ resource;
37
+ constructor(resource = "") {
38
+ super(resource !== "" ? `API quota exceeded for ${resource}` : "API quota exceeded");
39
+ this.resource = resource;
40
+ this.name = "QuotaExceededError";
41
+ }
42
+ }
43
+ export class NotFoundError extends Error {
44
+ resource;
45
+ id;
46
+ constructor(resource, id = "") {
47
+ super(id !== "" ? `${resource} not found: ${id}` : `${resource} not found`);
48
+ this.resource = resource;
49
+ this.id = id;
50
+ this.name = "NotFoundError";
51
+ }
52
+ }
53
+ export class PermissionDeniedError extends Error {
54
+ resource;
55
+ action;
56
+ constructor(resource, action = "") {
57
+ super(action !== "" ? `permission denied: cannot ${action} ${resource}` : `permission denied for ${resource}`);
58
+ this.resource = resource;
59
+ this.action = action;
60
+ this.name = "PermissionDeniedError";
61
+ }
62
+ }
63
+ export function isAuthRequiredError(error) {
64
+ return error instanceof AuthRequiredError;
65
+ }
66
+ export function isRateLimitError(error) {
67
+ return error instanceof RateLimitError;
68
+ }
69
+ export function isCircuitBreakerError(error) {
70
+ return error instanceof CircuitBreakerError;
71
+ }
72
+ export function isQuotaExceededError(error) {
73
+ return error instanceof QuotaExceededError;
74
+ }
75
+ export function isNotFoundError(error) {
76
+ return error instanceof NotFoundError;
77
+ }
78
+ export function isPermissionDeniedError(error) {
79
+ return error instanceof PermissionDeniedError;
80
+ }
81
+ export function toCliApiErrorMessage(service, error) {
82
+ if (isAuthRequiredError(error)
83
+ || isRateLimitError(error)
84
+ || isCircuitBreakerError(error)
85
+ || isQuotaExceededError(error)
86
+ || isNotFoundError(error)
87
+ || isPermissionDeniedError(error)) {
88
+ return error.message;
89
+ }
90
+ const message = error instanceof Error ? error.message : String(error);
91
+ return `${service} api request failed: ${message}`;
92
+ }
93
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/googleapi/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const MAX_RATE_LIMIT_RETRIES = 3;
2
+ export declare const RATE_LIMIT_BASE_DELAY_MS = 1000;
3
+ export declare const MAX_5XX_RETRIES = 1;
4
+ export declare const SERVER_ERROR_RETRY_DELAY_MS = 1000;
5
+ //# sourceMappingURL=retry-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-constants.d.ts","sourceRoot":"","sources":["../../../src/googleapi/retry-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,2BAA2B,OAAO,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const MAX_RATE_LIMIT_RETRIES = 3;
2
+ export const RATE_LIMIT_BASE_DELAY_MS = 1000;
3
+ export const MAX_5XX_RETRIES = 1;
4
+ export const SERVER_ERROR_RETRY_DELAY_MS = 1000;
5
+ //# sourceMappingURL=retry-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-constants.js","sourceRoot":"","sources":["../../../src/googleapi/retry-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function shouldRetryStatus(statusCode: number): boolean;
2
+ export declare function calculateBackoffMs(attempt: number, retryAfterHeader: string | undefined, baseDelayMs: number, random?: () => number): number;
3
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/googleapi/transport.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7D;AAqBD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAM,MAAoB,GACjC,MAAM,CAuBR"}
@@ -0,0 +1,39 @@
1
+ export function shouldRetryStatus(statusCode) {
2
+ return statusCode === 429 || statusCode >= 500;
3
+ }
4
+ function parseRetryAfterMs(value) {
5
+ if ((value ?? "").trim() === "") {
6
+ return undefined;
7
+ }
8
+ const raw = (value ?? "").trim();
9
+ const seconds = Number.parseInt(raw, 10);
10
+ if (!Number.isNaN(seconds)) {
11
+ return Math.max(0, seconds) * 1000;
12
+ }
13
+ const ts = Date.parse(raw);
14
+ if (Number.isNaN(ts)) {
15
+ return undefined;
16
+ }
17
+ return Math.max(0, ts - Date.now());
18
+ }
19
+ export function calculateBackoffMs(attempt, retryAfterHeader, baseDelayMs, random = Math.random) {
20
+ const retryAfterMs = parseRetryAfterMs(retryAfterHeader);
21
+ if (retryAfterMs !== undefined) {
22
+ return retryAfterMs;
23
+ }
24
+ if (baseDelayMs <= 0) {
25
+ return 0;
26
+ }
27
+ const base = baseDelayMs * 2 ** attempt;
28
+ if (!Number.isFinite(base) || base <= 0) {
29
+ return 0;
30
+ }
31
+ const jitterRange = Math.floor(base / 2);
32
+ if (jitterRange <= 0) {
33
+ return base;
34
+ }
35
+ const clamped = Math.max(0, Math.min(1, random()));
36
+ const jitter = Math.floor(clamped * jitterRange);
37
+ return base + jitter;
38
+ }
39
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/googleapi/transport.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,gBAAoC,EACpC,WAAmB,EACnB,SAAuB,IAAI,CAAC,MAAM;IAElC,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACzD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;IACjD,OAAO,IAAI,GAAG,MAAM,CAAC;AACvB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { type ClientCredentials } from "../config/credentials.js";
2
+ import type { Service } from "./service.js";
3
+ export type AuthorizeOptions = {
4
+ services?: Service[];
5
+ scopes: string[];
6
+ manual?: boolean;
7
+ forceConsent?: boolean;
8
+ timeoutMs?: number;
9
+ client?: string;
10
+ authCode?: string;
11
+ authUrl?: string;
12
+ requireState?: boolean;
13
+ };
14
+ export type ExchangeCodeRequest = {
15
+ clientId: string;
16
+ clientSecret: string;
17
+ scopes: string[];
18
+ code: string;
19
+ redirectUri: string;
20
+ forceConsent: boolean;
21
+ state?: string;
22
+ };
23
+ type ExchangeCodeResult = {
24
+ refreshToken?: string;
25
+ };
26
+ export type AuthorizeDeps = {
27
+ readClientCredentialsFor?: (client: string) => Promise<ClientCredentials>;
28
+ exchangeCode?: (request: ExchangeCodeRequest) => Promise<ExchangeCodeResult>;
29
+ };
30
+ export type ManualAuthURLResult = {
31
+ url: string;
32
+ stateReused: boolean;
33
+ };
34
+ export type ManualAuthURLDeps = {
35
+ readClientCredentialsFor?: (client: string) => Promise<ClientCredentials>;
36
+ randomState?: () => string;
37
+ randomRedirectUri?: () => Promise<string>;
38
+ };
39
+ export declare const ERR_INTERACTIVE_FLOW_REQUIRED = "interactive browser auth is not available in this build; use --manual or --remote";
40
+ export declare function validateAuthorizeOptions(opts: AuthorizeOptions): void;
41
+ export declare function authUrlParams(forceConsent: boolean): Record<string, string>;
42
+ export declare function randomState(): string;
43
+ export declare function manualAuthURL(opts: AuthorizeOptions, deps?: ManualAuthURLDeps): Promise<ManualAuthURLResult>;
44
+ export declare function authorize(opts: AuthorizeOptions, deps?: AuthorizeDeps): Promise<string>;
45
+ export type AuthorizeWithLocalServerOptions = {
46
+ scopes: string[];
47
+ client?: string;
48
+ forceConsent?: boolean;
49
+ timeoutMs?: number;
50
+ onAuthUrl?: (url: string) => void;
51
+ };
52
+ export type AuthorizeWithLocalServerDeps = {
53
+ readClientCredentialsFor?: (client: string) => Promise<ClientCredentials>;
54
+ exchangeCode?: (request: ExchangeCodeRequest) => Promise<ExchangeCodeResult>;
55
+ };
56
+ export type AuthorizeWithLocalServerResult = {
57
+ refreshToken: string;
58
+ authUrl: string;
59
+ };
60
+ export declare function authorizeWithLocalServer(opts: AuthorizeWithLocalServerOptions, deps?: AuthorizeWithLocalServerDeps): Promise<AuthorizeWithLocalServerResult>;
61
+ export {};
62
+ //# sourceMappingURL=oauth-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../../src/googleauth/oauth-flow.ts"],"names":[],"mappings":"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"}