@decaf-ts/integrations 0.11.0 → 0.14.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 (610) hide show
  1. package/README.md +164 -0
  2. package/dist/integrations.cjs +1 -1
  3. package/dist/integrations.cjs.map +1 -1
  4. package/dist/integrations.js +1 -1
  5. package/dist/integrations.js.map +1 -1
  6. package/docker/mailpit-compose.yml +17 -0
  7. package/docker/postgres-compose.yml +26 -0
  8. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +12 -23
  9. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -1
  10. package/lib/cjs/blob/core/BlobStoreService.cjs +26 -25
  11. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -1
  12. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +12 -23
  13. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -1
  14. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +11 -16
  15. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -1
  16. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +14 -16
  17. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -1
  18. package/lib/cjs/calendar/environment.cjs +48 -0
  19. package/lib/cjs/calendar/environment.cjs.map +1 -0
  20. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +338 -0
  21. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
  22. package/lib/cjs/calendar/google-calendar/index.cjs +20 -0
  23. package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
  24. package/lib/cjs/comms/discord/DiscordService.cjs +318 -0
  25. package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
  26. package/lib/cjs/comms/discord/index.cjs +19 -0
  27. package/lib/cjs/comms/discord/index.cjs.map +1 -0
  28. package/lib/cjs/comms/email/EmailService.cjs +376 -0
  29. package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
  30. package/lib/cjs/comms/email/index.cjs +29 -0
  31. package/lib/cjs/comms/email/index.cjs.map +1 -0
  32. package/lib/cjs/comms/email/mime.cjs +225 -0
  33. package/lib/cjs/comms/email/mime.cjs.map +1 -0
  34. package/lib/cjs/comms/email/smtp.cjs +204 -0
  35. package/lib/cjs/comms/email/smtp.cjs.map +1 -0
  36. package/lib/cjs/comms/environment.cjs +79 -0
  37. package/lib/cjs/comms/environment.cjs.map +1 -0
  38. package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
  39. package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
  40. package/lib/cjs/comms/gmail/index.cjs +24 -0
  41. package/lib/cjs/comms/gmail/index.cjs.map +1 -0
  42. package/lib/cjs/comms/index.cjs +34 -0
  43. package/lib/cjs/comms/index.cjs.map +1 -0
  44. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +325 -0
  45. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
  46. package/lib/cjs/comms/outlook/index.cjs +19 -0
  47. package/lib/cjs/comms/outlook/index.cjs.map +1 -0
  48. package/lib/cjs/comms/slack/SlackService.cjs +264 -0
  49. package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
  50. package/lib/cjs/comms/slack/index.cjs +24 -0
  51. package/lib/cjs/comms/slack/index.cjs.map +1 -0
  52. package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
  53. package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
  54. package/lib/cjs/comms/teams/index.cjs +24 -0
  55. package/lib/cjs/comms/teams/index.cjs.map +1 -0
  56. package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
  57. package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
  58. package/lib/cjs/comms/telegram/index.cjs +24 -0
  59. package/lib/cjs/comms/telegram/index.cjs.map +1 -0
  60. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +274 -0
  61. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
  62. package/lib/cjs/comms/whatsapp/index.cjs +19 -0
  63. package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
  64. package/lib/cjs/devops/environment.cjs +43 -0
  65. package/lib/cjs/devops/environment.cjs.map +1 -0
  66. package/lib/cjs/devops/github/GithubService.cjs +302 -0
  67. package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
  68. package/lib/cjs/devops/github/index.cjs +24 -0
  69. package/lib/cjs/devops/github/index.cjs.map +1 -0
  70. package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
  71. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
  72. package/lib/cjs/devops/gitlab/index.cjs +24 -0
  73. package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
  74. package/lib/cjs/devops/index.cjs +28 -0
  75. package/lib/cjs/devops/index.cjs.map +1 -0
  76. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
  77. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
  78. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
  79. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
  80. package/lib/cjs/index.cjs +3 -3
  81. package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
  82. package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
  83. package/lib/cjs/io/airtable/index.cjs +24 -0
  84. package/lib/cjs/io/airtable/index.cjs.map +1 -0
  85. package/lib/cjs/io/confluence/ConfluenceService.cjs +317 -0
  86. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
  87. package/lib/cjs/io/confluence/index.cjs +19 -0
  88. package/lib/cjs/io/confluence/index.cjs.map +1 -0
  89. package/lib/cjs/io/environment.cjs +74 -0
  90. package/lib/cjs/io/environment.cjs.map +1 -0
  91. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +275 -0
  92. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
  93. package/lib/cjs/io/google-docs/index.cjs +19 -0
  94. package/lib/cjs/io/google-docs/index.cjs.map +1 -0
  95. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
  96. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
  97. package/lib/cjs/io/google-sheets/index.cjs +24 -0
  98. package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
  99. package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
  100. package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
  101. package/lib/cjs/io/graphql/index.cjs +24 -0
  102. package/lib/cjs/io/graphql/index.cjs.map +1 -0
  103. package/lib/cjs/io/index.cjs +35 -0
  104. package/lib/cjs/io/index.cjs.map +1 -0
  105. package/lib/cjs/io/jira/JiraService.cjs +354 -0
  106. package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
  107. package/lib/cjs/io/jira/index.cjs +19 -0
  108. package/lib/cjs/io/jira/index.cjs.map +1 -0
  109. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +253 -0
  110. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
  111. package/lib/cjs/io/microsoft-excel/index.cjs +19 -0
  112. package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
  113. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +261 -0
  114. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
  115. package/lib/cjs/io/microsoft-sharepoint/index.cjs +19 -0
  116. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
  117. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
  118. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
  119. package/lib/cjs/io/spreadsheet/index.cjs +25 -0
  120. package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
  121. package/lib/cjs/namespaces/index.cjs +1 -0
  122. package/lib/cjs/namespaces/index.cjs.map +1 -1
  123. package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
  124. package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
  125. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
  126. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
  127. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
  128. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
  129. package/lib/cjs/namespaces/models/group.model.cjs +2 -0
  130. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
  131. package/lib/cjs/namespaces/models/index.cjs +1 -0
  132. package/lib/cjs/namespaces/models/index.cjs.map +1 -1
  133. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
  134. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
  135. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
  136. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
  137. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
  138. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
  139. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
  140. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
  141. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
  142. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
  143. package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
  144. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
  145. package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
  146. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
  147. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
  148. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
  149. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
  150. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
  151. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
  152. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
  153. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
  154. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
  155. package/lib/cjs/namespaces/models/role.model.cjs +2 -0
  156. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
  157. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
  158. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
  159. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
  160. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
  161. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
  162. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
  163. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
  164. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
  165. package/lib/cjs/namespaces/models/user.model.cjs +2 -0
  166. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
  167. package/lib/cjs/namespaces/rls/index.cjs +28 -0
  168. package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
  169. package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
  170. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
  171. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
  172. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
  173. package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
  174. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
  175. package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
  176. package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
  177. package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
  178. package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
  179. package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
  180. package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
  181. package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
  182. package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
  183. package/lib/cjs/namespaces/services/index.cjs +1 -0
  184. package/lib/cjs/namespaces/services/index.cjs.map +1 -1
  185. package/lib/cjs/namespaces/types.cjs +6 -1
  186. package/lib/cjs/namespaces/types.cjs.map +1 -1
  187. package/lib/cjs/redis/adapter.cjs +7 -1
  188. package/lib/cjs/redis/adapter.cjs.map +1 -1
  189. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
  190. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
  191. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
  192. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
  193. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
  194. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
  195. package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
  196. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
  197. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
  198. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
  199. package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
  200. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
  201. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
  202. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
  203. package/lib/cjs/secrets/fs/index.cjs +27 -0
  204. package/lib/cjs/secrets/fs/index.cjs.map +1 -0
  205. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
  206. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
  207. package/lib/cjs/secrets/index.cjs +2 -0
  208. package/lib/cjs/secrets/index.cjs.map +1 -1
  209. package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
  210. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
  211. package/lib/cjs/secrets/model/Secret.cjs +83 -5
  212. package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
  213. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
  214. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
  215. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
  216. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
  217. package/lib/cjs/shared/environmentValue.cjs +24 -0
  218. package/lib/cjs/shared/environmentValue.cjs.map +1 -1
  219. package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
  220. package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
  221. package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
  222. package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
  223. package/lib/cjs/shared/http/index.cjs +28 -0
  224. package/lib/cjs/shared/http/index.cjs.map +1 -0
  225. package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
  226. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
  227. package/lib/esm/blob/core/BlobStoreService.js +26 -25
  228. package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
  229. package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
  230. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
  231. package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
  232. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
  233. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
  234. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
  235. package/lib/esm/calendar/environment.js +44 -0
  236. package/lib/esm/calendar/environment.js.map +1 -0
  237. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +333 -0
  238. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
  239. package/lib/esm/calendar/google-calendar/index.js +3 -0
  240. package/lib/esm/calendar/google-calendar/index.js.map +1 -0
  241. package/lib/esm/comms/discord/DiscordService.js +313 -0
  242. package/lib/esm/comms/discord/DiscordService.js.map +1 -0
  243. package/lib/esm/comms/discord/index.js +2 -0
  244. package/lib/esm/comms/discord/index.js.map +1 -0
  245. package/lib/esm/comms/email/EmailService.js +338 -0
  246. package/lib/esm/comms/email/EmailService.js.map +1 -0
  247. package/lib/esm/comms/email/index.js +12 -0
  248. package/lib/esm/comms/email/index.js.map +1 -0
  249. package/lib/esm/comms/email/mime.js +218 -0
  250. package/lib/esm/comms/email/mime.js.map +1 -0
  251. package/lib/esm/comms/email/smtp.js +166 -0
  252. package/lib/esm/comms/email/smtp.js.map +1 -0
  253. package/lib/esm/comms/environment.js +75 -0
  254. package/lib/esm/comms/environment.js.map +1 -0
  255. package/lib/esm/comms/gmail/GmailService.js +230 -0
  256. package/lib/esm/comms/gmail/GmailService.js.map +1 -0
  257. package/lib/esm/comms/gmail/index.js +7 -0
  258. package/lib/esm/comms/gmail/index.js.map +1 -0
  259. package/lib/esm/comms/index.js +17 -0
  260. package/lib/esm/comms/index.js.map +1 -0
  261. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +320 -0
  262. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
  263. package/lib/esm/comms/outlook/index.js +2 -0
  264. package/lib/esm/comms/outlook/index.js.map +1 -0
  265. package/lib/esm/comms/slack/SlackService.js +259 -0
  266. package/lib/esm/comms/slack/SlackService.js.map +1 -0
  267. package/lib/esm/comms/slack/index.js +7 -0
  268. package/lib/esm/comms/slack/index.js.map +1 -0
  269. package/lib/esm/comms/teams/TeamsService.js +204 -0
  270. package/lib/esm/comms/teams/TeamsService.js.map +1 -0
  271. package/lib/esm/comms/teams/index.js +7 -0
  272. package/lib/esm/comms/teams/index.js.map +1 -0
  273. package/lib/esm/comms/telegram/TelegramService.js +191 -0
  274. package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
  275. package/lib/esm/comms/telegram/index.js +7 -0
  276. package/lib/esm/comms/telegram/index.js.map +1 -0
  277. package/lib/esm/comms/whatsapp/WhatsAppService.js +269 -0
  278. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
  279. package/lib/esm/comms/whatsapp/index.js +2 -0
  280. package/lib/esm/comms/whatsapp/index.js.map +1 -0
  281. package/lib/esm/devops/environment.js +39 -0
  282. package/lib/esm/devops/environment.js.map +1 -0
  283. package/lib/esm/devops/github/GithubService.js +297 -0
  284. package/lib/esm/devops/github/GithubService.js.map +1 -0
  285. package/lib/esm/devops/github/index.js +7 -0
  286. package/lib/esm/devops/github/index.js.map +1 -0
  287. package/lib/esm/devops/gitlab/GitlabService.js +277 -0
  288. package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
  289. package/lib/esm/devops/gitlab/index.js +7 -0
  290. package/lib/esm/devops/gitlab/index.js.map +1 -0
  291. package/lib/esm/devops/index.js +11 -0
  292. package/lib/esm/devops/index.js.map +1 -0
  293. package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
  294. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
  295. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
  296. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
  297. package/lib/esm/index.js +3 -3
  298. package/lib/esm/io/airtable/AirtableService.js +261 -0
  299. package/lib/esm/io/airtable/AirtableService.js.map +1 -0
  300. package/lib/esm/io/airtable/index.js +7 -0
  301. package/lib/esm/io/airtable/index.js.map +1 -0
  302. package/lib/esm/io/confluence/ConfluenceService.js +312 -0
  303. package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
  304. package/lib/esm/io/confluence/index.js +2 -0
  305. package/lib/esm/io/confluence/index.js.map +1 -0
  306. package/lib/esm/io/environment.js +70 -0
  307. package/lib/esm/io/environment.js.map +1 -0
  308. package/lib/esm/io/google-docs/GoogleDocsService.js +270 -0
  309. package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
  310. package/lib/esm/io/google-docs/index.js +2 -0
  311. package/lib/esm/io/google-docs/index.js.map +1 -0
  312. package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
  313. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
  314. package/lib/esm/io/google-sheets/index.js +7 -0
  315. package/lib/esm/io/google-sheets/index.js.map +1 -0
  316. package/lib/esm/io/graphql/GraphqlService.js +138 -0
  317. package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
  318. package/lib/esm/io/graphql/index.js +7 -0
  319. package/lib/esm/io/graphql/index.js.map +1 -0
  320. package/lib/esm/io/index.js +18 -0
  321. package/lib/esm/io/index.js.map +1 -0
  322. package/lib/esm/io/jira/JiraService.js +349 -0
  323. package/lib/esm/io/jira/JiraService.js.map +1 -0
  324. package/lib/esm/io/jira/index.js +2 -0
  325. package/lib/esm/io/jira/index.js.map +1 -0
  326. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +248 -0
  327. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
  328. package/lib/esm/io/microsoft-excel/index.js +2 -0
  329. package/lib/esm/io/microsoft-excel/index.js.map +1 -0
  330. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +256 -0
  331. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
  332. package/lib/esm/io/microsoft-sharepoint/index.js +2 -0
  333. package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
  334. package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
  335. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
  336. package/lib/esm/io/spreadsheet/index.js +8 -0
  337. package/lib/esm/io/spreadsheet/index.js.map +1 -0
  338. package/lib/esm/namespaces/index.js +1 -0
  339. package/lib/esm/namespaces/index.js.map +1 -1
  340. package/lib/esm/namespaces/models/credential.model.js +106 -0
  341. package/lib/esm/namespaces/models/credential.model.js.map +1 -0
  342. package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
  343. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
  344. package/lib/esm/namespaces/models/group-membership.model.js +2 -0
  345. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
  346. package/lib/esm/namespaces/models/group.model.js +2 -0
  347. package/lib/esm/namespaces/models/group.model.js.map +1 -1
  348. package/lib/esm/namespaces/models/index.js +1 -0
  349. package/lib/esm/namespaces/models/index.js.map +1 -1
  350. package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
  351. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
  352. package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
  353. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
  354. package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
  355. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
  356. package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
  357. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
  358. package/lib/esm/namespaces/models/org-unit.model.js +2 -0
  359. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
  360. package/lib/esm/namespaces/models/permission.model.js +2 -0
  361. package/lib/esm/namespaces/models/permission.model.js.map +1 -1
  362. package/lib/esm/namespaces/models/principal.model.js +2 -0
  363. package/lib/esm/namespaces/models/principal.model.js.map +1 -1
  364. package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
  365. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
  366. package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
  367. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
  368. package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
  369. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
  370. package/lib/esm/namespaces/models/role-permission.model.js +2 -0
  371. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
  372. package/lib/esm/namespaces/models/role.model.js +2 -0
  373. package/lib/esm/namespaces/models/role.model.js.map +1 -1
  374. package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
  375. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
  376. package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
  377. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
  378. package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
  379. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
  380. package/lib/esm/namespaces/models/tenant.model.js +2 -0
  381. package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
  382. package/lib/esm/namespaces/models/user.model.js +2 -0
  383. package/lib/esm/namespaces/models/user.model.js.map +1 -1
  384. package/lib/esm/namespaces/rls/index.js +11 -0
  385. package/lib/esm/namespaces/rls/index.js.map +1 -0
  386. package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
  387. package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
  388. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
  389. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
  390. package/lib/esm/namespaces/rls/rls.constants.js +75 -0
  391. package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
  392. package/lib/esm/namespaces/rls/rls.template.js +711 -0
  393. package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
  394. package/lib/esm/namespaces/rls/rls.types.js +9 -0
  395. package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
  396. package/lib/esm/namespaces/rls/session-binding.js +65 -0
  397. package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
  398. package/lib/esm/namespaces/services/credential.service.js +322 -0
  399. package/lib/esm/namespaces/services/credential.service.js.map +1 -0
  400. package/lib/esm/namespaces/services/index.js +1 -0
  401. package/lib/esm/namespaces/services/index.js.map +1 -1
  402. package/lib/esm/namespaces/types.js +6 -0
  403. package/lib/esm/namespaces/types.js.map +1 -1
  404. package/lib/esm/redis/adapter.js +7 -1
  405. package/lib/esm/redis/adapter.js.map +1 -1
  406. package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
  407. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
  408. package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
  409. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
  410. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
  411. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
  412. package/lib/esm/secrets/core/SecretReference.js +1 -0
  413. package/lib/esm/secrets/core/SecretReference.js.map +1 -1
  414. package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
  415. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
  416. package/lib/esm/secrets/fs/FsSecretService.js +412 -0
  417. package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
  418. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
  419. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
  420. package/lib/esm/secrets/fs/index.js +10 -0
  421. package/lib/esm/secrets/fs/index.js.map +1 -0
  422. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
  423. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
  424. package/lib/esm/secrets/index.js +2 -0
  425. package/lib/esm/secrets/index.js.map +1 -1
  426. package/lib/esm/secrets/model/ModelSecretService.js +337 -42
  427. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
  428. package/lib/esm/secrets/model/Secret.js +86 -7
  429. package/lib/esm/secrets/model/Secret.js.map +1 -1
  430. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
  431. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
  432. package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
  433. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
  434. package/lib/esm/shared/environmentValue.js +24 -0
  435. package/lib/esm/shared/environmentValue.js.map +1 -1
  436. package/lib/esm/shared/http/HttpApiService.js +181 -0
  437. package/lib/esm/shared/http/HttpApiService.js.map +1 -0
  438. package/lib/esm/shared/http/hermeticBoot.js +146 -0
  439. package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
  440. package/lib/esm/shared/http/index.js +11 -0
  441. package/lib/esm/shared/http/index.js.map +1 -0
  442. package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
  443. package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
  444. package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
  445. package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
  446. package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
  447. package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
  448. package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
  449. package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
  450. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
  451. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
  452. package/lib/types/calendar/environment.d.cts +48 -0
  453. package/lib/types/calendar/environment.d.mts +48 -0
  454. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.cts +316 -0
  455. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.mts +316 -0
  456. package/lib/types/calendar/google-calendar/index.d.cts +2 -0
  457. package/lib/types/calendar/google-calendar/index.d.mts +2 -0
  458. package/lib/types/comms/discord/DiscordService.d.cts +285 -0
  459. package/lib/types/comms/discord/DiscordService.d.mts +285 -0
  460. package/lib/types/comms/discord/index.d.cts +1 -0
  461. package/lib/types/comms/discord/index.d.mts +1 -0
  462. package/lib/types/comms/email/EmailService.d.cts +184 -0
  463. package/lib/types/comms/email/EmailService.d.mts +184 -0
  464. package/lib/types/comms/email/index.d.cts +11 -0
  465. package/lib/types/comms/email/index.d.mts +11 -0
  466. package/lib/types/comms/email/mime.d.cts +84 -0
  467. package/lib/types/comms/email/mime.d.mts +84 -0
  468. package/lib/types/comms/email/smtp.d.cts +107 -0
  469. package/lib/types/comms/email/smtp.d.mts +107 -0
  470. package/lib/types/comms/environment.d.cts +110 -0
  471. package/lib/types/comms/environment.d.mts +110 -0
  472. package/lib/types/comms/gmail/GmailService.d.cts +190 -0
  473. package/lib/types/comms/gmail/GmailService.d.mts +190 -0
  474. package/lib/types/comms/gmail/index.d.cts +6 -0
  475. package/lib/types/comms/gmail/index.d.mts +6 -0
  476. package/lib/types/comms/index.d.cts +16 -0
  477. package/lib/types/comms/index.d.mts +16 -0
  478. package/lib/types/comms/outlook/MicrosoftOutlookService.d.cts +282 -0
  479. package/lib/types/comms/outlook/MicrosoftOutlookService.d.mts +282 -0
  480. package/lib/types/comms/outlook/index.d.cts +1 -0
  481. package/lib/types/comms/outlook/index.d.mts +1 -0
  482. package/lib/types/comms/slack/SlackService.d.cts +259 -0
  483. package/lib/types/comms/slack/SlackService.d.mts +259 -0
  484. package/lib/types/comms/slack/index.d.cts +6 -0
  485. package/lib/types/comms/slack/index.d.mts +6 -0
  486. package/lib/types/comms/teams/TeamsService.d.cts +172 -0
  487. package/lib/types/comms/teams/TeamsService.d.mts +172 -0
  488. package/lib/types/comms/teams/index.d.cts +6 -0
  489. package/lib/types/comms/teams/index.d.mts +6 -0
  490. package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
  491. package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
  492. package/lib/types/comms/telegram/index.d.cts +6 -0
  493. package/lib/types/comms/telegram/index.d.mts +6 -0
  494. package/lib/types/comms/whatsapp/WhatsAppService.d.cts +258 -0
  495. package/lib/types/comms/whatsapp/WhatsAppService.d.mts +258 -0
  496. package/lib/types/comms/whatsapp/index.d.cts +1 -0
  497. package/lib/types/comms/whatsapp/index.d.mts +1 -0
  498. package/lib/types/devops/environment.d.cts +62 -0
  499. package/lib/types/devops/environment.d.mts +62 -0
  500. package/lib/types/devops/github/GithubService.d.cts +287 -0
  501. package/lib/types/devops/github/GithubService.d.mts +287 -0
  502. package/lib/types/devops/github/index.d.cts +6 -0
  503. package/lib/types/devops/github/index.d.mts +6 -0
  504. package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
  505. package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
  506. package/lib/types/devops/gitlab/index.d.cts +6 -0
  507. package/lib/types/devops/gitlab/index.d.mts +6 -0
  508. package/lib/types/devops/index.d.cts +10 -0
  509. package/lib/types/devops/index.d.mts +10 -0
  510. package/lib/types/index.d.cts +2 -2
  511. package/lib/types/index.d.mts +2 -2
  512. package/lib/types/io/airtable/AirtableService.d.cts +268 -0
  513. package/lib/types/io/airtable/AirtableService.d.mts +268 -0
  514. package/lib/types/io/airtable/index.d.cts +6 -0
  515. package/lib/types/io/airtable/index.d.mts +6 -0
  516. package/lib/types/io/confluence/ConfluenceService.d.cts +250 -0
  517. package/lib/types/io/confluence/ConfluenceService.d.mts +250 -0
  518. package/lib/types/io/confluence/index.d.cts +1 -0
  519. package/lib/types/io/confluence/index.d.mts +1 -0
  520. package/lib/types/io/environment.d.cts +107 -0
  521. package/lib/types/io/environment.d.mts +107 -0
  522. package/lib/types/io/google-docs/GoogleDocsService.d.cts +188 -0
  523. package/lib/types/io/google-docs/GoogleDocsService.d.mts +188 -0
  524. package/lib/types/io/google-docs/index.d.cts +1 -0
  525. package/lib/types/io/google-docs/index.d.mts +1 -0
  526. package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
  527. package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
  528. package/lib/types/io/google-sheets/index.d.cts +6 -0
  529. package/lib/types/io/google-sheets/index.d.mts +6 -0
  530. package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
  531. package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
  532. package/lib/types/io/graphql/index.d.cts +6 -0
  533. package/lib/types/io/graphql/index.d.mts +6 -0
  534. package/lib/types/io/index.d.cts +17 -0
  535. package/lib/types/io/index.d.mts +17 -0
  536. package/lib/types/io/jira/JiraService.d.cts +300 -0
  537. package/lib/types/io/jira/JiraService.d.mts +300 -0
  538. package/lib/types/io/jira/index.d.cts +1 -0
  539. package/lib/types/io/jira/index.d.mts +1 -0
  540. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.cts +230 -0
  541. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.mts +230 -0
  542. package/lib/types/io/microsoft-excel/index.d.cts +1 -0
  543. package/lib/types/io/microsoft-excel/index.d.mts +1 -0
  544. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.cts +226 -0
  545. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.mts +226 -0
  546. package/lib/types/io/microsoft-sharepoint/index.d.cts +1 -0
  547. package/lib/types/io/microsoft-sharepoint/index.d.mts +1 -0
  548. package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
  549. package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
  550. package/lib/types/io/spreadsheet/index.d.cts +7 -0
  551. package/lib/types/io/spreadsheet/index.d.mts +7 -0
  552. package/lib/types/namespaces/index.d.cts +1 -0
  553. package/lib/types/namespaces/index.d.mts +1 -0
  554. package/lib/types/namespaces/models/credential.model.d.cts +23 -0
  555. package/lib/types/namespaces/models/credential.model.d.mts +23 -0
  556. package/lib/types/namespaces/models/index.d.cts +1 -0
  557. package/lib/types/namespaces/models/index.d.mts +1 -0
  558. package/lib/types/namespaces/rls/index.d.cts +10 -0
  559. package/lib/types/namespaces/rls/index.d.mts +10 -0
  560. package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
  561. package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
  562. package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
  563. package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
  564. package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
  565. package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
  566. package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
  567. package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
  568. package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
  569. package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
  570. package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
  571. package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
  572. package/lib/types/namespaces/services/credential.service.d.cts +175 -0
  573. package/lib/types/namespaces/services/credential.service.d.mts +175 -0
  574. package/lib/types/namespaces/services/index.d.cts +1 -0
  575. package/lib/types/namespaces/services/index.d.mts +1 -0
  576. package/lib/types/namespaces/types.d.cts +37 -0
  577. package/lib/types/namespaces/types.d.mts +37 -0
  578. package/lib/types/redis/adapter.d.cts +2 -0
  579. package/lib/types/redis/adapter.d.mts +2 -0
  580. package/lib/types/redis/types.d.cts +27 -2
  581. package/lib/types/redis/types.d.mts +27 -2
  582. package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
  583. package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
  584. package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
  585. package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
  586. package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
  587. package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
  588. package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
  589. package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
  590. package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
  591. package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
  592. package/lib/types/secrets/fs/index.d.cts +9 -0
  593. package/lib/types/secrets/fs/index.d.mts +9 -0
  594. package/lib/types/secrets/index.d.cts +2 -0
  595. package/lib/types/secrets/index.d.mts +2 -0
  596. package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
  597. package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
  598. package/lib/types/secrets/model/Secret.d.cts +44 -3
  599. package/lib/types/secrets/model/Secret.d.mts +44 -3
  600. package/lib/types/shared/environmentValue.d.cts +24 -0
  601. package/lib/types/shared/environmentValue.d.mts +24 -0
  602. package/lib/types/shared/http/HttpApiService.d.cts +193 -0
  603. package/lib/types/shared/http/HttpApiService.d.mts +193 -0
  604. package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
  605. package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
  606. package/lib/types/shared/http/index.d.cts +10 -0
  607. package/lib/types/shared/http/index.d.mts +10 -0
  608. package/package.json +279 -6
  609. package/sql/002_rls.sql +660 -15
  610. package/sql/004_credentials.sql +46 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IoEnvironment = void 0;
