@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,146 @@
1
+ /**
2
+ * @module integrations/shared/http/hermetic-boot
3
+ * @summary Environment-hermetic boot path for undecorated services used from graph nodes.
4
+ * @description Restores the Environment-hermeticity guarantee that was lost when
5
+ * the `nonEnvironmentService` wrappers were removed (SAA-1293 / DECAF-809): node
6
+ * execution must never inherit configuration from a service's Environment slice
7
+ * (SAA-1305 finding F1). {@link bootWithoutEnvironment} boots a service with an
8
+ * explicit config while temporarily shadowing the service's own
9
+ * `configFromEnvironment()` hook, so keys absent from the explicit config stay
10
+ * unset instead of silently picking up Environment-derived values (e.g. a
11
+ * `comms.email.allowPlaintextAuth` opt-in or an Environment `timeout` reaching an
12
+ * {@link HttpApiService} node boot).
13
+ */
14
+ import { ValidationError } from "@decaf-ts/db-decorators";
15
+ /**
16
+ * @description Name of the instance property shadowed for the hermetic boot
17
+ * @summary Matches the `configFromEnvironment()` hook base services use to read
18
+ * their Environment slice.
19
+ */
20
+ const CONFIG_FROM_ENVIRONMENT = "configFromEnvironment";
21
+ /**
22
+ * @description Per-instance scope registry for the hermetic boot shadow
23
+ * @summary WeakMap keyed by the service instance. Each entry records the
24
+ * service's original own `configFromEnvironment` property descriptor (`own`)
25
+ * together with a call depth (`depth`) counting the in-flight
26
+ * `bootWithoutEnvironment` calls on that instance. The first call on an
27
+ * instance creates the entry and installs the shadow; nested calls on the
28
+ * same instance only increment `depth` and never restore early; the entry is
29
+ * deleted and the original descriptor restored (or removed) when the outermost
30
+ * call completes, so overlapping calls on the same instance share a single
31
+ * shadow while the prototype is never touched.
32
+ */
33
+ const shadowScopes = new WeakMap();
34
+ /**
35
+ * @description Boots a service with Environment-derived configuration disabled
36
+ * @summary Node-side replacement for the removed `nonEnvironmentService`
37
+ * wrappers (SAA-1293): the service's own `configFromEnvironment()` property
38
+ * descriptor is shadowed with `() => undefined` for the duration of the
39
+ * `boot()` call and restored (or removed, when the service had no own
40
+ * descriptor) in `finally`, so configuration keys absent from
41
+ * the explicit config cannot inherit the service's Environment slice. The
42
+ * shadowing is per-instance (the prototype is never touched): a module-level
43
+ * `WeakMap` (`shadowScopes`) tracks each service's original
44
+ * `configFromEnvironment` descriptor together with a call depth, so
45
+ * overlapping or nested `bootWithoutEnvironment` calls on the same instance
46
+ * share a single shadow; a nested call only increments that depth and never
47
+ * restores the descriptor early, and the original descriptor is restored (or
48
+ * deleted) only when the outermost call completes. The helper fails closed:
49
+ * an explicit config object is mandatory, so a node boot can never silently
50
+ * fall back to Environment configuration. The SAA-1293 undecorated-service
51
+ * contract stands — no decoration, no wrapper classes, no `Injectables`
52
+ * registration.
53
+ * @template CONF The explicit configuration object type passed to `boot()`.
54
+ * @template S The undecorated service type being booted.
55
+ * @param {S} service - The undecorated service instance to boot.
56
+ * @param {CONF} config - Explicit configuration object for the boot; Environment-derived config is disabled for this call.
57
+ * @param {...unknown} rest - Remaining `boot()` arguments (e.g. a decaf `Context`), forwarded unchanged.
58
+ * @returns {Promise<S>} The same service instance, booted with only the explicit configuration.
59
+ * @throws {ValidationError} When `config` is missing or not an object.
60
+ * @example
61
+ * ```ts
62
+ * import { EmailService } from "@decaf-ts/integrations/comms/email";
63
+ * import { bootWithoutEnvironment } from "@decaf-ts/integrations/shared/http";
64
+ *
65
+ * const service = new EmailService();
66
+ * // The comms.email environment slice is ignored even when configured:
67
+ * // allowPlaintextAuth stays false unless the explicit config sets it.
68
+ * await bootWithoutEnvironment(service, {
69
+ * provider: "smtp",
70
+ * host: "smtp.example",
71
+ * port: 587,
72
+ * username: "user@example.com",
73
+ * password: "secret",
74
+ * });
75
+ * ```
76
+ * @category Shared
77
+ * @memberOf module:integrations/shared/http/hermetic-boot
78
+ * @mermaid
79
+ * sequenceDiagram
80
+ * autonumber
81
+ * participant Caller
82
+ * participant Helper as bootWithoutEnvironment
83
+ * participant Service as service
84
+ * Caller->>Helper: bootWithoutEnvironment(service, config, ...rest)
85
+ * activate Helper
86
+ * alt config missing or not an object
87
+ * Helper-->>Caller: ValidationError
88
+ * else explicit config present
89
+ * alt instance not yet shadowed
90
+ * Helper->>Service: capture own configFromEnvironment descriptor
91
+ * Helper->>Service: shadow own configFromEnvironment with () => undefined
92
+ * else re-entrant call on the same instance
93
+ * Helper->>Helper: increment shared scope depth
94
+ * end
95
+ * Helper->>Service: boot(config, ...rest)
96
+ * activate Service
97
+ * Service-->>Helper: boot completes
98
+ * deactivate Service
99
+ * alt outermost call (depth reaches 0)
100
+ * Helper->>Service: restore or remove own configFromEnvironment descriptor
101
+ * else nested call
102
+ * Note over Helper,Service: shared shadow stays in place
103
+ * end
104
+ * Helper-->>Caller: service
105
+ * end
106
+ * deactivate Helper
107
+ */
108
+ export async function bootWithoutEnvironment(service, config, ...rest) {
109
+ if (!config || typeof config !== "object") {
110
+ throw new ValidationError("Node service boot requires an explicit configuration object; Environment configuration is disabled for node services");
111
+ }
112
+ const target = service;
113
+ let scope = shadowScopes.get(target);
114
+ if (scope) {
115
+ scope.depth += 1;
116
+ }
117
+ else {
118
+ scope = {
119
+ own: Object.getOwnPropertyDescriptor(target, CONFIG_FROM_ENVIRONMENT),
120
+ depth: 1,
121
+ };
122
+ Object.defineProperty(target, CONFIG_FROM_ENVIRONMENT, {
123
+ configurable: true,
124
+ writable: true,
125
+ value: () => undefined,
126
+ });
127
+ shadowScopes.set(target, scope);
128
+ }
129
+ try {
130
+ await target.boot(config, ...rest);
131
+ }
132
+ finally {
133
+ scope.depth -= 1;
134
+ if (scope.depth === 0) {
135
+ shadowScopes.delete(target);
136
+ if (scope.own) {
137
+ Object.defineProperty(target, CONFIG_FROM_ENVIRONMENT, scope.own);
138
+ }
139
+ else {
140
+ delete target[CONFIG_FROM_ENVIRONMENT];
141
+ }
142
+ }
143
+ }
144
+ return service;
145
+ }
146
+ //# sourceMappingURL=hermeticBoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermeticBoot.js","sourceRoot":"","sources":["../../../../src/shared/http/hermeticBoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAW1D;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,YAAY,GAAG,IAAI,OAAO,EAG7B,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAG1C,OAAU,EAAE,MAAY,EAAE,GAAG,IAAe;IAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CACvB,sHAAsH,CACvH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAsC,CAAC;IACtD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG;YACN,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,CAAC;YACrE,KAAK,EAAE,CAAC;SACT,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE;YACrD,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;SACvB,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACjB,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @module integrations/shared/http
3
+ * @summary Shared HTTP plumbing for client-based API services.
4
+ * @description Re-exports {@link HttpApiService} (Axios-backed base class with
5
+ * environment-driven config), {@link httpError} (the failure-to-decaf-error
6
+ * mapper used by every API service), and {@link bootWithoutEnvironment} (the
7
+ * Environment-hermetic boot path used by as-graph node consumers).
8
+ */
9
+ export * from "./HttpApiService.js";
10
+ export * from "./hermeticBoot.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,oCAAiC;AACjC,kCAA+B"}
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
8
8
  import { BlobStoreService } from "../core/BlobStoreService.d.cts";
