@decaf-ts/integrations 0.11.0 → 0.12.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 (496) 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/comms/email/EmailService.cjs +376 -0
  19. package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
  20. package/lib/cjs/comms/email/index.cjs +29 -0
  21. package/lib/cjs/comms/email/index.cjs.map +1 -0
  22. package/lib/cjs/comms/email/mime.cjs +225 -0
  23. package/lib/cjs/comms/email/mime.cjs.map +1 -0
  24. package/lib/cjs/comms/email/smtp.cjs +204 -0
  25. package/lib/cjs/comms/email/smtp.cjs.map +1 -0
  26. package/lib/cjs/comms/environment.cjs +63 -0
  27. package/lib/cjs/comms/environment.cjs.map +1 -0
  28. package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
  29. package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
  30. package/lib/cjs/comms/gmail/index.cjs +24 -0
  31. package/lib/cjs/comms/gmail/index.cjs.map +1 -0
  32. package/lib/cjs/comms/index.cjs +31 -0
  33. package/lib/cjs/comms/index.cjs.map +1 -0
  34. package/lib/cjs/comms/slack/SlackService.cjs +264 -0
  35. package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
  36. package/lib/cjs/comms/slack/index.cjs +24 -0
  37. package/lib/cjs/comms/slack/index.cjs.map +1 -0
  38. package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
  39. package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
  40. package/lib/cjs/comms/teams/index.cjs +24 -0
  41. package/lib/cjs/comms/teams/index.cjs.map +1 -0
  42. package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
  43. package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
  44. package/lib/cjs/comms/telegram/index.cjs +24 -0
  45. package/lib/cjs/comms/telegram/index.cjs.map +1 -0
  46. package/lib/cjs/devops/environment.cjs +43 -0
  47. package/lib/cjs/devops/environment.cjs.map +1 -0
  48. package/lib/cjs/devops/github/GithubService.cjs +302 -0
  49. package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
  50. package/lib/cjs/devops/github/index.cjs +24 -0
  51. package/lib/cjs/devops/github/index.cjs.map +1 -0
  52. package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
  53. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
  54. package/lib/cjs/devops/gitlab/index.cjs +24 -0
  55. package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
  56. package/lib/cjs/devops/index.cjs +28 -0
  57. package/lib/cjs/devops/index.cjs.map +1 -0
  58. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
  59. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
  60. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
  61. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
  62. package/lib/cjs/index.cjs +3 -3
  63. package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
  64. package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
  65. package/lib/cjs/io/airtable/index.cjs +24 -0
  66. package/lib/cjs/io/airtable/index.cjs.map +1 -0
  67. package/lib/cjs/io/environment.cjs +46 -0
  68. package/lib/cjs/io/environment.cjs.map +1 -0
  69. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
  70. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
  71. package/lib/cjs/io/google-sheets/index.cjs +24 -0
  72. package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
  73. package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
  74. package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
  75. package/lib/cjs/io/graphql/index.cjs +24 -0
  76. package/lib/cjs/io/graphql/index.cjs.map +1 -0
  77. package/lib/cjs/io/index.cjs +30 -0
  78. package/lib/cjs/io/index.cjs.map +1 -0
  79. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
  80. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
  81. package/lib/cjs/io/spreadsheet/index.cjs +25 -0
  82. package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
  83. package/lib/cjs/namespaces/index.cjs +1 -0
  84. package/lib/cjs/namespaces/index.cjs.map +1 -1
  85. package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
  86. package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
  87. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
  88. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
  89. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
  90. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
  91. package/lib/cjs/namespaces/models/group.model.cjs +2 -0
  92. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
  93. package/lib/cjs/namespaces/models/index.cjs +1 -0
  94. package/lib/cjs/namespaces/models/index.cjs.map +1 -1
  95. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
  96. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
  97. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
  98. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
  99. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
  100. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
  101. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
  102. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
  103. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
  104. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
  105. package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
  106. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
  107. package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
  108. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
  109. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
  110. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
  111. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
  112. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
  113. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
  114. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
  115. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
  116. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
  117. package/lib/cjs/namespaces/models/role.model.cjs +2 -0
  118. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
  119. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
  120. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
  121. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
  122. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
  123. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
  124. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
  125. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
  126. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
  127. package/lib/cjs/namespaces/models/user.model.cjs +2 -0
  128. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
  129. package/lib/cjs/namespaces/rls/index.cjs +28 -0
  130. package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
  131. package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
  132. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
  133. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
  134. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
  135. package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
  136. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
  137. package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
  138. package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
  139. package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
  140. package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
  141. package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
  142. package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
  143. package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
  144. package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
  145. package/lib/cjs/namespaces/services/index.cjs +1 -0
  146. package/lib/cjs/namespaces/services/index.cjs.map +1 -1
  147. package/lib/cjs/namespaces/types.cjs +6 -1
  148. package/lib/cjs/namespaces/types.cjs.map +1 -1
  149. package/lib/cjs/redis/adapter.cjs +7 -1
  150. package/lib/cjs/redis/adapter.cjs.map +1 -1
  151. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
  152. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
  153. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
  154. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
  155. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
  156. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
  157. package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
  158. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
  159. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
  160. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
  161. package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
  162. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
  163. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
  164. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
  165. package/lib/cjs/secrets/fs/index.cjs +27 -0
  166. package/lib/cjs/secrets/fs/index.cjs.map +1 -0
  167. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
  168. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
  169. package/lib/cjs/secrets/index.cjs +2 -0
  170. package/lib/cjs/secrets/index.cjs.map +1 -1
  171. package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
  172. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
  173. package/lib/cjs/secrets/model/Secret.cjs +83 -5
  174. package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
  175. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
  176. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
  177. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
  178. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
  179. package/lib/cjs/shared/environmentValue.cjs +24 -0
  180. package/lib/cjs/shared/environmentValue.cjs.map +1 -1
  181. package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
  182. package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
  183. package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
  184. package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
  185. package/lib/cjs/shared/http/index.cjs +28 -0
  186. package/lib/cjs/shared/http/index.cjs.map +1 -0
  187. package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
  188. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
  189. package/lib/esm/blob/core/BlobStoreService.js +26 -25
  190. package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
  191. package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
  192. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
  193. package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
  194. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
  195. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
  196. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
  197. package/lib/esm/comms/email/EmailService.js +338 -0
  198. package/lib/esm/comms/email/EmailService.js.map +1 -0
  199. package/lib/esm/comms/email/index.js +12 -0
  200. package/lib/esm/comms/email/index.js.map +1 -0
  201. package/lib/esm/comms/email/mime.js +218 -0
  202. package/lib/esm/comms/email/mime.js.map +1 -0
  203. package/lib/esm/comms/email/smtp.js +166 -0
  204. package/lib/esm/comms/email/smtp.js.map +1 -0
  205. package/lib/esm/comms/environment.js +59 -0
  206. package/lib/esm/comms/environment.js.map +1 -0
  207. package/lib/esm/comms/gmail/GmailService.js +230 -0
  208. package/lib/esm/comms/gmail/GmailService.js.map +1 -0
  209. package/lib/esm/comms/gmail/index.js +7 -0
  210. package/lib/esm/comms/gmail/index.js.map +1 -0
  211. package/lib/esm/comms/index.js +14 -0
  212. package/lib/esm/comms/index.js.map +1 -0
  213. package/lib/esm/comms/slack/SlackService.js +259 -0
  214. package/lib/esm/comms/slack/SlackService.js.map +1 -0
  215. package/lib/esm/comms/slack/index.js +7 -0
  216. package/lib/esm/comms/slack/index.js.map +1 -0
  217. package/lib/esm/comms/teams/TeamsService.js +204 -0
  218. package/lib/esm/comms/teams/TeamsService.js.map +1 -0
  219. package/lib/esm/comms/teams/index.js +7 -0
  220. package/lib/esm/comms/teams/index.js.map +1 -0
  221. package/lib/esm/comms/telegram/TelegramService.js +191 -0
  222. package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
  223. package/lib/esm/comms/telegram/index.js +7 -0
  224. package/lib/esm/comms/telegram/index.js.map +1 -0
  225. package/lib/esm/devops/environment.js +39 -0
  226. package/lib/esm/devops/environment.js.map +1 -0
  227. package/lib/esm/devops/github/GithubService.js +297 -0
  228. package/lib/esm/devops/github/GithubService.js.map +1 -0
  229. package/lib/esm/devops/github/index.js +7 -0
  230. package/lib/esm/devops/github/index.js.map +1 -0
  231. package/lib/esm/devops/gitlab/GitlabService.js +277 -0
  232. package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
  233. package/lib/esm/devops/gitlab/index.js +7 -0
  234. package/lib/esm/devops/gitlab/index.js.map +1 -0
  235. package/lib/esm/devops/index.js +11 -0
  236. package/lib/esm/devops/index.js.map +1 -0
  237. package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
  238. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
  239. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
  240. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
  241. package/lib/esm/index.js +3 -3
  242. package/lib/esm/io/airtable/AirtableService.js +261 -0
  243. package/lib/esm/io/airtable/AirtableService.js.map +1 -0
  244. package/lib/esm/io/airtable/index.js +7 -0
  245. package/lib/esm/io/airtable/index.js.map +1 -0
  246. package/lib/esm/io/environment.js +42 -0
  247. package/lib/esm/io/environment.js.map +1 -0
  248. package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
  249. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
  250. package/lib/esm/io/google-sheets/index.js +7 -0
  251. package/lib/esm/io/google-sheets/index.js.map +1 -0
  252. package/lib/esm/io/graphql/GraphqlService.js +138 -0
  253. package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
  254. package/lib/esm/io/graphql/index.js +7 -0
  255. package/lib/esm/io/graphql/index.js.map +1 -0
  256. package/lib/esm/io/index.js +13 -0
  257. package/lib/esm/io/index.js.map +1 -0
  258. package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
  259. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
  260. package/lib/esm/io/spreadsheet/index.js +8 -0
  261. package/lib/esm/io/spreadsheet/index.js.map +1 -0
  262. package/lib/esm/namespaces/index.js +1 -0
  263. package/lib/esm/namespaces/index.js.map +1 -1
  264. package/lib/esm/namespaces/models/credential.model.js +106 -0
  265. package/lib/esm/namespaces/models/credential.model.js.map +1 -0
  266. package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
  267. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
  268. package/lib/esm/namespaces/models/group-membership.model.js +2 -0
  269. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
  270. package/lib/esm/namespaces/models/group.model.js +2 -0
  271. package/lib/esm/namespaces/models/group.model.js.map +1 -1
  272. package/lib/esm/namespaces/models/index.js +1 -0
  273. package/lib/esm/namespaces/models/index.js.map +1 -1
  274. package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
  275. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
  276. package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
  277. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
  278. package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
  279. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
  280. package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
  281. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
  282. package/lib/esm/namespaces/models/org-unit.model.js +2 -0
  283. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
  284. package/lib/esm/namespaces/models/permission.model.js +2 -0
  285. package/lib/esm/namespaces/models/permission.model.js.map +1 -1
  286. package/lib/esm/namespaces/models/principal.model.js +2 -0
  287. package/lib/esm/namespaces/models/principal.model.js.map +1 -1
  288. package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
  289. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
  290. package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
  291. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
  292. package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
  293. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
  294. package/lib/esm/namespaces/models/role-permission.model.js +2 -0
  295. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
  296. package/lib/esm/namespaces/models/role.model.js +2 -0
  297. package/lib/esm/namespaces/models/role.model.js.map +1 -1
  298. package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
  299. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
  300. package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
  301. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
  302. package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
  303. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
  304. package/lib/esm/namespaces/models/tenant.model.js +2 -0
  305. package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
  306. package/lib/esm/namespaces/models/user.model.js +2 -0
  307. package/lib/esm/namespaces/models/user.model.js.map +1 -1
  308. package/lib/esm/namespaces/rls/index.js +11 -0
  309. package/lib/esm/namespaces/rls/index.js.map +1 -0
  310. package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
  311. package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
  312. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
  313. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
  314. package/lib/esm/namespaces/rls/rls.constants.js +75 -0
  315. package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
  316. package/lib/esm/namespaces/rls/rls.template.js +711 -0
  317. package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
  318. package/lib/esm/namespaces/rls/rls.types.js +9 -0
  319. package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
  320. package/lib/esm/namespaces/rls/session-binding.js +65 -0
  321. package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
  322. package/lib/esm/namespaces/services/credential.service.js +322 -0
  323. package/lib/esm/namespaces/services/credential.service.js.map +1 -0
  324. package/lib/esm/namespaces/services/index.js +1 -0
  325. package/lib/esm/namespaces/services/index.js.map +1 -1
  326. package/lib/esm/namespaces/types.js +6 -0
  327. package/lib/esm/namespaces/types.js.map +1 -1
  328. package/lib/esm/redis/adapter.js +7 -1
  329. package/lib/esm/redis/adapter.js.map +1 -1
  330. package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
  331. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
  332. package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
  333. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
  334. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
  335. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
  336. package/lib/esm/secrets/core/SecretReference.js +1 -0
  337. package/lib/esm/secrets/core/SecretReference.js.map +1 -1
  338. package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
  339. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
  340. package/lib/esm/secrets/fs/FsSecretService.js +412 -0
  341. package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
  342. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
  343. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
  344. package/lib/esm/secrets/fs/index.js +10 -0
  345. package/lib/esm/secrets/fs/index.js.map +1 -0
  346. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
  347. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
  348. package/lib/esm/secrets/index.js +2 -0
  349. package/lib/esm/secrets/index.js.map +1 -1
  350. package/lib/esm/secrets/model/ModelSecretService.js +337 -42
  351. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
  352. package/lib/esm/secrets/model/Secret.js +86 -7
  353. package/lib/esm/secrets/model/Secret.js.map +1 -1
  354. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
  355. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
  356. package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
  357. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
  358. package/lib/esm/shared/environmentValue.js +24 -0
  359. package/lib/esm/shared/environmentValue.js.map +1 -1
  360. package/lib/esm/shared/http/HttpApiService.js +181 -0
  361. package/lib/esm/shared/http/HttpApiService.js.map +1 -0
  362. package/lib/esm/shared/http/hermeticBoot.js +146 -0
  363. package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
  364. package/lib/esm/shared/http/index.js +11 -0
  365. package/lib/esm/shared/http/index.js.map +1 -0
  366. package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
  367. package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
  368. package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
  369. package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
  370. package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
  371. package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
  372. package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
  373. package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
  374. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
  375. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
  376. package/lib/types/comms/email/EmailService.d.cts +184 -0
  377. package/lib/types/comms/email/EmailService.d.mts +184 -0
  378. package/lib/types/comms/email/index.d.cts +11 -0
  379. package/lib/types/comms/email/index.d.mts +11 -0
  380. package/lib/types/comms/email/mime.d.cts +84 -0
  381. package/lib/types/comms/email/mime.d.mts +84 -0
  382. package/lib/types/comms/email/smtp.d.cts +107 -0
  383. package/lib/types/comms/email/smtp.d.mts +107 -0
  384. package/lib/types/comms/environment.d.cts +84 -0
  385. package/lib/types/comms/environment.d.mts +84 -0
  386. package/lib/types/comms/gmail/GmailService.d.cts +190 -0
  387. package/lib/types/comms/gmail/GmailService.d.mts +190 -0
  388. package/lib/types/comms/gmail/index.d.cts +6 -0
  389. package/lib/types/comms/gmail/index.d.mts +6 -0
  390. package/lib/types/comms/index.d.cts +13 -0
  391. package/lib/types/comms/index.d.mts +13 -0
  392. package/lib/types/comms/slack/SlackService.d.cts +259 -0
  393. package/lib/types/comms/slack/SlackService.d.mts +259 -0
  394. package/lib/types/comms/slack/index.d.cts +6 -0
  395. package/lib/types/comms/slack/index.d.mts +6 -0
  396. package/lib/types/comms/teams/TeamsService.d.cts +172 -0
  397. package/lib/types/comms/teams/TeamsService.d.mts +172 -0
  398. package/lib/types/comms/teams/index.d.cts +6 -0
  399. package/lib/types/comms/teams/index.d.mts +6 -0
  400. package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
  401. package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
  402. package/lib/types/comms/telegram/index.d.cts +6 -0
  403. package/lib/types/comms/telegram/index.d.mts +6 -0
  404. package/lib/types/devops/environment.d.cts +62 -0
  405. package/lib/types/devops/environment.d.mts +62 -0
  406. package/lib/types/devops/github/GithubService.d.cts +287 -0
  407. package/lib/types/devops/github/GithubService.d.mts +287 -0
  408. package/lib/types/devops/github/index.d.cts +6 -0
  409. package/lib/types/devops/github/index.d.mts +6 -0
  410. package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
  411. package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
  412. package/lib/types/devops/gitlab/index.d.cts +6 -0
  413. package/lib/types/devops/gitlab/index.d.mts +6 -0
  414. package/lib/types/devops/index.d.cts +10 -0
  415. package/lib/types/devops/index.d.mts +10 -0
  416. package/lib/types/index.d.cts +2 -2
  417. package/lib/types/index.d.mts +2 -2
  418. package/lib/types/io/airtable/AirtableService.d.cts +268 -0
  419. package/lib/types/io/airtable/AirtableService.d.mts +268 -0
  420. package/lib/types/io/airtable/index.d.cts +6 -0
  421. package/lib/types/io/airtable/index.d.mts +6 -0
  422. package/lib/types/io/environment.d.cts +67 -0
  423. package/lib/types/io/environment.d.mts +67 -0
  424. package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
  425. package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
  426. package/lib/types/io/google-sheets/index.d.cts +6 -0
  427. package/lib/types/io/google-sheets/index.d.mts +6 -0
  428. package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
  429. package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
  430. package/lib/types/io/graphql/index.d.cts +6 -0
  431. package/lib/types/io/graphql/index.d.mts +6 -0
  432. package/lib/types/io/index.d.cts +12 -0
  433. package/lib/types/io/index.d.mts +12 -0
  434. package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
  435. package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
  436. package/lib/types/io/spreadsheet/index.d.cts +7 -0
  437. package/lib/types/io/spreadsheet/index.d.mts +7 -0
  438. package/lib/types/namespaces/index.d.cts +1 -0
  439. package/lib/types/namespaces/index.d.mts +1 -0
  440. package/lib/types/namespaces/models/credential.model.d.cts +23 -0
  441. package/lib/types/namespaces/models/credential.model.d.mts +23 -0
  442. package/lib/types/namespaces/models/index.d.cts +1 -0
  443. package/lib/types/namespaces/models/index.d.mts +1 -0
  444. package/lib/types/namespaces/rls/index.d.cts +10 -0
  445. package/lib/types/namespaces/rls/index.d.mts +10 -0
  446. package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
  447. package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
  448. package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
  449. package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
  450. package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
  451. package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
  452. package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
  453. package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
  454. package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
  455. package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
  456. package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
  457. package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
  458. package/lib/types/namespaces/services/credential.service.d.cts +175 -0
  459. package/lib/types/namespaces/services/credential.service.d.mts +175 -0
  460. package/lib/types/namespaces/services/index.d.cts +1 -0
  461. package/lib/types/namespaces/services/index.d.mts +1 -0
  462. package/lib/types/namespaces/types.d.cts +37 -0
  463. package/lib/types/namespaces/types.d.mts +37 -0
  464. package/lib/types/redis/adapter.d.cts +2 -0
  465. package/lib/types/redis/adapter.d.mts +2 -0
  466. package/lib/types/redis/types.d.cts +27 -2
  467. package/lib/types/redis/types.d.mts +27 -2
  468. package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
  469. package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
  470. package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
  471. package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
  472. package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
  473. package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
  474. package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
  475. package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
  476. package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
  477. package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
  478. package/lib/types/secrets/fs/index.d.cts +9 -0
  479. package/lib/types/secrets/fs/index.d.mts +9 -0
  480. package/lib/types/secrets/index.d.cts +2 -0
  481. package/lib/types/secrets/index.d.mts +2 -0
  482. package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
  483. package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
  484. package/lib/types/secrets/model/Secret.d.cts +44 -3
  485. package/lib/types/secrets/model/Secret.d.mts +44 -3
  486. package/lib/types/shared/environmentValue.d.cts +24 -0
  487. package/lib/types/shared/environmentValue.d.mts +24 -0
  488. package/lib/types/shared/http/HttpApiService.d.cts +193 -0
  489. package/lib/types/shared/http/HttpApiService.d.mts +193 -0
  490. package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
  491. package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
  492. package/lib/types/shared/http/index.d.cts +10 -0
  493. package/lib/types/shared/http/index.d.mts +10 -0
  494. package/package.json +180 -3
  495. package/sql/002_rls.sql +660 -15
  496. package/sql/004_credentials.sql +46 -0