4
+ const logging_1 = require("@decaf-ts/logging");
5
+ /**
6
+ * @description Accumulated io environment singleton
7
+ * @summary The `LoggedEnvironment.accumulate`-registered instance backing the
8
+ * `IoEnvironmentShape` contract. IO services read their provider slice
9
+ * (e.g. `IoEnvironment.io.airtable`) inside `configFromEnvironment()` and
10
+ * translate it into an `HttpApiServiceConfig`-derived config. Credentials
11
+ * come from environment variables; for as-graph node usage those are provided
12
+ * as `GRAPH_CREDENTIAL_*` values (placeholders in this example).
13
+ * @example
14
+ * ```ts
15
+ * import { AirtableService } from "@decaf-ts/integrations/io/airtable";
16
+ *
17
+ * // with io.airtable.token / io.airtable.baseId configured in the environment
18
+ * const airtable = new AirtableService();
19
+ * await airtable.initialize();
20
+ * ```
21
+ * @constant {LoggedEnvironment} IoEnvironment
22
+ * @memberOf module:integrations/io/environment
23
+ */
24
+ exports.IoEnvironment = logging_1.LoggedEnvironment.accumulate({
25
+ io: {
26
+ airtable: {
27
+ token: "",
28
+ baseUrl: "",
29
+ baseId: "",
30
+ timeout: undefined,
31
+ },
32
+ googleSheets: {
33
+ token: "",
34
+ apiKey: "",
35
+ baseUrl: "",
36
+ timeout: undefined,
37
+ },
38
+ graphql: {
39
+ endpoint: "",
40
+ token: "",
41
+ timeout: undefined,
42
+ },
43
+ microsoftExcel: {
44
+ token: "",
45
+ baseUrl: "",
46
+ timeout: undefined,
47
+ },
48
+ confluence: {
49
+ username: "",
50
+ token: "",
51
+ baseUrl: "",
52
+ timeout: undefined,
53
+ },
54
+ jira: {
55
+ username: "",
56
+ token: "",
57
+ baseUrl: "",
58
+ timeout: undefined,
59
+ },
60
+ googleDocs: {
61
+ token: "",
62
+ apiKey: "",
63
+ baseUrl: "",
64
+ timeout: undefined,
65
+ },
66
+ microsoftSharePoint: {
67
+ token: "",
68
+ baseUrl: "",
69
+ timeout: undefined,
70
+ },
71
+ },
72
+ });
73
+ //# sourceMappingURL=environment.js.map
74
+ //# sourceMappingURL=environment.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io/environment.cjs","sourceRoot":"","sources":["io/environment.js"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,aAAa,GAAG,2BAAiB,CAAC,UAAU,CAAC;IACtD,EAAE,EAAE;QACA,QAAQ,EAAE;YACN,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,SAAS;SACrB;QACD,YAAY,EAAE;YACV,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,OAAO,EAAE;YACL,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,SAAS;SACrB;QACD,cAAc,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,UAAU,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,IAAI,EAAE;YACF,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,UAAU,EAAE;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;QACD,mBAAmB,EAAE;YACjB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACrB;KACJ;CACJ,CAAC,CAAC;AACH,uCAAuC"}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleDocsService = void 0;
4
+ /**
5
+ * @module integrations/io/google-docs/service
6
+ * @summary Google Docs API integration service for document content operations.
7
+ * @description Exposes Google Docs document operations (get, create, batch
8
+ * update, append text, and replace-all) as an undecorated client-based service
9
+ * built on {@link HttpApiService}. Configuration comes from an explicit
10
+ * `GoogleDocsServiceConfig` or the `io.googleDocs` environment slice. An OAuth
11
+ * access token is sent as a bearer token when present; otherwise an API key is
12
+ * sent as `X-Goog-Api-Key` (writes generally require OAuth). Credentials are
13
+ * referenced from configuration (and, from as-graph nodes, from the resolved
14
+ * `google-docs` credential secret) and are never embedded in source. Failures
15
+ * are mapped to decaf errors via {@link httpError}.
16
+ */
17
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
18
+ const environment_js_1 = require("./../environment.cjs");
19
+ const environmentValue_js_1 = require("./../../shared/environmentValue.cjs");
20
+ const index_js_1 = require("./../../shared/http/index.cjs");
21
+ /**
22
+ * @description Google Docs API integration service
23
+ * @summary An undecorated HTTP service for reading and creating documents,
24
+ * running raw batch updates, appending text, and replacing all matching text.
25
+ * Every operation needs either an OAuth token or an API key; missing
26
+ * credentials or identifiers raise `InternalError`, and transport failures are
27
+ * mapped to decaf errors via {@link httpError}.
28
+ * @class GoogleDocsService
29
+ * @extends HttpApiService
30
+ * @category IO
31
+ * @example
32
+ * ```ts
33
+ * import { GoogleDocsService } from "@decaf-ts/integrations/io/google-docs";
34
+ *
35
+ * const docs = new GoogleDocsService();
36
+ * await docs.initialize({
37
+ * token: process.env.GRAPH_CREDENTIAL_GOOGLE_DOCS_TOKEN,
38
+ * });
39
+ * await docs.appendText(process.env.GOOGLE_DOC_ID ?? "", "New paragraph");
40
+ * ```
41
+ * @mermaid
42
+ * sequenceDiagram
43
+ * autonumber
44
+ * participant Caller
45
+ * participant Service as GoogleDocsService
46
+ * participant API as Google Docs API
47
+ * Caller->>Service: appendText(documentId, text)
48
+ * activate Service
49
+ * Service->>Service: requireAuth()
50
+ * Service->>API: GET /documents/{id}
51
+ * activate API
52
+ * API-->>Service: body content endIndex
53
+ * deactivate API
54
+ * Service->>API: POST /documents/{id}:batchUpdate
55
+ * activate API
56
+ * API-->>Service: batch update result
57
+ * deactivate API
58
+ * Service-->>Caller: batch update result
59
+ * deactivate Service
60
+ * @memberOf module:integrations/io/google-docs/service
61
+ */
62
+ class GoogleDocsService extends index_js_1.HttpApiService {
63
+ constructor() {
64
+ super(...arguments);
65
+ /**
66
+ * @description The provider name used in error messages
67
+ */
68
+ this.serviceName = "Google Docs";
69
+ }
70
+ /**
71
+ * @description The Google Docs API base URL
72
+ * @summary Used when the resolved config carries no `baseUrl`.
73
+ * @returns {string} `"https://docs.googleapis.com/v1"`.
74
+ */
75
+ defaultBaseUrl() {
76
+ return "https://docs.googleapis.com/v1";
77
+ }
78
+ /**
79
+ * @description Builds the Google Docs authentication headers
80
+ * @summary Prefers `Authorization: Bearer <token>`, falls back to
81
+ * `X-Goog-Api-Key: <apiKey>`, and returns no headers when neither is set.
82
+ * @param {GoogleDocsServiceConfig} config - The resolved service configuration.
83
+ * @returns {Record<string, string>} The authentication headers.
84
+ */
85
+ authHeaders(config) {
86
+ if (config.token)
87
+ return { Authorization: `Bearer ${config.token}` };
88
+ if (config.apiKey)
89
+ return { "X-Goog-Api-Key": config.apiKey };
90
+ return {};
91
+ }
92
+ /**
93
+ * @description Reads the Google Docs credentials and defaults from the environment
94
+ * @summary Reads the `io.googleDocs` slice and returns a partial config when
95
+ * a token or API key is configured, `undefined` otherwise. Values pass
96
+ * through `envString`/`envNumber` to reject unset-leaf proxies.
97
+ * @returns {Partial<GoogleDocsServiceConfig> | undefined} A partial config, or `undefined` when no credential is configured.
98
+ */
99
+ configFromEnvironment() {
100
+ const env = environment_js_1.IoEnvironment.io.googleDocs;
101
+ const token = (0, environmentValue_js_1.envString)(env?.token);
102
+ const apiKey = (0, environmentValue_js_1.envString)(env?.apiKey);
103
+ if (!token && !apiKey)
104
+ return undefined;
105
+ return {
106
+ token,
107
+ apiKey,
108
+ baseUrl: (0, environmentValue_js_1.envString)(env.baseUrl),
109
+ timeout: (0, environmentValue_js_1.envNumber)(env.timeout),
110
+ };
111
+ }
112
+ /**
113
+ * @description Asserts that an OAuth token or API key is configured
114
+ * @summary Called by every operation before it touches the network.
115
+ * @returns {void}
116
+ * @throws {InternalError} When neither a token nor an API key is configured.
117
+ */
118
+ requireAuth() {
119
+ if (!this.config.token && !this.config.apiKey) {
120
+ throw new db_decorators_1.InternalError("Google Docs requires an OAuth token or an API key");
121
+ }
122
+ }
123
+ /**
124
+ * @description Fetches a Google Docs document
125
+ * @summary `GET`s `/documents/<id>` and returns the full document payload.
126
+ * @param {string} documentId - The document ID.
127
+ * @returns {Promise<unknown>} The document payload.
128
+ * @throws {InternalError} When no credential is configured or the document ID is empty.
129
+ * @throws {NotFoundError} When the document does not exist (HTTP 404).
130
+ * @throws {BadRequestError} When Google rejects the request.
131
+ */
132
+ async getDocument(documentId) {
133
+ this.requireAuth();
134
+ if (!documentId) {
135
+ throw new db_decorators_1.InternalError("Google Docs requires a document id");
136
+ }
137
+ try {
138
+ const response = await this.client.get(`/documents/${encodeURIComponent(documentId)}`);
139
+ return response.data;
140
+ }
141
+ catch (error) {
142
+ throw (0, index_js_1.httpError)("Google Docs", "get document", error);
143
+ }
144
+ }
145
+ /**
146
+ * @description Creates a Google Docs document
147
+ * @summary `POST`s a new document with the given title and returns its
148
+ * payload (including `documentId`).
149
+ * @param {string} title - The new document title.
150
+ * @returns {Promise<unknown>} The created document payload.
151
+ * @throws {InternalError} When no credential is configured or the title is empty.
152
+ * @throws {BadRequestError} When Google rejects the request.
153
+ */
154
+ async createDocument(title) {
155
+ this.requireAuth();
156
+ if (!title) {
157
+ throw new db_decorators_1.InternalError("Google Docs requires a document title");
158
+ }
159
+ try {
160
+ const response = await this.client.post("/documents", { title });
161
+ return response.data;
162
+ }
163
+ catch (error) {
164
+ throw (0, index_js_1.httpError)("Google Docs", "create document", error);
165
+ }
166
+ }
167
+ /**
168
+ * @description Applies a raw Google Docs batch update
169
+ * @summary `POST`s the `requests` array to `/documents/<id>:batchUpdate`
170
+ * unchanged, allowing any Docs API request type.
171
+ * @param {string} documentId - The document ID.
172
+ * @param {unknown[]} requests - The Docs API request objects.
173
+ * @returns {Promise<unknown>} The batch update response payload.
174
+ * @throws {InternalError} When no credential is configured, or the document ID or requests are missing.
175
+ * @throws {NotFoundError} When the document does not exist (HTTP 404).
176
+ * @throws {BadRequestError} When Google rejects a request.
177
+ */
178
+ async batchUpdate(documentId, requests) {
179
+ this.requireAuth();
180
+ if (!documentId || !Array.isArray(requests) || !requests.length) {
181
+ throw new db_decorators_1.InternalError("Google Docs batchUpdate requires a document id and requests");
182
+ }
183
+ try {
184
+ const response = await this.client.post(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { requests });
185
+ return response.data;
186
+ }
187
+ catch (error) {
188
+ throw (0, index_js_1.httpError)("Google Docs", "batch update", error);
189
+ }
190
+ }
191
+ /**
192
+ * @description Appends text to the end of a Google Docs document
193
+ * @summary Reads the document to find the final `endIndex`, then inserts the
194
+ * text just before it through a `batchUpdate`.
195
+ * @param {string} documentId - The document ID.
196
+ * @param {string} text - The text to append.
197
+ * @returns {Promise<unknown>} The batch update response payload.
198
+ * @throws {InternalError} When no credential is configured, or the document ID or text is empty.
199
+ * @throws {NotFoundError} When the document does not exist (HTTP 404).
200
+ * @throws {BadRequestError} When Google rejects the update.
201
+ */
202
+ async appendText(documentId, text) {
203
+ this.requireAuth();
204
+ if (!documentId || !text) {
205
+ throw new db_decorators_1.InternalError("Google Docs appendText requires a document id and text");
206
+ }
207
+ try {
208
+ const document = await this.client.get(`/documents/${encodeURIComponent(documentId)}`);
209
+ const content = document.data.body?.content ?? [];
210
+ const last = content[content.length - 1];
211
+ const endIndex = last?.endIndex ?? 1;
212
+ const response = await this.client.post(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
213
+ requests: [
214
+ {
215
+ insertText: {
216
+ location: { index: Math.max(endIndex - 1, 1) },
217
+ text,
218
+ },
219
+ },
220
+ ],
221
+ });
222
+ return response.data;
223
+ }
224
+ catch (error) {
225
+ throw (0, index_js_1.httpError)("Google Docs", "append text", error);
226
+ }
227
+ }
228
+ /**
229
+ * @description Replaces all matching text in a Google Docs document
230
+ * @summary Sends a `replaceAllText` request honoring the `matchCase` option
231
+ * and returns the batch update response payload.
232
+ * @param {GoogleDocsReplaceInput} input - The document, find/replace text, and case option.
233
+ * @returns {Promise<unknown>} The batch update response payload.
234
+ * @throws {InternalError} When no credential is configured, or the document ID or find text is empty.
235
+ * @throws {NotFoundError} When the document does not exist (HTTP 404).
236
+ * @throws {BadRequestError} When Google rejects the update.
237
+ * @example
238
+ * ```ts
239
+ * await docs.replaceAllText({
240
+ * documentId: "abc123",
241
+ * find: "TODO",
242
+ * replace: "DONE",
243
+ * matchCase: true,
244
+ * });
245
+ * ```
246
+ */
247
+ async replaceAllText(input) {
248
+ this.requireAuth();
249
+ if (!input.documentId || !input.find) {
250
+ throw new db_decorators_1.InternalError("Google Docs replaceAllText requires a document id and find text");
251
+ }
252
+ try {
253
+ const response = await this.client.post(`/documents/${encodeURIComponent(input.documentId)}:batchUpdate`, {
254
+ requests: [
255
+ {
256
+ replaceAllText: {
257
+ containsText: {
258
+ text: input.find,
259
+ matchCase: input.matchCase ?? false,
260
+ },
261
+ replaceText: input.replace ?? "",
262
+ },
263
+ },
264
+ ],
265
+ });
266
+ return response.data;
267
+ }
268
+ catch (error) {
269
+ throw (0, index_js_1.httpError)("Google Docs", "replace all text", error);
270
+ }
271
+ }
272
+ }
273
+ exports.GoogleDocsService = GoogleDocsService;
274
+ //# sourceMappingURL=GoogleDocsService.js.map
275
+ //# sourceMappingURL=GoogleDocsService.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io/google-docs/GoogleDocsService.cjs","sourceRoot":"","sources":["io/google-docs/GoogleDocsService.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./GoogleDocsService.cjs"), exports);
18
+ //# sourceMappingURL=index.js.map
19
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io/google-docs/index.cjs","sourceRoot":"","sources":["io/google-docs/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,iCAAiC"}
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleSheetsService = void 0;
4
+ /**
5
+ * @module integrations/io/google-sheets/service
6
+ * @summary Google Sheets API integration service for reading and writing spreadsheet values.
7
+ * @description Exposes the Google Sheets v4 values API (`get`, `update`,
8
+ * `append`, `clear`) and spreadsheet creation as an undecorated
9
+ * client-based service built on
10
+ * {@link HttpApiService}. Authentication accepts either an OAuth token
11
+ * (bearer) or a plain API key (`X-Goog-Api-Key`); configuration comes from an
12
+ * explicit `GoogleSheetsServiceConfig` or the `io.googleSheets` environment
13
+ * slice, and failures are mapped to decaf errors via {@link httpError}.
14
+ */
15
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
16
+ const environment_js_1 = require("./../environment.cjs");
17
+ const environmentValue_js_1 = require("./../../shared/environmentValue.cjs");
18
+ const index_js_1 = require("./../../shared/http/index.cjs");
19
+ /**
20
+ * @description Google Sheets API integration service
21
+ * @summary An undecorated HTTP service for reading,
22
+ * updating, appending, and clearing values in A1 ranges of a spreadsheet, and
23
+ * for creating new spreadsheets. Every operation requires either an OAuth
24
+ * token or an API key (`requireAuth()`); ranges and spreadsheet IDs are
25
+ * URL-encoded, and transport failures are mapped to decaf errors via
26
+ * {@link httpError}.
27
+ * @class GoogleSheetsService
28
+ * @category IO
29
+ * @example
30
+ * ```ts
31
+ * import { GoogleSheetsService } from "@decaf-ts/integrations/io/google-sheets";
32
+ *
33
+ * const sheets = new GoogleSheetsService();
34
+ * await sheets.initialize({
35
+ * token: process.env.GRAPH_CREDENTIAL_GOOGLE_SHEETS_TOKEN,
36
+ * });
37
+ * const created = await sheets.createSpreadsheet("Metrics");
38
+ * await sheets.updateValues({
39
+ * spreadsheetId: created.spreadsheetId,
40
+ * range: "Sheet1!A1:B2",
41
+ * values: [
42
+ * ["date", "count"],
43
+ * ["2026-01-01", "42"],
44
+ * ],
45
+ * });
46
+ * ```
47
+ * @memberOf module:integrations/io/google-sheets/service
48
+ */
49
+ class GoogleSheetsService extends index_js_1.HttpApiService {
50
+ constructor() {
51
+ super(...arguments);
52
+ /**
53
+ * @description The provider name used in error messages
54
+ */
55
+ this.serviceName = "Google Sheets";
56
+ }
57
+ /**
58
+ * @description The Google Sheets v4 values API base URL
59
+ * @summary Used when the resolved config carries no `baseUrl`.
60
+ * @returns {string} `"https://sheets.googleapis.com/v4/spreadsheets"`.
61
+ */
62
+ defaultBaseUrl() {
63
+ return "https://sheets.googleapis.com/v4/spreadsheets";
64
+ }
65
+ /**
66
+ * @description Builds the Google Sheets authorization headers
67
+ * @summary Returns the `Authorization: Bearer <token>` header when the
68
+ * config carries an OAuth token, otherwise the `X-Goog-Api-Key` header when
69
+ * an API key is configured, and no headers otherwise.
70
+ * @param {GoogleSheetsServiceConfig} config - The resolved service configuration.
71
+ * @returns {Record<string, string>} The authorization headers (empty without a token or API key).
72
+ */
73
+ authHeaders(config) {
74
+ if (config.token)
75
+ return { Authorization: `Bearer ${config.token}` };
76
+ if (config.apiKey)
77
+ return { "X-Goog-Api-Key": config.apiKey };
78
+ return {};
79
+ }
80
+ /**
81
+ * @description Reads the Google Sheets credentials and defaults from the environment
82
+ * @summary Reads the `io.googleSheets` environment slice and returns a
83
+ * partial config when a token or API key is configured, `undefined`
84
+ * otherwise. Values pass through `envString`/`envNumber` to reject
85
+ * unset-leaf proxies.
86
+ * @returns {Partial<GoogleSheetsServiceConfig> | undefined} A partial config, or `undefined` when neither token nor API key is configured.
87
+ */
88
+ configFromEnvironment() {
89
+ const env = environment_js_1.IoEnvironment.io.googleSheets;
90
+ const token = (0, environmentValue_js_1.envString)(env?.token);
91
+ const apiKey = (0, environmentValue_js_1.envString)(env?.apiKey);
92
+ if (!token && !apiKey)
93
+ return undefined;
94
+ return {
95
+ token,
96
+ apiKey,
97
+ baseUrl: (0, environmentValue_js_1.envString)(env.baseUrl),
98
+ timeout: (0, environmentValue_js_1.envNumber)(env.timeout),
99
+ };
100
+ }
101
+ /**
102
+ * @description Asserts that the service was configured with OAuth credentials
103
+ * @summary Throws when the resolved config carries neither a `token` nor an
104
+ * `apiKey`; every operation calls this before issuing requests.
105
+ * @returns {void}
106
+ * @throws {InternalError} When neither an OAuth token nor an API key is configured.
107
+ */
108
+ requireAuth() {
109
+ const config = this.config;
110
+ if (!config.token && !config.apiKey) {
111
+ throw new db_decorators_1.InternalError("Google Sheets requires an OAuth token or an API key");
112
+ }
113
+ }
114
+ /**
115
+ * @description URL-encodes an A1 range for the values API path
116
+ * @summary Ranges such as `Sheet1!A1:B2` contain characters that must be
117
+ * percent-encoded; all operations route the range through this helper.
118
+ * @param {string} range - The A1 notation range to encode.
119
+ * @returns {string} The URL-encoded range.
120
+ */
121
+ rangePath(range) {
122
+ return encodeURIComponent(range);
123
+ }
124
+ /**
125
+ * @description Reads values from an A1 range of a spreadsheet
126
+ * @summary `GET`s the values endpoint for the given `spreadsheetId` and
127
+ * `range` and returns the served range, major dimension, and the grid
128
+ * values (rows of cell strings). Requires credentials and both arguments.
129
+ * @param {string} spreadsheetId - The spreadsheet to read from.
130
+ * @param {string} range - The A1 notation range to read (e.g. `"Sheet1!A1:C10"`).
131
+ * @returns {Promise<GoogleSheetsValuesResult>} The served range and grid values.
132
+ * @throws {InternalError} When credentials are missing or the spreadsheet ID/range is empty.
133
+ * @throws {NotFoundError} When the spreadsheet does not exist (HTTP 404).
134
+ * @throws {ConflictError} When Google answers with HTTP 409.
135
+ * @throws {BadRequestError} When Google answers with any other HTTP error status (e.g. invalid range).
136
+ */
137
+ async getValues(spreadsheetId, range) {
138
+ this.requireAuth();
139
+ if (!spreadsheetId || !range) {
140
+ throw new db_decorators_1.InternalError("Google Sheets getValues requires a spreadsheet ID and range");
141
+ }
142
+ try {
143
+ const response = await this.client.get(`/${encodeURIComponent(spreadsheetId)}/values/${this.rangePath(range)}`);
144
+ return {
145
+ spreadsheetId,
146
+ range: response.data.range ?? range,
147
+ majorDimension: response.data.majorDimension,
148
+ values: response.data.values ?? [],
149
+ };
150
+ }
151
+ catch (error) {
152
+ throw (0, index_js_1.httpError)("Google Sheets", "get values", error);
153
+ }
154
+ }
155
+ /**
156
+ * @description Overwrites values in an A1 range of a spreadsheet
157
+ * @summary `PUT`s the row values to the values endpoint for the given
158
+ * `spreadsheetId` and `range`. Cells are interpreted according to
159
+ * `valueInputOption` (`"USER_ENTERED"` by default, `"RAW"` to store text
160
+ * verbatim), and the existing range content is replaced.
161
+ * @param {GoogleSheetsWriteInput} input - The target spreadsheet, range, values, and input interpretation.
162
+ * @returns {Promise<GoogleSheetsValuesResult>} The served range and the written values.
163
+ * @throws {InternalError} When credentials are missing.
164
+ * @throws {NotFoundError} When the spreadsheet does not exist (HTTP 404).
165
+ * @throws {ConflictError} When Google answers with HTTP 409.
166
+ * @throws {BadRequestError} When Google answers with any other HTTP error status (e.g. invalid range).
167
+ */
168
+ async updateValues(input) {
169
+ this.requireAuth();
170
+ try {
171
+ const response = await this.client.put(`/${encodeURIComponent(input.spreadsheetId)}/values/${this.rangePath(input.range)}`, {
172
+ range: input.range,
173
+ majorDimension: "ROWS",
174
+ values: input.values,
175
+ }, {
176
+ params: {
177
+ valueInputOption: input.valueInputOption ?? "USER_ENTERED",
178
+ },
179
+ });
180
+ return {
181
+ spreadsheetId: input.spreadsheetId,
182
+ range: response.data.range ?? input.range,
183
+ majorDimension: response.data.majorDimension ?? "ROWS",
184
+ values: response.data.values ?? input.values,
185
+ };
186
+ }
187
+ catch (error) {
188
+ throw (0, index_js_1.httpError)("Google Sheets", "update values", error);
189
+ }
190
+ }
191
+ /**
192
+ * @description Appends values after the last row of an A1 range's table
193
+ * @summary `POST`s the row values to the `:append` endpoint for the given
194
+ * `spreadsheetId` and `range`, inserting new rows after existing table data
195
+ * (`insertDataOption: "INSERT_ROWS"`). Cells are interpreted according to
196
+ * `valueInputOption` (`"USER_ENTERED"` by default). Use a single-row or
197
+ * single-column A1 range to anchor the table; Google reports the range the
198
+ * data actually landed in.
199
+ * @param {GoogleSheetsWriteInput} input - The target spreadsheet, anchor range, values, and input interpretation.
200
+ * @returns {Promise<GoogleSheetsValuesResult>} The range the appended rows landed in and the appended values.
201
+ * @throws {InternalError} When credentials are missing.
202
+ * @throws {NotFoundError} When the spreadsheet does not exist (HTTP 404).
203
+ * @throws {ConflictError} When Google answers with HTTP 409.
204
+ * @throws {BadRequestError} When Google answers with any other HTTP error status (e.g. invalid range).
205
+ */
206
+ async appendValues(input) {
207
+ this.requireAuth();
208
+ try {
209
+ const response = await this.client.post(`/${encodeURIComponent(input.spreadsheetId)}/values/${this.rangePath(input.range)}:append`, {
210
+ range: input.range,
211
+ majorDimension: "ROWS",
212
+ values: input.values,
213
+ }, {
214
+ params: {
215
+ valueInputOption: input.valueInputOption ?? "USER_ENTERED",
216
+ insertDataOption: "INSERT_ROWS",
217
+ },
218
+ });
219
+ return {
220
+ spreadsheetId: input.spreadsheetId,
221
+ range: response.data.range ?? input.range,
222
+ majorDimension: response.data.majorDimension ?? "ROWS",
223
+ values: response.data.values ?? [],
224
+ };
225
+ }
226
+ catch (error) {
227
+ throw (0, index_js_1.httpError)("Google Sheets", "append values", error);
228
+ }
229
+ }
230
+ /**
231
+ * @description Clears all values in an A1 range of a spreadsheet
232
+ * @summary `POST`s the `:clear` endpoint for the given `spreadsheetId` and
233
+ * `range`, emptying the cells while preserving formatting, and returns the
234
+ * range Google actually cleared.
235
+ * @param {string} spreadsheetId - The spreadsheet to clear values in.
236
+ * @param {string} range - The A1 notation range to clear.
237
+ * @returns {Promise<{spreadsheetId: string, clearedRange: string}>} The cleared range as reported by Google.
238
+ * @throws {InternalError} When credentials are missing.
239
+ * @throws {NotFoundError} When the spreadsheet does not exist (HTTP 404).
240
+ * @throws {ConflictError} When Google answers with HTTP 409.
241
+ * @throws {BadRequestError} When Google answers with any other HTTP error status (e.g. invalid range).
242
+ */
243
+ async clearValues(spreadsheetId, range) {
244
+ this.requireAuth();
245
+ try {
246
+ const response = await this.client.post(`/${encodeURIComponent(spreadsheetId)}/values/${this.rangePath(range)}:clear`, {});
247
+ return {
248
+ spreadsheetId,
249
+ clearedRange: response.data.clearedRange ?? range,
250
+ };
251
+ }
252
+ catch (error) {
253
+ throw (0, index_js_1.httpError)("Google Sheets", "clear values", error);
254
+ }
255
+ }
256
+ /**
257
+ * @description Creates a new spreadsheet with the given title
258
+ * @summary `POST`s a spreadsheet resource with `properties.title` to the
259
+ * spreadsheets endpoint and returns the new spreadsheet's ID and URL.
260
+ * @param {string} title - The title for the new spreadsheet.
261
+ * @returns {Promise<{spreadsheetId: string, spreadsheetUrl?: string}>} The created spreadsheet's ID and URL.
262
+ * @throws {InternalError} When credentials are missing or the title is empty.
263
+ * @throws {NotFoundError} When Google answers with HTTP 404.
264
+ * @throws {ConflictError} When Google answers with HTTP 409.
265
+ * @throws {BadRequestError} When Google answers with any other HTTP error status.
266
+ */
267
+ async createSpreadsheet(title) {
268
+ this.requireAuth();
269
+ if (!title) {
270
+ throw new db_decorators_1.InternalError("Google Sheets createSpreadsheet requires a title");
271
+ }
272
+ try {
273
+ const response = await this.client.post("/", {
274
+ properties: { title },
275
+ });
276
+ return {
277
+ spreadsheetId: response.data.spreadsheetId,
278
+ spreadsheetUrl: response.data.spreadsheetUrl,
279
+ };
280
+ }
281
+ catch (error) {
282
+ throw (0, index_js_1.httpError)("Google Sheets", "create spreadsheet", error);
283
+ }
284
+ }
285
+ }
286
+ exports.GoogleSheetsService = GoogleSheetsService;
287
+ //# sourceMappingURL=GoogleSheetsService.js.map
288
+ //# sourceMappingURL=GoogleSheetsService.cjs.map