9
9
  import type { AzureBlobStoreServiceConfig, BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue } from "../core/BlobTypes.d.cts";
10
10
  /**
11
- * @description Azure Blob storage service registered as `blob-azure`
11
+ * @description Undecorated Azure Blob storage service
12
12
  * @summary Stores blobs in an Azure Blob Storage container via
13
13
  * `@azure/storage-blob`, authenticating either with a connection string or
14
14
  * `DefaultAzureCredential`, and signing URLs with SAS tokens.
@@ -27,18 +27,18 @@ export declare class AzureBlobStoreService extends BlobStoreService<ContainerCli
27
27
  /**
28
28
  * @description Builds the Azure blob config from the environment
29
29
  * @summary Reads the `blobs.azure` environment slice; considered
30
- * unconfigured when no `container` is set, which keeps the auto-boot
31
- * fallback (see `getConfigFromArgs`) resolving to `undefined`.
30
+ * unconfigured when no `container` is set, in which case this returns
31
+ * `undefined` (see `getConfigFromArgs`).
32
32
  * @return {AzureBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
33
33
  */
34
34
  protected configFromEnvironment(): AzureBlobStoreServiceConfig | undefined;
35
35
  /**
36
36
  * @description Initializes the Azure Blob container client
37
37
  * @summary Resolves the config via `getConfigFromArgs` (explicit config,
38
- * then the `blobs.azure` environment slice). When no config resolves during
39
- * a context-bearing auto-boot of an unconfigured provider, returns
40
- * `skipInitialization()` so `Service.boot` does not throw; an explicit
41
- * `initialize()` with no resolvable config still throws a
38
+ * then the `blobs.azure` environment slice). When no config resolves and
39
+ * the arguments carry a decaf `Context`, returns
40
+ * `skipInitialization()` so the context-bearing boot does not throw; an
41
+ * explicit `initialize()` with no resolvable config still throws a
42
42
  * `ValidationError`. Requires a `container`, builds the
43
43
  * `BlobServiceClient` from the connection string when present or from the
44
44
  * endpoint (defaulting to `https://<accountName>.blob.core.windows.net`)
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
8
8
  import { BlobStoreService } from "../core/BlobStoreService.d.mts";
9
9
  import type { AzureBlobStoreServiceConfig, BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue } from "../core/BlobTypes.d.mts";
10
10
  /**
11
- * @description Azure Blob storage service registered as `blob-azure`
11
+ * @description Undecorated Azure Blob storage service
12
12
  * @summary Stores blobs in an Azure Blob Storage container via
13
13
  * `@azure/storage-blob`, authenticating either with a connection string or
14
14
  * `DefaultAzureCredential`, and signing URLs with SAS tokens.
@@ -27,18 +27,18 @@ export declare class AzureBlobStoreService extends BlobStoreService<ContainerCli
27
27
  /**
28
28
  * @description Builds the Azure blob config from the environment
29
29
  * @summary Reads the `blobs.azure` environment slice; considered
30
- * unconfigured when no `container` is set, which keeps the auto-boot
31
- * fallback (see `getConfigFromArgs`) resolving to `undefined`.
30
+ * unconfigured when no `container` is set, in which case this returns
31
+ * `undefined` (see `getConfigFromArgs`).
32
32
  * @return {AzureBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
33
33
  */