@@ -3,7 +3,7 @@
3
3
  * @summary Secret core types.
4
4
  * @description Shared payload, metadata, option, and configuration types for secret service implementations.
5
5
  */
6
- export type SecretProvider = "model" | "memory" | "hashicorp-vault" | "aws-secrets-manager" | "azure-key-vault" | "gcp-secret-manager" | "1password";
6
+ export type SecretProvider = "model" | "memory" | "filesystem" | "hashicorp-vault" | "aws-secrets-manager" | "azure-key-vault" | "gcp-secret-manager" | "1password";
7
7
  export type SecretName = string;
8
8
  export type SecretPayload = string | Record<string, unknown> | Uint8Array;
9
9
  export interface SerializedSecretPayload {
@@ -47,6 +47,20 @@ export interface StoreSecretOptions {
47
47
  tags?: Record<string, string>;
48
48
  version?: string;
49
49
  ttl?: number;
50
+ /**
51
+ * @description Namespace tenant that owns the secret.
52
+ * @summary Stamped onto model-backed secrets so the namespace RLS policies
53
+ * can scope reads and writes without joining the credential row.
54
+ */
55
+ tenantId?: string;
56
+ /**
57
+ * @description Organizational unit that owns the secret.
58
+ */
59
+ orgUnitId?: string;
60
+ /**
61
+ * @description Principal that owns the secret.
62
+ */
63
+ ownerPrincipalId?: string;
50
64
  }
51
65
  export interface RetrieveSecretOptions {
52
66
  version?: string;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module integrations/secrets/fs/environment
3
+ * @summary Environment configuration slice for the filesystem secret service.
4
+ * @description Accumulates the `secrets.fs` slice into the shared
5
+ * `SecretEnvironment` so `{@link FsSecretService}` can resolve its
6
+ * `rootPath`, `keySecret`, and `keyId` from the process Environment without
7
+ * explicit boot arguments. A missing `keySecret` disables the
8
+ * Environment-derived configuration path.
9
+ */
10
+ /**
11
+ * @description Environment-backed configuration for the filesystem secret service
12
+ * @summary Mirrors {@link FsSecretServiceConfig} with every field optional:
13
+ * `rootPath` and `keyId` fall back to their defaults, while an empty
14
+ * `keySecret` means the slice is not configured.
15
+ */
16
+ export interface FsSecretEnvironmentConfig {
17
+ /** @description Directory holding the secret envelopes; defaults to `.decaf/secrets`. */
18
+ rootPath?: string;
19
+ /** @description Master secret used to derive per-secret encryption keys. */
20
+ keySecret?: string;
21
+ /** @description Encryption key id recorded in envelopes; defaults to `fs-default-key`. */
22
+ keyId?: string;
23
+ }
24
+ /**
25
+ * @description Shape of the accumulated Environment containing the `secrets.fs` slice
26
+ * @summary Used to type the `SecretEnvironment.accumulate` call below so the
27
+ * `secrets.fs` accessor is fully typed.
28
+ */
29
+ export interface FsSecretEnvironmentShape {
30
+ secrets: {
31
+ fs: FsSecretEnvironmentConfig;
32
+ };
33
+ }
34
+ /**
35
+ * @description The accumulated Environment exposing the `secrets.fs` slice
36
+ * @summary Access it as `FsSecretEnvironment.secrets.fs.{rootPath,keySecret,keyId}`.
37
+ */
38
+ export declare const FsSecretEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
39
+ app: string | undefined;
40
+ } & import("@decaf-ts/logging").LoggingConfig<object> & {
41
+ env: any;
42
+ } & import("..").SecretCommonEnvironmentShape & FsSecretEnvironmentShape>;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module integrations/secrets/fs/environment
3
+ * @summary Environment configuration slice for the filesystem secret service.
4
+ * @description Accumulates the `secrets.fs` slice into the shared
5
+ * `SecretEnvironment` so `{@link FsSecretService}` can resolve its
6
+ * `rootPath`, `keySecret`, and `keyId` from the process Environment without
7
+ * explicit boot arguments. A missing `keySecret` disables the
8
+ * Environment-derived configuration path.
9
+ */
10
+ /**
11
+ * @description Environment-backed configuration for the filesystem secret service
12
+ * @summary Mirrors {@link FsSecretServiceConfig} with every field optional:
13
+ * `rootPath` and `keyId` fall back to their defaults, while an empty
14
+ * `keySecret` means the slice is not configured.
15
+ */
16
+ export interface FsSecretEnvironmentConfig {
17
+ /** @description Directory holding the secret envelopes; defaults to `.decaf/secrets`. */
18
+ rootPath?: string;
19
+ /** @description Master secret used to derive per-secret encryption keys. */
20
+ keySecret?: string;
21
+ /** @description Encryption key id recorded in envelopes; defaults to `fs-default-key`. */
22
+ keyId?: string;
23
+ }
24
+ /**
25
+ * @description Shape of the accumulated Environment containing the `secrets.fs` slice
26
+ * @summary Used to type the `SecretEnvironment.accumulate` call below so the
27
+ * `secrets.fs` accessor is fully typed.
28
+ */
29
+ export interface FsSecretEnvironmentShape {
30
+ secrets: {
31
+ fs: FsSecretEnvironmentConfig;
32
+ };
33
+ }
34
+ /**
35
+ * @description The accumulated Environment exposing the `secrets.fs` slice
36
+ * @summary Access it as `FsSecretEnvironment.secrets.fs.{rootPath,keySecret,keyId}`.
37
+ */
38
+ export declare const FsSecretEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
39
+ app: string | undefined;
40
+ } & import("@decaf-ts/logging").LoggingConfig<object> & {
41
+ env: any;
42
+ } & import("..").SecretCommonEnvironmentShape & FsSecretEnvironmentShape>;
@@ -0,0 +1,207 @@
1
+ import { ContextualArgs, MaybeContextualArg } from "@decaf-ts/core";
2
+ import { ClientBasedSecretService, DeleteSecretOptions, ExistsSecretOptions, ListSecretsOptions, RetrieveSecretOptions, RotateSecretOptions, SecretMetadata, SecretMetadataOptions, SecretName, SecretPayload, SecretProvider, SecretReference, StoreSecretOptions } from "../core/index.d.cts";
3
+ import { FsSecretServiceConfig } from "./FsSecretServiceConfig.d.cts";
4
+ /**
5
+ * @description Filesystem-backed encrypted secret service
6
+ * @summary Stores each secret as an isolated JSON envelope file
7
+ * (`<normalizedName>.json`) inside a private root directory (default
8
+ * `.decaf/secrets`, mode `0o700`; envelope files are written with mode
9
+ * `0o600` through a temp-file-then-rename cycle). The master `keySecret` is
10
+ * required — boot fails with a {@link ValidationError} when neither the
11
+ * `secrets.fs.keySecret` Environment slice nor an explicit config supplies
12
+ * it. Listing and per-secret metadata are intentionally unsupported and
13
+ * throw a `SECRET_UNSUPPORTED_OPERATION` {@link SecretError}, because the
14
+ * filesystem store is designed as a minimal bootstrap sink (see
15
+ * {@link InfraCredentialBootstrap}).
16
+ *
17
+ * Configuration is resolved from the `secrets.fs` slice or an explicit boot
18
+ * config.
19
+ * @class FsSecretService
20
+ * @category Secrets
21
+ * @example
22
+ * ```ts
23
+ * import { FsSecretService } from "@decaf-ts/integrations/secrets";
24
+ *
25
+ * const fsSecrets = await new FsSecretService().boot({
26
+ * keySecret: "master-key",
27
+ * });
28
+ * await fsSecrets.store("my-secret", { value: "s3cr3t" });
29
+ * const payload = await fsSecrets.retrieve<{ value: string }>("my-secret");
30
+ * ```
31
+ * @mermaid
32
+ * sequenceDiagram
33
+ * autonumber
34
+ * participant Caller
35
+ * participant FS as FsSecretService
36
+ * participant Disk as rootPath/*.json
37
+ * Caller->>FS: store(name, value)
38
+ * activate FS
39
+ * FS->>FS: normalize + serialize + encrypt
40
+ * FS->>Disk: writeEnvelope (temp + rename, 0o600)
41
+ * FS-->>Caller: SecretReference
42
+ * Caller->>FS: retrieve(nameOrRef)
43
+ * FS->>Disk: readEnvelope
44
+ * alt missing file
45
+ * FS--xCaller: NotFoundError
46
+ * else version mismatch
47
+ * FS--xCaller: NotFoundError
48
+ * else decrypt/parse failure
49
+ * FS--xCaller: SecretError
50
+ * else success
51
+ * FS-->>Caller: SecretPayload
52
+ * end
53
+ * deactivate FS
54
+ */
55
+ export declare class FsSecretService extends ClientBasedSecretService<void, FsSecretServiceConfig> {
56
+ readonly provider: SecretProvider;
57
+ private cryptoService?;
58
+ constructor();
59
+ /**
60
+ * @description Builds the filesystem secret configuration from the Environment
61
+ * @summary Reads the `secrets.fs` Environment slice and returns a
62
+ * {@link FsSecretServiceConfig} when a `keySecret` is configured, applying the
63
+ * default root path and key id otherwise; returns `undefined` when the slice
64
+ * carries no `keySecret`, letting boot fall back to explicit arguments.
65
+ * @returns {FsSecretServiceConfig | undefined} The Environment-derived configuration, or `undefined`.
66
+ * @override
67
+ */
68
+ protected configFromEnvironment(): FsSecretServiceConfig | undefined;
69
+ /**
70
+ * @description Creates the private store directory and the crypto service
71
+ * @summary Resolves the configuration (Environment slice merged with explicit
72
+ * args), requires a `keySecret`, resolves and creates `rootPath` with mode
73
+ * `0o700`, and boots a fresh `CryptoService`. Returns the resolved config with
74
+ * a `void` client (no external connection is needed).
75
+ * @param {ContextualArgs} args - Optional decaf `Context`/configuration arguments.
76
+ * @returns {Promise<{config: FsSecretServiceConfig, client: void}>} The resolved configuration and a `void` client.
77
+ * @throws {ValidationError} When no `keySecret` is available from Environment or arguments.
78
+ */
79
+ initialize(...args: ContextualArgs<any>): Promise<{
80
+ config: FsSecretServiceConfig;
81
+ client: void;
82
+ }>;
83
+ /**
84
+ * @description Encrypts and writes a secret envelope to the store
85
+ * @summary Normalizes the name, serializes the payload, derives the
86
+ * encryption key from the master `keySecret`, encrypts with the configured
87
+ * key id, and atomically writes the envelope file. Versioning is expressed
88
+ * through the envelope's `version` field.
89
+ * @template T - The secret payload type.
90
+ * @param {SecretName} name - The secret name (normalized before use).
91
+ * @param {T} value - The payload to encrypt and store.
92
+ * @param {StoreSecretOptions} [options] - Optional content type, tags, and version.
93
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
94
+ * @returns {Promise<SecretReference>} A reference pointing at the envelope file.
95
+ */
96
+ store<T extends SecretPayload = SecretPayload>(name: SecretName, value: T, options?: StoreSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
97
+ /**
98
+ * @description Reads, decrypts, and deserializes a stored secret
99
+ * @summary Loads the envelope, validates the requested version when one is
100
+ * supplied (either via options or the reference), re-derives the key using the
101
+ * envelope salt, and decrypts the payload. Failures surface as
102
+ * `SECRET_DECRYPTION_FAILED`/`SECRET_DESERIALIZATION_FAILED`
103
+ * {@link SecretError}s; a missing envelope throws {@link NotFoundError}.
104
+ * @template T - The secret payload type.
105
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
106
+ * @param {RetrieveSecretOptions} [options] - Optional version filter.
107
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
108
+ * @returns {Promise<T>} The decrypted payload.
109
+ * @throws {NotFoundError} When the secret (or requested version) does not exist.
110
+ * @throws {SecretError} On decryption or deserialization failures.
111
+ */
112
+ retrieve<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, options?: RetrieveSecretOptions, ...args: MaybeContextualArg<any>): Promise<T>;
113
+ /**
114
+ * @description Removes the envelope file for a secret
115
+ * @summary Deletes `<name>.json` from the root path (`force: true`, so a
116
+ * missing file is not an error); a filesystem failure surfaces as a
117
+ * `SECRET_PROVIDER_UNAVAILABLE` {@link SecretError}.
118
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
119
+ * @param {DeleteSecretOptions} [options] - Unused; accepted for interface parity.
120
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
121
+ * @returns {Promise<void>} Resolves once the file is removed.
122
+ * @throws {SecretError} When the file cannot be deleted.
123
+ */
124
+ delete(nameOrRef: SecretName | SecretReference, options?: DeleteSecretOptions, ...args: MaybeContextualArg<any>): Promise<void>;
125
+ /**
126
+ * @description Checks whether a secret exists (optionally at a specific version)
127
+ * @summary Reads the envelope and compares the requested version, if any,
128
+ * against the stored one; a {@link NotFoundError} from the read maps to
129
+ * `false`.
130
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
131
+ * @param {ExistsSecretOptions} [options] - Optional version filter.
132
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
133
+ * @returns {Promise<boolean>} `true` when the secret exists and matches the version, if given.
134
+ */
135
+ exists(nameOrRef: SecretName | SecretReference, options?: ExistsSecretOptions, ...args: MaybeContextualArg<any>): Promise<boolean>;
136
+ /**
137
+ * @description Unsupported: the filesystem store does not expose listings
138
+ * @summary Always throws to keep the filesystem sink minimal; use
139
+ * {@link InfraCredentialBootstrap} to track seeded references instead.
140
+ * @param {ListSecretsOptions} [options] - Unused.
141
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
142
+ * @returns {Promise<SecretMetadata[]>} Never resolves.
143
+ * @throws {SecretError} Always, with `SECRET_UNSUPPORTED_OPERATION`.
144
+ */
145
+ list(options?: ListSecretsOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata[]>;
146
+ /**
147
+ * @description Unsupported: the filesystem store does not expose metadata
148
+ * @summary Always throws; metadata is embedded in the envelope, which callers
149
+ * are not expected to read directly.
150
+ * @param {SecretName | SecretReference} nameOrRef - Unused.
151
+ * @param {SecretMetadataOptions} [options] - Unused.
152
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
153
+ * @returns {Promise<SecretMetadata | undefined>} Never resolves.
154
+ * @throws {SecretError} Always, with `SECRET_UNSUPPORTED_OPERATION`.
155
+ */
156
+ metadata(nameOrRef: SecretName | SecretReference, options?: SecretMetadataOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata | undefined>;
157
+ /**
158
+ * @description Overwrites a secret with a new payload and version
159
+ * @summary Re-stores the secret under the same normalized name, tagging the
160
+ * new envelope with `options.newVersion` (the old envelope file is replaced).
161
+ * @template T - The secret payload type.
162
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
163
+ * @param {T} value - The new payload.
164
+ * @param {RotateSecretOptions} [options] - Optional `newVersion` tag.
165
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
166
+ * @returns {Promise<SecretReference>} A reference to the rewritten envelope.
167
+ */
168
+ rotate<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, value: T, options?: RotateSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
169
+ /**
170
+ * @description Lazily resolves the booted `CryptoService`
171
+ * @summary Throws an {@link InternalError} when accessed before
172
+ * `initialize()`/`boot()`, which is the only way the crypto service is
173
+ * created.
174
+ * @returns {CryptoService} The booted crypto service.
175
+ * @throws {InternalError} When the service is not initialized.
176
+ */
177
+ private get crypto();
178
+ /**
179
+ * @description Resolves the envelope file path for a normalized secret name
180
+ * @param {string} name - The normalized secret name.
181
+ * @returns {string} The absolute envelope path inside the configured root.
182
+ */
183
+ private fileFor;
184
+ /**
185
+ * @description Reads and parses an envelope file
186
+ * @summary A missing file maps to {@link NotFoundError}; filesystem failures
187
+ * surface as `SECRET_PROVIDER_UNAVAILABLE` and JSON parse failures as
188
+ * `SECRET_DESERIALIZATION_FAILED` {@link SecretError}s.
189
+ * @param {string} name - The normalized secret name.
190
+ * @returns {Promise<FsSecretEnvelope>} The parsed envelope.
191
+ * @throws {NotFoundError} When the envelope file does not exist.
192
+ * @throws {SecretError} On read or parse failures.
193
+ */
194
+ private readEnvelope;
195
+ /**
196
+ * @description Atomically writes an envelope file with private permissions
197
+ * @summary Writes to a UUID-suffixed temp file with mode `0o600`, then
198
+ * renames it over the target and re-applies the mode; on failure the temp
199
+ * file is removed and a `SECRET_PROVIDER_UNAVAILABLE` {@link SecretError} is
200
+ * thrown.
201
+ * @param {string} name - The normalized secret name.
202
+ * @param {FsSecretEnvelope} envelope - The envelope to persist.
203
+ * @returns {Promise<void>} Resolves once the envelope is durably written.
204
+ * @throws {SecretError} When the write/rename cycle fails.
205
+ */
206
+ private writeEnvelope;
207
+ }
@@ -0,0 +1,207 @@
1
+ import { ContextualArgs, MaybeContextualArg } from "@decaf-ts/core";
2
+ import { ClientBasedSecretService, DeleteSecretOptions, ExistsSecretOptions, ListSecretsOptions, RetrieveSecretOptions, RotateSecretOptions, SecretMetadata, SecretMetadataOptions, SecretName, SecretPayload, SecretProvider, SecretReference, StoreSecretOptions } from "../core/index.d.mts";
3
+ import { FsSecretServiceConfig } from "./FsSecretServiceConfig.d.mts";
4
+ /**
5
+ * @description Filesystem-backed encrypted secret service
6
+ * @summary Stores each secret as an isolated JSON envelope file
7
+ * (`<normalizedName>.json`) inside a private root directory (default
8
+ * `.decaf/secrets`, mode `0o700`; envelope files are written with mode
9
+ * `0o600` through a temp-file-then-rename cycle). The master `keySecret` is
10
+ * required — boot fails with a {@link ValidationError} when neither the
11
+ * `secrets.fs.keySecret` Environment slice nor an explicit config supplies
12
+ * it. Listing and per-secret metadata are intentionally unsupported and
13
+ * throw a `SECRET_UNSUPPORTED_OPERATION` {@link SecretError}, because the
14
+ * filesystem store is designed as a minimal bootstrap sink (see
15
+ * {@link InfraCredentialBootstrap}).
16
+ *
17
+ * Configuration is resolved from the `secrets.fs` slice or an explicit boot
18
+ * config.
19
+ * @class FsSecretService
20
+ * @category Secrets
21
+ * @example
22
+ * ```ts
23
+ * import { FsSecretService } from "@decaf-ts/integrations/secrets";
24
+ *
25
+ * const fsSecrets = await new FsSecretService().boot({
26
+ * keySecret: "master-key",
27
+ * });
28
+ * await fsSecrets.store("my-secret", { value: "s3cr3t" });
29
+ * const payload = await fsSecrets.retrieve<{ value: string }>("my-secret");
30
+ * ```
31
+ * @mermaid
32
+ * sequenceDiagram
33
+ * autonumber
34
+ * participant Caller
35
+ * participant FS as FsSecretService
36
+ * participant Disk as rootPath/*.json
37
+ * Caller->>FS: store(name, value)
38
+ * activate FS
39
+ * FS->>FS: normalize + serialize + encrypt
40
+ * FS->>Disk: writeEnvelope (temp + rename, 0o600)
41
+ * FS-->>Caller: SecretReference
42
+ * Caller->>FS: retrieve(nameOrRef)
43
+ * FS->>Disk: readEnvelope
44
+ * alt missing file
45
+ * FS--xCaller: NotFoundError
46
+ * else version mismatch
47
+ * FS--xCaller: NotFoundError
48
+ * else decrypt/parse failure
49
+ * FS--xCaller: SecretError
50
+ * else success
51
+ * FS-->>Caller: SecretPayload
52
+ * end
53
+ * deactivate FS
54
+ */
55
+ export declare class FsSecretService extends ClientBasedSecretService<void, FsSecretServiceConfig> {
56
+ readonly provider: SecretProvider;
57
+ private cryptoService?;
58
+ constructor();
59
+ /**
60
+ * @description Builds the filesystem secret configuration from the Environment
61
+ * @summary Reads the `secrets.fs` Environment slice and returns a
62
+ * {@link FsSecretServiceConfig} when a `keySecret` is configured, applying the
63
+ * default root path and key id otherwise; returns `undefined` when the slice
64
+ * carries no `keySecret`, letting boot fall back to explicit arguments.
65
+ * @returns {FsSecretServiceConfig | undefined} The Environment-derived configuration, or `undefined`.
66
+ * @override
67
+ */
68
+ protected configFromEnvironment(): FsSecretServiceConfig | undefined;
69
+ /**
70
+ * @description Creates the private store directory and the crypto service
71
+ * @summary Resolves the configuration (Environment slice merged with explicit
72
+ * args), requires a `keySecret`, resolves and creates `rootPath` with mode
73
+ * `0o700`, and boots a fresh `CryptoService`. Returns the resolved config with
74
+ * a `void` client (no external connection is needed).
75
+ * @param {ContextualArgs} args - Optional decaf `Context`/configuration arguments.
76
+ * @returns {Promise<{config: FsSecretServiceConfig, client: void}>} The resolved configuration and a `void` client.
77
+ * @throws {ValidationError} When no `keySecret` is available from Environment or arguments.
78
+ */
79
+ initialize(...args: ContextualArgs<any>): Promise<{
80
+ config: FsSecretServiceConfig;
81
+ client: void;
82
+ }>;
83
+ /**
84
+ * @description Encrypts and writes a secret envelope to the store
85
+ * @summary Normalizes the name, serializes the payload, derives the
86
+ * encryption key from the master `keySecret`, encrypts with the configured
87
+ * key id, and atomically writes the envelope file. Versioning is expressed
88
+ * through the envelope's `version` field.
89
+ * @template T - The secret payload type.
90
+ * @param {SecretName} name - The secret name (normalized before use).
91
+ * @param {T} value - The payload to encrypt and store.
92
+ * @param {StoreSecretOptions} [options] - Optional content type, tags, and version.
93
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
94
+ * @returns {Promise<SecretReference>} A reference pointing at the envelope file.
95
+ */
96
+ store<T extends SecretPayload = SecretPayload>(name: SecretName, value: T, options?: StoreSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
97
+ /**
98
+ * @description Reads, decrypts, and deserializes a stored secret
99
+ * @summary Loads the envelope, validates the requested version when one is
100
+ * supplied (either via options or the reference), re-derives the key using the
101
+ * envelope salt, and decrypts the payload. Failures surface as
102
+ * `SECRET_DECRYPTION_FAILED`/`SECRET_DESERIALIZATION_FAILED`
103
+ * {@link SecretError}s; a missing envelope throws {@link NotFoundError}.
104
+ * @template T - The secret payload type.
105
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
106
+ * @param {RetrieveSecretOptions} [options] - Optional version filter.
107
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
108
+ * @returns {Promise<T>} The decrypted payload.
109
+ * @throws {NotFoundError} When the secret (or requested version) does not exist.
110
+ * @throws {SecretError} On decryption or deserialization failures.
111
+ */
112
+ retrieve<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, options?: RetrieveSecretOptions, ...args: MaybeContextualArg<any>): Promise<T>;
113
+ /**
114
+ * @description Removes the envelope file for a secret
115
+ * @summary Deletes `<name>.json` from the root path (`force: true`, so a
116
+ * missing file is not an error); a filesystem failure surfaces as a
117
+ * `SECRET_PROVIDER_UNAVAILABLE` {@link SecretError}.
118
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
119
+ * @param {DeleteSecretOptions} [options] - Unused; accepted for interface parity.
120
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
121
+ * @returns {Promise<void>} Resolves once the file is removed.
122
+ * @throws {SecretError} When the file cannot be deleted.
123
+ */
124
+ delete(nameOrRef: SecretName | SecretReference, options?: DeleteSecretOptions, ...args: MaybeContextualArg<any>): Promise<void>;
125
+ /**
126
+ * @description Checks whether a secret exists (optionally at a specific version)
127
+ * @summary Reads the envelope and compares the requested version, if any,
128
+ * against the stored one; a {@link NotFoundError} from the read maps to
129
+ * `false`.
130
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
131
+ * @param {ExistsSecretOptions} [options] - Optional version filter.
132
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
133
+ * @returns {Promise<boolean>} `true` when the secret exists and matches the version, if given.
134
+ */
135
+ exists(nameOrRef: SecretName | SecretReference, options?: ExistsSecretOptions, ...args: MaybeContextualArg<any>): Promise<boolean>;
136
+ /**
137
+ * @description Unsupported: the filesystem store does not expose listings
138
+ * @summary Always throws to keep the filesystem sink minimal; use
139
+ * {@link InfraCredentialBootstrap} to track seeded references instead.
140
+ * @param {ListSecretsOptions} [options] - Unused.
141
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
142
+ * @returns {Promise<SecretMetadata[]>} Never resolves.
143
+ * @throws {SecretError} Always, with `SECRET_UNSUPPORTED_OPERATION`.
144
+ */
145
+ list(options?: ListSecretsOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata[]>;
146
+ /**
147
+ * @description Unsupported: the filesystem store does not expose metadata
148
+ * @summary Always throws; metadata is embedded in the envelope, which callers
149
+ * are not expected to read directly.
150
+ * @param {SecretName | SecretReference} nameOrRef - Unused.
151
+ * @param {SecretMetadataOptions} [options] - Unused.
152
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
153
+ * @returns {Promise<SecretMetadata | undefined>} Never resolves.
154
+ * @throws {SecretError} Always, with `SECRET_UNSUPPORTED_OPERATION`.
155
+ */
156
+ metadata(nameOrRef: SecretName | SecretReference, options?: SecretMetadataOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata | undefined>;
157
+ /**
158
+ * @description Overwrites a secret with a new payload and version
159
+ * @summary Re-stores the secret under the same normalized name, tagging the
160
+ * new envelope with `options.newVersion` (the old envelope file is replaced).
161
+ * @template T - The secret payload type.
162
+ * @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
163
+ * @param {T} value - The new payload.
164
+ * @param {RotateSecretOptions} [options] - Optional `newVersion` tag.
165
+ * @param {MaybeContextualArg} args - Optional trailing decaf `Context`.
166
+ * @returns {Promise<SecretReference>} A reference to the rewritten envelope.
167
+ */
168
+ rotate<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, value: T, options?: RotateSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
169
+ /**
170
+ * @description Lazily resolves the booted `CryptoService`
171
+ * @summary Throws an {@link InternalError} when accessed before
172
+ * `initialize()`/`boot()`, which is the only way the crypto service is
173
+ * created.
174
+ * @returns {CryptoService} The booted crypto service.
175
+ * @throws {InternalError} When the service is not initialized.
176
+ */
177
+ private get crypto();
178
+ /**
179
+ * @description Resolves the envelope file path for a normalized secret name
180
+ * @param {string} name - The normalized secret name.
181
+ * @returns {string} The absolute envelope path inside the configured root.
182
+ */
183
+ private fileFor;
184
+ /**
185
+ * @description Reads and parses an envelope file
186
+ * @summary A missing file maps to {@link NotFoundError}; filesystem failures
187
+ * surface as `SECRET_PROVIDER_UNAVAILABLE` and JSON parse failures as
188
+ * `SECRET_DESERIALIZATION_FAILED` {@link SecretError}s.
189
+ * @param {string} name - The normalized secret name.
190
+ * @returns {Promise<FsSecretEnvelope>} The parsed envelope.
191
+ * @throws {NotFoundError} When the envelope file does not exist.
192
+ * @throws {SecretError} On read or parse failures.
193
+ */
194
+ private readEnvelope;
195
+ /**
196
+ * @description Atomically writes an envelope file with private permissions
197
+ * @summary Writes to a UUID-suffixed temp file with mode `0o600`, then
198
+ * renames it over the target and re-applies the mode; on failure the temp
199
+ * file is removed and a `SECRET_PROVIDER_UNAVAILABLE` {@link SecretError} is
200
+ * thrown.
201
+ * @param {string} name - The normalized secret name.
202
+ * @param {FsSecretEnvelope} envelope - The envelope to persist.
203
+ * @returns {Promise<void>} Resolves once the envelope is durably written.
204
+ * @throws {SecretError} When the write/rename cycle fails.
205
+ */
206
+ private writeEnvelope;
207
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @module integrations/secrets/fs/config
3
+ * @summary Configuration contract for the filesystem secret service.
4
+ * @description Defines {@link FsSecretServiceConfig} — the boot configuration
5
+ * accepted by `{@link FsSecretService}` and its node counterpart — plus the
6
+ * `DEFAULT_FS_SECRET_ROOT` and `DEFAULT_FS_SECRET_KEY_ID` fallbacks applied
7
+ * when the `secrets.fs` Environment slice or explicit arguments omit them.
8
+ */
9
+ import type { SecretServiceConfig } from "../core/index.d.cts";
10
+ /**
11
+ * @description Default root directory for the filesystem secret store
12
+ * @summary Relative paths are resolved against the process working directory
13
+ * during `FsSecretService.initialize`.
14
+ */
15
+ export declare const DEFAULT_FS_SECRET_ROOT = ".decaf/secrets";
16
+ /**
17
+ * @description Default encryption key id for filesystem secret envelopes
18
+ * @summary Recorded in each envelope's `encryption.keyId` when the
19
+ * configuration does not name a key explicitly.
20
+ */
21
+ export declare const DEFAULT_FS_SECRET_KEY_ID = "fs-default-key";
22
+ /**
23
+ * @description Boot configuration for the filesystem secret service
24
+ * @summary The `keySecret` is mandatory — it is the master secret from which
25
+ * per-secret encryption keys are derived; `rootPath` and `keyId` fall back to
26
+ * {@link DEFAULT_FS_SECRET_ROOT} and {@link DEFAULT_FS_SECRET_KEY_ID}.
27
+ */
28
+ export interface FsSecretServiceConfig extends SecretServiceConfig {
29
+ /** @description Fixed provider discriminator for the filesystem backend. */
30
+ provider: "filesystem";
31
+ /** @description Directory holding the `<name>.json` secret envelopes (created with mode `0o700`). */
32
+ rootPath: string;
33
+ /** @description Master secret used to derive per-secret encryption keys. */
34
+ keySecret: string;
35
+ /** @description Optional encryption key id recorded in envelopes; defaults to `fs-default-key`. */
36
+ keyId?: string;
37
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @module integrations/secrets/fs/config
3
+ * @summary Configuration contract for the filesystem secret service.
4
+ * @description Defines {@link FsSecretServiceConfig} — the boot configuration
5
+ * accepted by `{@link FsSecretService}` and its node counterpart — plus the
6
+ * `DEFAULT_FS_SECRET_ROOT` and `DEFAULT_FS_SECRET_KEY_ID` fallbacks applied
7
+ * when the `secrets.fs` Environment slice or explicit arguments omit them.
8
+ */
9
+ import type { SecretServiceConfig } from "../core/index.d.mts";
10
+ /**
11
+ * @description Default root directory for the filesystem secret store
12
+ * @summary Relative paths are resolved against the process working directory
13
+ * during `FsSecretService.initialize`.
14
+ */
15
+ export declare const DEFAULT_FS_SECRET_ROOT = ".decaf/secrets";
16
+ /**
17
+ * @description Default encryption key id for filesystem secret envelopes
18
+ * @summary Recorded in each envelope's `encryption.keyId` when the
19
+ * configuration does not name a key explicitly.
20
+ */
21
+ export declare const DEFAULT_FS_SECRET_KEY_ID = "fs-default-key";
22
+ /**
23
+ * @description Boot configuration for the filesystem secret service
24
+ * @summary The `keySecret` is mandatory — it is the master secret from which
25
+ * per-secret encryption keys are derived; `rootPath` and `keyId` fall back to
26
+ * {@link DEFAULT_FS_SECRET_ROOT} and {@link DEFAULT_FS_SECRET_KEY_ID}.
27
+ */
28
+ export interface FsSecretServiceConfig extends SecretServiceConfig {
29
+ /** @description Fixed provider discriminator for the filesystem backend. */
30
+ provider: "filesystem";
31
+ /** @description Directory holding the `<name>.json` secret envelopes (created with mode `0o700`). */
32
+ rootPath: string;
33
+ /** @description Master secret used to derive per-secret encryption keys. */
34
+ keySecret: string;
35
+ /** @description Optional encryption key id recorded in envelopes; defaults to `fs-default-key`. */
36
+ keyId?: string;
37
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @module integrations/secrets/fs
3
+ * @summary Filesystem secret service exports.
4
+ * @description Re-exports the filesystem secret service, its node variant,
5
+ * configuration contract, and Environment slice.
6
+ */
7
+ export * from "./FsSecretServiceConfig.d.cts";
8
+ export * from "./FsSecretEnvironment.d.cts";
9
+ export * from "./FsSecretService.d.cts";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @module integrations/secrets/fs
3
+ * @summary Filesystem secret service exports.
4
+ * @description Re-exports the filesystem secret service, its node variant,
5
+ * configuration contract, and Environment slice.
6
+ */
7
+ export * from "./FsSecretServiceConfig.d.mts";
8
+ export * from "./FsSecretEnvironment.d.mts";
9
+ export * from "./FsSecretService.d.mts";
@@ -5,3 +5,5 @@
5
5
  */
6
6
  export * from "./core/index.d.cts";
7
7
  export * from "./model/index.d.cts";
8
+ export * from "./fs/index.d.cts";
9
+ export * from "./InfraCredentialBootstrap.d.cts";
@@ -5,3 +5,5 @@
5
5
  */
6
6
  export * from "./core/index.d.mts";
7
7
  export * from "./model/index.d.mts";
8
+ export * from "./fs/index.d.mts";
9
+ export * from "./InfraCredentialBootstrap.d.mts";