34
34
  protected configFromEnvironment(): AzureBlobStoreServiceConfig | undefined;
35
35
  /**
36
36
  * @description Initializes the Azure Blob container client
37
37
  * @summary Resolves the config via `getConfigFromArgs` (explicit config,
38
- * then the `blobs.azure` environment slice). When no config resolves during
39
- * a context-bearing auto-boot of an unconfigured provider, returns
40
- * `skipInitialization()` so `Service.boot` does not throw; an explicit
41
- * `initialize()` with no resolvable config still throws a
38
+ * then the `blobs.azure` environment slice). When no config resolves and
39
+ * the arguments carry a decaf `Context`, returns
40
+ * `skipInitialization()` so the context-bearing boot does not throw; an
41
+ * explicit `initialize()` with no resolvable config still throws a
42
42
  * `ValidationError`. Requires a `container`, builds the
43
43
  * `BlobServiceClient` from the connection string when present or from the
44
44
  * endpoint (defaulting to `https://<accountName>.blob.core.windows.net`)
@@ -8,20 +8,21 @@ import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListR
8
8
  /**
9
9
  * @description Base abstraction for blob store client services
10
10
  * @summary Provides the shared key handling, URI composition, and
11
- * auto-boot-aware config resolution used by every provider backend
11
+ * boot-aware config resolution used by every provider backend
12
12
  * (memory, local filesystem, S3-compatible, Azure Blob, GCS, IPFS).
13
13
  *
14
- * Extends {@link ClientBasedService} so concrete providers are registered as
15
- * injectable services and auto-booted by `Service.boot`. During auto-boot the
16
- * framework passes a decaf `Context` instead of a blob config, so
17
- * {@link BlobStoreService.getConfigFromArgs} must distinguish the two: a real
18
- * config always carries a non-empty string `provider`, while a `Context` does
19
- * not. When neither an explicit config nor the provider's environment slice
20
- * resolves a config, a context-bearing auto-boot is skipped via
14
+ * Extends {@link ClientBasedService}. Decorated providers are registered as
15
+ * injectable services and auto-booted by `Service.boot`; undecorated providers
16
+ * are plain classes that consumers construct and boot explicitly. In a
17
+ * context-bearing boot the framework passes a decaf `Context` instead of a
18
+ * blob config, so {@link BlobStoreService.getConfigFromArgs} must distinguish
19
+ * the two: a real config always carries a non-empty string `provider`, while a
20
+ * `Context` does not. When neither an explicit config nor the provider's
21
+ * environment slice resolves a config, a context-bearing boot is skipped via
21
22
  * {@link BlobStoreService.skipInitialization} instead of throwing, so optional
22
- * providers (e.g. `blob-minio`/`blob-r2` registered alongside `blob-s3`) do not
23
- * block the rest of the service graph. An explicit `initialize()` call with no
24
- * resolvable config still fails loudly with a {@link ValidationError}.
23
+ * providers (e.g. an unconfigured `blob-minio`/`blob-r2` next to `blob-s3`) do
24
+ * not block the rest of the service graph. An explicit `initialize()` call
25
+ * with no resolvable config still fails loudly with a {@link ValidationError}.
25
26
  *
26
27
  * @template TClient - The provider-specific client type created by `initialize`
27
28
  * @template TConfig - The provider-specific config extending {@link BlobStoreServiceConfig}
@@ -32,7 +33,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
32
33
  /**
33
34
  * @description Initializes the base service
34
35
  * @summary Delegates to {@link ClientBasedService}; config and client are
35
- * only set by a successful `initialize()` (or skipped on auto-boot).
36
+ * only set by a successful `initialize()` (or skipped on a context-bearing boot).
36
37
  */
37
38
  constructor();
38
39
  /**
@@ -54,9 +55,9 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
54
55
  * @summary Concrete providers resolve their config via
55
56
  * {@link BlobStoreService.getConfigFromArgs}, build the provider client, and
56
57
  * store both on `_config`/`_client`. When no config can be resolved during a
57
- * context-bearing auto-boot, providers return
58
+ * context-bearing boot, providers return
58
59
  * {@link BlobStoreService.skipInitialization} instead of throwing.
59
- * @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (auto-boot always appends a `Context`)
60
+ * @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (a context-bearing boot appends a `Context`)
60
61
  * @return {Promise<{config: TConfig, client: TClient}>} The resolved config and constructed client
61
62
  */
62
63
  abstract initialize(...args: ContextualArgs<any>): Promise<{
@@ -154,25 +155,25 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
154
155
  protected cleanKey(key: BlobKey): string;
155
156
  /**
156
157
  * @description Resolves the provider config from the initialize arguments or the provider's environment slice
157
- * @summary `Service.boot` passes a decaf `Context` (not a blob config) to
158
- * every registered `ClientBasedService`, so an object-shaped argument must
158
+ * @summary A context-bearing boot passes a decaf `Context` (not a blob
159
+ * config) to the service, so an object-shaped argument must
159
160
  * not blindly be treated as config. A real blob config always carries a
160
161
  * non-empty string `provider` (see {@link BlobStoreService.isConfigLike}).
161
162
  * Resolution order: explicit config argument, then the provider's
162
163
  * `configFromEnvironment()` slice. When neither resolves, `undefined` is
163
- * returned only for a context-bearing auto-boot so an unconfigured provider
164
- * (e.g. an optional `blob-minio`/`blob-r2` registered alongside `blob-s3`)
164
+ * returned only for a context-bearing boot so an unconfigured provider
165
+ * (e.g. an optional unconfigured `blob-minio`/`blob-r2` next to `blob-s3`)
165
166
  * does not block the whole service graph from booting; an explicit
166
167
  * `initialize()` with neither config nor environment still throws.
167
168
  *
168
169
  * @template TExpected - The provider-specific config type expected by the caller
169
170
  * @param {...MaybeContextualArg<any>} args - Initialize arguments: an optional blob config and/or a decaf `Context`
170
- * @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing auto-boot has no resolvable config
171
+ * @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing boot has no resolvable config
171
172
  * @throws {ValidationError} When called explicitly (no `Context` in `args`) and no config argument or environment config is available
172
173
  *
173
174
  * @mermaid
174
175
  * sequenceDiagram
175
- * participant Caller as Service.boot / initialize()
176
+ * participant Caller as boot() / initialize()
176
177
  * participant Service as BlobStoreService
177
178
  * participant Env as configFromEnvironment()
178
179
  *
@@ -190,7 +191,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
190
191
  * Service-->>Caller: config
191
192
  * else no env config
192
193
  * Service->>Service: hasContext(args)
193
- * alt Context present (auto-boot)
194
+ * alt Context present (context-bearing boot)
194
195
  * Service-->>Caller: undefined (skip initialization)
195
196
  * else explicit initialize()
196
197
  * Service--xCaller: ValidationError
@@ -204,7 +205,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
204
205
  * @description Determines whether a value is a blob config object
205
206
  * @summary True only for an object that carries a non-empty string
206
207
  * `provider` and is not a decaf `Context`. Avoids mistaking a contextual
207
- * argument (e.g. the `Context` that `Service.boot` passes) for the config.
208
+ * argument (e.g. the `Context` a context-bearing boot passes) for the config.
208
209
  * @param {unknown} value - The value to test
209
210
  * @return {boolean} `true` when the value is config-like
210
211
  */
@@ -221,8 +222,8 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
221
222
  protected isContextLike(value: unknown): boolean;
222
223
  /**
223
224
  * @description Determines whether the initialize arguments carry a decaf `Context`
224
- * @summary A `Context` in the arguments marks a background auto-boot of an
225
- * unconfigured provider (resolved to a skip by
225
+ * @summary A `Context` in the arguments marks a context-bearing background
226
+ * boot of an unconfigured provider (resolved to a skip by
226
227
  * {@link BlobStoreService.getConfigFromArgs}), as opposed to an explicit
227
228
  * `initialize()` that must fail loudly when no config is available.
228
229
  * @param {MaybeContextualArg<any>[]} args - The initialize arguments to inspect
@@ -230,17 +231,17 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
230
231
  */
231
232
  protected hasContext(args: MaybeContextualArg<any>): boolean;
232
233
  /**
233
- * @description Skips initialization for an unconfigured provider during auto-boot
234
+ * @description Skips initialization for an unconfigured provider during a context-bearing boot
234
235
  * @summary Clears `_config`/`_client` and returns a `{ config, client }`
235
236
  * result compatible with the `ClientBasedService.initialize` signature so
236
- * `Service.boot` completes without throwing. Leaves the service
237
+ * the boot completes without throwing. Leaves the service
237
238
  * deterministic: the `config`/`client` getters still throw if accessed until
238
239
  * the service is explicitly initialized with a resolvable config, and the
239
240
  * rest of the service graph is not blocked by this provider's absence.
240
241
  * Concrete providers invoke this from `initialize()` when
241
242
  * `getConfigFromArgs` resolves no config and cast the result to the
242
243
  * declared return type.
243
- * @return {{config: undefined, client: undefined}} An unset config/client pair for the auto-boot path
244
+ * @return {{config: undefined, client: undefined}} An unset config/client pair for the skip path
244
245
  */
245
246
  protected skipInitialization(): {
246
247
  config: undefined;
@@ -8,20 +8,21 @@ import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListR
8
8
  /**
9
9
  * @description Base abstraction for blob store client services
10
10
  * @summary Provides the shared key handling, URI composition, and
11
- * auto-boot-aware config resolution used by every provider backend
11
+ * boot-aware config resolution used by every provider backend
12
12
  * (memory, local filesystem, S3-compatible, Azure Blob, GCS, IPFS).
13
13
  *
14
- * Extends {@link ClientBasedService} so concrete providers are registered as
15
- * injectable services and auto-booted by `Service.boot`. During auto-boot the
16
- * framework passes a decaf `Context` instead of a blob config, so
17
- * {@link BlobStoreService.getConfigFromArgs} must distinguish the two: a real
18
- * config always carries a non-empty string `provider`, while a `Context` does
19
- * not. When neither an explicit config nor the provider's environment slice
20
- * resolves a config, a context-bearing auto-boot is skipped via
14
+ * Extends {@link ClientBasedService}. Decorated providers are registered as
15
+ * injectable services and auto-booted by `Service.boot`; undecorated providers
16
+ * are plain classes that consumers construct and boot explicitly. In a
17
+ * context-bearing boot the framework passes a decaf `Context` instead of a
18
+ * blob config, so {@link BlobStoreService.getConfigFromArgs} must distinguish
19
+ * the two: a real config always carries a non-empty string `provider`, while a
20
+ * `Context` does not. When neither an explicit config nor the provider's
21
+ * environment slice resolves a config, a context-bearing boot is skipped via
21
22
  * {@link BlobStoreService.skipInitialization} instead of throwing, so optional
22
- * providers (e.g. `blob-minio`/`blob-r2` registered alongside `blob-s3`) do not
23
- * block the rest of the service graph. An explicit `initialize()` call with no
24
- * resolvable config still fails loudly with a {@link ValidationError}.
23
+ * providers (e.g. an unconfigured `blob-minio`/`blob-r2` next to `blob-s3`) do
24
+ * not block the rest of the service graph. An explicit `initialize()` call
25
+ * with no resolvable config still fails loudly with a {@link ValidationError}.
25
26
  *
26
27
  * @template TClient - The provider-specific client type created by `initialize`
27
28
  * @template TConfig - The provider-specific config extending {@link BlobStoreServiceConfig}
@@ -32,7 +33,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
32
33
  /**
33
34
  * @description Initializes the base service
34
35
  * @summary Delegates to {@link ClientBasedService}; config and client are
35
- * only set by a successful `initialize()` (or skipped on auto-boot).
36
+ * only set by a successful `initialize()` (or skipped on a context-bearing boot).
36
37
  */
37
38
  constructor();
38
39
  /**
@@ -54,9 +55,9 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
54
55
  * @summary Concrete providers resolve their config via
55
56
  * {@link BlobStoreService.getConfigFromArgs}, build the provider client, and
56
57
  * store both on `_config`/`_client`. When no config can be resolved during a
57
- * context-bearing auto-boot, providers return
58
+ * context-bearing boot, providers return
58
59
  * {@link BlobStoreService.skipInitialization} instead of throwing.
59
- * @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (auto-boot always appends a `Context`)
60
+ * @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (a context-bearing boot appends a `Context`)
60
61
  * @return {Promise<{config: TConfig, client: TClient}>} The resolved config and constructed client
61
62
  */
62
63
  abstract initialize(...args: ContextualArgs<any>): Promise<{
@@ -154,25 +155,25 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
154
155
  protected cleanKey(key: BlobKey): string;
155
156
  /**
156
157
  * @description Resolves the provider config from the initialize arguments or the provider's environment slice
157
- * @summary `Service.boot` passes a decaf `Context` (not a blob config) to
158
- * every registered `ClientBasedService`, so an object-shaped argument must
158
+ * @summary A context-bearing boot passes a decaf `Context` (not a blob
159
+ * config) to the service, so an object-shaped argument must
159
160
  * not blindly be treated as config. A real blob config always carries a
160
161
  * non-empty string `provider` (see {@link BlobStoreService.isConfigLike}).
161
162
  * Resolution order: explicit config argument, then the provider's
162
163
  * `configFromEnvironment()` slice. When neither resolves, `undefined` is
163
- * returned only for a context-bearing auto-boot so an unconfigured provider
164
- * (e.g. an optional `blob-minio`/`blob-r2` registered alongside `blob-s3`)
164
+ * returned only for a context-bearing boot so an unconfigured provider
165
+ * (e.g. an optional unconfigured `blob-minio`/`blob-r2` next to `blob-s3`)
165
166
  * does not block the whole service graph from booting; an explicit
166
167
  * `initialize()` with neither config nor environment still throws.
167
168
  *
168
169
  * @template TExpected - The provider-specific config type expected by the caller
169
170
  * @param {...MaybeContextualArg<any>} args - Initialize arguments: an optional blob config and/or a decaf `Context`
170
- * @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing auto-boot has no resolvable config
171
+ * @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing boot has no resolvable config
171
172
  * @throws {ValidationError} When called explicitly (no `Context` in `args`) and no config argument or environment config is available
172
173
  *
173
174
  * @mermaid
174
175
  * sequenceDiagram
175
- * participant Caller as Service.boot / initialize()
176
+ * participant Caller as boot() / initialize()
176
177
  * participant Service as BlobStoreService
177
178
  * participant Env as configFromEnvironment()
178
179
  *
@@ -190,7 +191,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
190
191
  * Service-->>Caller: config
191
192
  * else no env config
192
193
  * Service->>Service: hasContext(args)
193
- * alt Context present (auto-boot)
194
+ * alt Context present (context-bearing boot)
194
195
  * Service-->>Caller: undefined (skip initialization)
195
196
  * else explicit initialize()
196
197
  * Service--xCaller: ValidationError
@@ -204,7 +205,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
204
205
  * @description Determines whether a value is a blob config object
205
206
  * @summary True only for an object that carries a non-empty string
206
207
  * `provider` and is not a decaf `Context`. Avoids mistaking a contextual
207
- * argument (e.g. the `Context` that `Service.boot` passes) for the config.
208
+ * argument (e.g. the `Context` a context-bearing boot passes) for the config.
208
209
  * @param {unknown} value - The value to test
209
210
  * @return {boolean} `true` when the value is config-like
210
211
  */
@@ -221,8 +222,8 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
221
222
  protected isContextLike(value: unknown): boolean;
222
223
  /**
223
224
  * @description Determines whether the initialize arguments carry a decaf `Context`
224
- * @summary A `Context` in the arguments marks a background auto-boot of an
225
- * unconfigured provider (resolved to a skip by
225
+ * @summary A `Context` in the arguments marks a context-bearing background
226
+ * boot of an unconfigured provider (resolved to a skip by
226
227
  * {@link BlobStoreService.getConfigFromArgs}), as opposed to an explicit
227
228
  * `initialize()` that must fail loudly when no config is available.
228
229
  * @param {MaybeContextualArg<any>[]} args - The initialize arguments to inspect
@@ -230,17 +231,17 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
230
231
  */
231
232
  protected hasContext(args: MaybeContextualArg<any>): boolean;
232
233
  /**
233
- * @description Skips initialization for an unconfigured provider during auto-boot
234
+ * @description Skips initialization for an unconfigured provider during a context-bearing boot
234
235
  * @summary Clears `_config`/`_client` and returns a `{ config, client }`
235
236
  * result compatible with the `ClientBasedService.initialize` signature so
236
- * `Service.boot` completes without throwing. Leaves the service
237
+ * the boot completes without throwing. Leaves the service
237
238
  * deterministic: the `config`/`client` getters still throw if accessed until
238
239
  * the service is explicitly initialized with a resolvable config, and the
239
240
  * rest of the service graph is not blocked by this provider's absence.
240
241
  * Concrete providers invoke this from `initialize()` when
241
242
  * `getConfigFromArgs` resolves no config and cast the result to the
242
243
  * declared return type.
243
- * @return {{config: undefined, client: undefined}} An unset config/client pair for the auto-boot path
244
+ * @return {{config: undefined, client: undefined}} An unset config/client pair for the skip path
244
245
  */
245
246
  protected skipInitialization(): {
246
247
  config: undefined;
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
8
8
  import { BlobStoreService } from "../core/BlobStoreService.d.cts";
9
9
  import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue, GcsBlobStoreServiceConfig } from "../core/BlobTypes.d.cts";
10
10
  /**
11
- * @description Google Cloud Storage blob store service registered as `blob-gcs`
11
+ * @description Undecorated Google Cloud Storage blob store service
12
12
  * @summary Stores blobs in a GCS bucket via `@google-cloud/storage`,
13
13
  * authenticating with optional explicit credentials or the environment's
14
14
  * application default credentials.
@@ -26,18 +26,18 @@ export declare class GcsBlobStoreService extends BlobStoreService<Bucket, GcsBlo
26
26
  /**
27
27
  * @description Builds the GCS blob config from the environment
28
28
  * @summary Reads the `blobs.gcs` environment slice; considered
29
- * unconfigured when no `bucket` is set, which keeps the auto-boot
30
- * fallback (see `getConfigFromArgs`) resolving to `undefined`.
29
+ * unconfigured when no `bucket` is set, in which case this returns
30
+ * `undefined` (see `getConfigFromArgs`).
31
31
  * @return {GcsBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
32
32
  */
33
33
  protected configFromEnvironment(): GcsBlobStoreServiceConfig | undefined;
34
34
  /**
35
35
  * @description Initializes the GCS bucket client
36
36
  * @summary Resolves the config via `getConfigFromArgs` (explicit config,
37
- * then the `blobs.gcs` environment slice). When no config resolves during a
38
- * context-bearing auto-boot of an unconfigured provider, returns
39
- * `skipInitialization()` so `Service.boot` does not throw; an explicit
40
- * `initialize()` with no resolvable config still throws a
37
+ * then the `blobs.gcs` environment slice). When no config resolves and the
38
+ * arguments carry a decaf `Context`, returns
39
+ * `skipInitialization()` so the context-bearing boot does not throw; an
40
+ * explicit `initialize()` with no resolvable config still throws a
41
41
  * `ValidationError`. Requires a `bucket`, builds the `Storage` client with
42
42
  * the configured project ID, credentials, and API endpoint, and stores the
43
43
  * bucket client.
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
8
8
  import { BlobStoreService } from "../core/BlobStoreService.d.mts";
9
9
  import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue, GcsBlobStoreServiceConfig } from "../core/BlobTypes.d.mts";
10
10
  /**
11
- * @description Google Cloud Storage blob store service registered as `blob-gcs`
11
+ * @description Undecorated Google Cloud Storage blob store service
12
12
  * @summary Stores blobs in a GCS bucket via `@google-cloud/storage`,
13
13
  * authenticating with optional explicit credentials or the environment's
14
14
  * application default credentials.
@@ -26,18 +26,18 @@ export declare class GcsBlobStoreService extends BlobStoreService<Bucket, GcsBlo
26
26
  /**
27
27
  * @description Builds the GCS blob config from the environment
28
28
  * @summary Reads the `blobs.gcs` environment slice; considered
29
- * unconfigured when no `bucket` is set, which keeps the auto-boot
30
- * fallback (see `getConfigFromArgs`) resolving to `undefined`.
29
+ * unconfigured when no `bucket` is set, in which case this returns
30
+ * `undefined` (see `getConfigFromArgs`).
31
31
  * @return {GcsBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
32
32
  */
33
33
  protected configFromEnvironment(): GcsBlobStoreServiceConfig | undefined;
34
34
  /**
35
35
  * @description Initializes the GCS bucket client
36
36
  * @summary Resolves the config via `getConfigFromArgs` (explicit config,
37
- * then the `blobs.gcs` environment slice). When no config resolves during a
38
- * context-bearing auto-boot of an unconfigured provider, returns
39
- * `skipInitialization()` so `Service.boot` does not throw; an explicit
40
- * `initialize()` with no resolvable config still throws a
37
+ * then the `blobs.gcs` environment slice). When no config resolves and the
38
+ * arguments carry a decaf `Context`, returns
39
+ * `skipInitialization()` so the context-bearing boot does not throw; an
40
+ * explicit `initialize()` with no resolvable config still throws a
41
41
  * `ValidationError`. Requires a `bucket`, builds the `Storage` client with
42
42
  * the configured project ID, credentials, and API endpoint, and stores the
43
43
  * bucket client.
@@ -1,12 +1,20 @@
1
1
  /**
2
2
  * @module integrations/blob/s3/service
3
3
  * @summary AWS S3 blob store service.
4
- * @description Thin `@service`-decorated provider on top of {@link S3CompatibleBlobStoreService}.
4
+ * @description Thin undecorated AWS S3 provider service on top of {@link S3CompatibleBlobStoreService}.
5
5
  */
6
6
  import { ContextualArgs } from "@decaf-ts/core";
7
7
  import { S3CompatibleBlobStoreService } from "./S3CompatibleBlobStoreService.d.cts";
8
8
  import type { S3BlobStoreServiceConfig } from "../core/BlobTypes.d.cts";
9
9
  import { S3Client } from "@aws-sdk/client-s3";
10
+ /**
11
+ * @description AWS S3 blob store service
12
+ * @summary Undecorated provider service storing blobs in an AWS S3 bucket
13
+ * through {@link S3CompatibleBlobStoreService}. Falls back to the `blobs.s3`
14
+ * environment slice when `initialize()` is called without an explicit config.
15
+ * @class S3BlobStoreService
16
+ * @memberOf module:integrations/blob/s3/service
17
+ */
10
18
  export declare class S3BlobStoreService extends S3CompatibleBlobStoreService {
11
19
  protected configFromEnvironment(): S3BlobStoreServiceConfig | undefined;
12
20
  initialize(...args: ContextualArgs<any>): Promise<{
@@ -1,12 +1,20 @@
1
1
  /**
2
2
  * @module integrations/blob/s3/service
3
3
  * @summary AWS S3 blob store service.
4
- * @description Thin `@service`-decorated provider on top of {@link S3CompatibleBlobStoreService}.
4
+ * @description Thin undecorated AWS S3 provider service on top of {@link S3CompatibleBlobStoreService}.
5
5
  */
6
6
  import { ContextualArgs } from "@decaf-ts/core";
7
7
  import { S3CompatibleBlobStoreService } from "./S3CompatibleBlobStoreService.d.mts";
8
8
  import type { S3BlobStoreServiceConfig } from "../core/BlobTypes.d.mts";
9
9
  import { S3Client } from "@aws-sdk/client-s3";
10
+ /**
11
+ * @description AWS S3 blob store service
12
+ * @summary Undecorated provider service storing blobs in an AWS S3 bucket
13
+ * through {@link S3CompatibleBlobStoreService}. Falls back to the `blobs.s3`
14
+ * environment slice when `initialize()` is called without an explicit config.
15
+ * @class S3BlobStoreService
16
+ * @memberOf module:integrations/blob/s3/service
17
+ */
10
18
  export declare class S3BlobStoreService extends S3CompatibleBlobStoreService {
11
19
  protected configFromEnvironment(): S3BlobStoreServiceConfig | undefined;
12
20
  initialize(...args: ContextualArgs<any>): Promise<{