@effect-auth/core 0.1.0-alpha.15 → 0.1.0-alpha.18

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 (627) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +332 -131
  3. package/dist/AbuseProtection.d.ts +100 -0
  4. package/dist/AbuseProtection.d.ts.map +1 -0
  5. package/dist/AbuseProtection.js +71 -0
  6. package/dist/AbuseProtection.js.map +1 -0
  7. package/dist/AccessGrant.d.ts +344 -0
  8. package/dist/AccessGrant.d.ts.map +1 -0
  9. package/dist/AccessGrant.js +687 -0
  10. package/dist/AccessGrant.js.map +1 -0
  11. package/dist/ApiKey.d.ts +2 -14
  12. package/dist/ApiKey.d.ts.map +1 -1
  13. package/dist/ApiKey.js +36 -27
  14. package/dist/ApiKey.js.map +1 -1
  15. package/dist/Assurance.d.ts +415 -0
  16. package/dist/Assurance.d.ts.map +1 -0
  17. package/dist/Assurance.js +764 -0
  18. package/dist/Assurance.js.map +1 -0
  19. package/dist/AtomicPlanExecutor.d.ts +28 -0
  20. package/dist/AtomicPlanExecutor.d.ts.map +1 -0
  21. package/dist/AtomicPlanExecutor.js +5 -0
  22. package/dist/AtomicPlanExecutor.js.map +1 -0
  23. package/dist/AuditLog.d.ts +2314 -52
  24. package/dist/AuditLog.d.ts.map +1 -1
  25. package/dist/AuditLog.js +511 -33
  26. package/dist/AuditLog.js.map +1 -1
  27. package/dist/AuthConfig.d.ts.map +1 -1
  28. package/dist/AuthConfig.js.map +1 -1
  29. package/dist/AuthFlow.d.ts +326 -220
  30. package/dist/AuthFlow.d.ts.map +1 -1
  31. package/dist/AuthFlow.js +611 -263
  32. package/dist/AuthFlow.js.map +1 -1
  33. package/dist/AuthKernel.d.ts +1 -1
  34. package/dist/AuthRateLimit.d.ts +96 -0
  35. package/dist/AuthRateLimit.d.ts.map +1 -0
  36. package/dist/AuthRateLimit.js +212 -0
  37. package/dist/AuthRateLimit.js.map +1 -0
  38. package/dist/Challenge.d.ts +0 -3
  39. package/dist/Challenge.d.ts.map +1 -1
  40. package/dist/Challenge.js +1 -4
  41. package/dist/Challenge.js.map +1 -1
  42. package/dist/Client.d.ts +205 -10
  43. package/dist/Client.d.ts.map +1 -1
  44. package/dist/Client.js +397 -16
  45. package/dist/Client.js.map +1 -1
  46. package/dist/CloudflareTurnstile.d.ts +28 -0
  47. package/dist/CloudflareTurnstile.d.ts.map +1 -0
  48. package/dist/CloudflareTurnstile.js +205 -0
  49. package/dist/CloudflareTurnstile.js.map +1 -0
  50. package/dist/Crypto.d.ts +0 -3
  51. package/dist/Crypto.d.ts.map +1 -1
  52. package/dist/Crypto.js +5 -7
  53. package/dist/Crypto.js.map +1 -1
  54. package/dist/DelegatedAccessStorageMigrations.d.ts +7 -0
  55. package/dist/DelegatedAccessStorageMigrations.d.ts.map +1 -0
  56. package/dist/DelegatedAccessStorageMigrations.js +159 -0
  57. package/dist/DelegatedAccessStorageMigrations.js.map +1 -0
  58. package/dist/DisposableEmailDomains.d.ts +19 -0
  59. package/dist/DisposableEmailDomains.d.ts.map +1 -0
  60. package/dist/DisposableEmailDomains.js +85 -0
  61. package/dist/DisposableEmailDomains.js.map +1 -0
  62. package/dist/DomainVerification.d.ts +0 -9
  63. package/dist/DomainVerification.d.ts.map +1 -1
  64. package/dist/DomainVerification.js +36 -22
  65. package/dist/DomainVerification.js.map +1 -1
  66. package/dist/DrizzleBunSqliteStorage.d.ts +18 -0
  67. package/dist/DrizzleBunSqliteStorage.d.ts.map +1 -0
  68. package/dist/DrizzleBunSqliteStorage.js +11 -0
  69. package/dist/DrizzleBunSqliteStorage.js.map +1 -0
  70. package/dist/DrizzleD1SqliteStorage.d.ts +28 -0
  71. package/dist/DrizzleD1SqliteStorage.d.ts.map +1 -0
  72. package/dist/DrizzleD1SqliteStorage.js +10 -0
  73. package/dist/DrizzleD1SqliteStorage.js.map +1 -0
  74. package/dist/DrizzleDurableObjectSqliteStorage.d.ts +19 -0
  75. package/dist/DrizzleDurableObjectSqliteStorage.d.ts.map +1 -0
  76. package/dist/DrizzleDurableObjectSqliteStorage.js +14 -0
  77. package/dist/DrizzleDurableObjectSqliteStorage.js.map +1 -0
  78. package/dist/DrizzleEffectSqliteStorage.d.ts +31 -0
  79. package/dist/DrizzleEffectSqliteStorage.d.ts.map +1 -0
  80. package/dist/DrizzleEffectSqliteStorage.js +108 -0
  81. package/dist/DrizzleEffectSqliteStorage.js.map +1 -0
  82. package/dist/DrizzleNodeSqliteStorage.d.ts +18 -0
  83. package/dist/DrizzleNodeSqliteStorage.d.ts.map +1 -0
  84. package/dist/DrizzleNodeSqliteStorage.js +11 -0
  85. package/dist/DrizzleNodeSqliteStorage.js.map +1 -0
  86. package/dist/DrizzleWasmSqliteStorage.d.ts +23 -0
  87. package/dist/DrizzleWasmSqliteStorage.d.ts.map +1 -0
  88. package/dist/DrizzleWasmSqliteStorage.js +15 -0
  89. package/dist/DrizzleWasmSqliteStorage.js.map +1 -0
  90. package/dist/EffectQbPostgresDelegatedAccessStorage.d.ts +34 -0
  91. package/dist/EffectQbPostgresDelegatedAccessStorage.d.ts.map +1 -0
  92. package/dist/EffectQbPostgresDelegatedAccessStorage.js +499 -0
  93. package/dist/EffectQbPostgresDelegatedAccessStorage.js.map +1 -0
  94. package/dist/EffectQbPostgresStorage.d.ts +171 -0
  95. package/dist/EffectQbPostgresStorage.d.ts.map +1 -0
  96. package/dist/EffectQbPostgresStorage.js +4280 -0
  97. package/dist/EffectQbPostgresStorage.js.map +1 -0
  98. package/dist/EffectQbSqliteDelegatedAccessStorage.d.ts +112 -0
  99. package/dist/EffectQbSqliteDelegatedAccessStorage.d.ts.map +1 -0
  100. package/dist/EffectQbSqliteDelegatedAccessStorage.js +602 -0
  101. package/dist/EffectQbSqliteDelegatedAccessStorage.js.map +1 -0
  102. package/dist/EffectQbSqliteStorage.d.ts +184 -27
  103. package/dist/EffectQbSqliteStorage.d.ts.map +1 -1
  104. package/dist/EffectQbSqliteStorage.js +1729 -135
  105. package/dist/EffectQbSqliteStorage.js.map +1 -1
  106. package/dist/EmailAuth.d.ts +65 -0
  107. package/dist/EmailAuth.d.ts.map +1 -0
  108. package/dist/EmailAuth.js +171 -0
  109. package/dist/EmailAuth.js.map +1 -0
  110. package/dist/EmailIdentityAuth.d.ts +30 -0
  111. package/dist/EmailIdentityAuth.d.ts.map +1 -0
  112. package/dist/EmailIdentityAuth.js +142 -0
  113. package/dist/EmailIdentityAuth.js.map +1 -0
  114. package/dist/EmailOtp.d.ts +10 -11
  115. package/dist/EmailOtp.d.ts.map +1 -1
  116. package/dist/EmailOtp.js +44 -81
  117. package/dist/EmailOtp.js.map +1 -1
  118. package/dist/EmailRisk.d.ts +48 -0
  119. package/dist/EmailRisk.d.ts.map +1 -0
  120. package/dist/EmailRisk.js +33 -0
  121. package/dist/EmailRisk.js.map +1 -0
  122. package/dist/EmailVerification.d.ts +10 -16
  123. package/dist/EmailVerification.d.ts.map +1 -1
  124. package/dist/EmailVerification.js +85 -42
  125. package/dist/EmailVerification.js.map +1 -1
  126. package/dist/Guard.d.ts +11 -0
  127. package/dist/Guard.d.ts.map +1 -0
  128. package/dist/Guard.js +11 -0
  129. package/dist/Guard.js.map +1 -0
  130. package/dist/HibpPwnedPasswords.d.ts +56 -0
  131. package/dist/HibpPwnedPasswords.d.ts.map +1 -0
  132. package/dist/HibpPwnedPasswords.js +232 -0
  133. package/dist/HibpPwnedPasswords.js.map +1 -0
  134. package/dist/HttpApi/AdminPermissionDefinition.d.ts +4 -0
  135. package/dist/HttpApi/AdminPermissionDefinition.d.ts.map +1 -0
  136. package/dist/HttpApi/AdminPermissionDefinition.js +4 -0
  137. package/dist/HttpApi/AdminPermissionDefinition.js.map +1 -0
  138. package/dist/HttpApi/AdminSecurityTimeline.d.ts +4 -0
  139. package/dist/HttpApi/AdminSecurityTimeline.d.ts.map +1 -0
  140. package/dist/HttpApi/AdminSecurityTimeline.js +4 -0
  141. package/dist/HttpApi/AdminSecurityTimeline.js.map +1 -0
  142. package/dist/HttpApi/AdminSession.d.ts +4 -0
  143. package/dist/HttpApi/AdminSession.d.ts.map +1 -0
  144. package/dist/HttpApi/AdminSession.js +4 -0
  145. package/dist/HttpApi/AdminSession.js.map +1 -0
  146. package/dist/HttpApi/AdminTrustedDevice.d.ts +4 -0
  147. package/dist/HttpApi/AdminTrustedDevice.d.ts.map +1 -0
  148. package/dist/HttpApi/AdminTrustedDevice.js +4 -0
  149. package/dist/HttpApi/AdminTrustedDevice.js.map +1 -0
  150. package/dist/HttpApi/Api.d.ts +1172 -1172
  151. package/dist/HttpApi/Api.d.ts.map +1 -1
  152. package/dist/HttpApi/Api.js +2160 -896
  153. package/dist/HttpApi/Api.js.map +1 -1
  154. package/dist/HttpApi/ApiKey.d.ts +4 -0
  155. package/dist/HttpApi/ApiKey.d.ts.map +1 -0
  156. package/dist/HttpApi/ApiKey.js +4 -0
  157. package/dist/HttpApi/ApiKey.js.map +1 -0
  158. package/dist/HttpApi/Audit.d.ts +6 -0
  159. package/dist/HttpApi/Audit.d.ts.map +1 -0
  160. package/dist/HttpApi/Audit.js +10 -0
  161. package/dist/HttpApi/Audit.js.map +1 -0
  162. package/dist/HttpApi/ClientApi.d.ts +917 -0
  163. package/dist/HttpApi/ClientApi.d.ts.map +1 -0
  164. package/dist/HttpApi/ClientApi.js +101 -0
  165. package/dist/HttpApi/ClientApi.js.map +1 -0
  166. package/dist/HttpApi/EmailAuth.d.ts +6 -0
  167. package/dist/HttpApi/EmailAuth.d.ts.map +1 -0
  168. package/dist/HttpApi/EmailAuth.js +6 -0
  169. package/dist/HttpApi/EmailAuth.js.map +1 -0
  170. package/dist/HttpApi/EmailGuards.d.ts +115 -0
  171. package/dist/HttpApi/EmailGuards.d.ts.map +1 -0
  172. package/dist/HttpApi/EmailGuards.js +191 -0
  173. package/dist/HttpApi/EmailGuards.js.map +1 -0
  174. package/dist/HttpApi/EmailOtp.d.ts +6 -0
  175. package/dist/HttpApi/EmailOtp.d.ts.map +1 -0
  176. package/dist/HttpApi/EmailOtp.js +6 -0
  177. package/dist/HttpApi/EmailOtp.js.map +1 -0
  178. package/dist/HttpApi/EmailVerification.d.ts +6 -0
  179. package/dist/HttpApi/EmailVerification.d.ts.map +1 -0
  180. package/dist/HttpApi/EmailVerification.js +6 -0
  181. package/dist/HttpApi/EmailVerification.js.map +1 -0
  182. package/dist/HttpApi/Endpoints.d.ts +629 -301
  183. package/dist/HttpApi/Endpoints.d.ts.map +1 -1
  184. package/dist/HttpApi/Endpoints.js +178 -120
  185. package/dist/HttpApi/Endpoints.js.map +1 -1
  186. package/dist/HttpApi/Errors.d.ts +26 -7
  187. package/dist/HttpApi/Errors.d.ts.map +1 -1
  188. package/dist/HttpApi/Errors.js +26 -4
  189. package/dist/HttpApi/Errors.js.map +1 -1
  190. package/dist/HttpApi/Identity.d.ts +6 -0
  191. package/dist/HttpApi/Identity.d.ts.map +1 -0
  192. package/dist/HttpApi/Identity.js +6 -0
  193. package/dist/HttpApi/Identity.js.map +1 -0
  194. package/dist/HttpApi/IdentityGuards.d.ts +31 -0
  195. package/dist/HttpApi/IdentityGuards.d.ts.map +1 -0
  196. package/dist/HttpApi/IdentityGuards.js +33 -0
  197. package/dist/HttpApi/IdentityGuards.js.map +1 -0
  198. package/dist/HttpApi/Jwt.d.ts +4 -0
  199. package/dist/HttpApi/Jwt.d.ts.map +1 -0
  200. package/dist/HttpApi/Jwt.js +4 -0
  201. package/dist/HttpApi/Jwt.js.map +1 -0
  202. package/dist/HttpApi/JwtDiscovery.d.ts +4 -0
  203. package/dist/HttpApi/JwtDiscovery.d.ts.map +1 -0
  204. package/dist/HttpApi/JwtDiscovery.js +4 -0
  205. package/dist/HttpApi/JwtDiscovery.js.map +1 -0
  206. package/dist/HttpApi/LoginApproval.d.ts +5 -0
  207. package/dist/HttpApi/LoginApproval.d.ts.map +1 -0
  208. package/dist/HttpApi/LoginApproval.js +5 -0
  209. package/dist/HttpApi/LoginApproval.js.map +1 -0
  210. package/dist/HttpApi/LoginNotification.d.ts +5 -0
  211. package/dist/HttpApi/LoginNotification.d.ts.map +1 -0
  212. package/dist/HttpApi/LoginNotification.js +5 -0
  213. package/dist/HttpApi/LoginNotification.js.map +1 -0
  214. package/dist/HttpApi/MagicLink.d.ts +6 -0
  215. package/dist/HttpApi/MagicLink.d.ts.map +1 -0
  216. package/dist/HttpApi/MagicLink.js +6 -0
  217. package/dist/HttpApi/MagicLink.js.map +1 -0
  218. package/dist/HttpApi/Mfa.d.ts +5 -0
  219. package/dist/HttpApi/Mfa.d.ts.map +1 -0
  220. package/dist/HttpApi/Mfa.js +5 -0
  221. package/dist/HttpApi/Mfa.js.map +1 -0
  222. package/dist/HttpApi/Middleware.d.ts +14 -0
  223. package/dist/HttpApi/Middleware.d.ts.map +1 -0
  224. package/dist/HttpApi/Middleware.js +5 -0
  225. package/dist/HttpApi/Middleware.js.map +1 -0
  226. package/dist/HttpApi/OAuth.d.ts +4 -0
  227. package/dist/HttpApi/OAuth.d.ts.map +1 -0
  228. package/dist/HttpApi/OAuth.js +4 -0
  229. package/dist/HttpApi/OAuth.js.map +1 -0
  230. package/dist/HttpApi/OAuthProviderAuthorization.d.ts +4 -0
  231. package/dist/HttpApi/OAuthProviderAuthorization.d.ts.map +1 -0
  232. package/dist/HttpApi/OAuthProviderAuthorization.js +4 -0
  233. package/dist/HttpApi/OAuthProviderAuthorization.js.map +1 -0
  234. package/dist/HttpApi/OAuthToken.d.ts +4 -0
  235. package/dist/HttpApi/OAuthToken.d.ts.map +1 -0
  236. package/dist/HttpApi/OAuthToken.js +4 -0
  237. package/dist/HttpApi/OAuthToken.js.map +1 -0
  238. package/dist/HttpApi/OidcDiscovery.d.ts +4 -0
  239. package/dist/HttpApi/OidcDiscovery.d.ts.map +1 -0
  240. package/dist/HttpApi/OidcDiscovery.js +4 -0
  241. package/dist/HttpApi/OidcDiscovery.js.map +1 -0
  242. package/dist/HttpApi/Operations/AdminPermissionDefinition.d.ts +28 -0
  243. package/dist/HttpApi/Operations/AdminPermissionDefinition.d.ts.map +1 -0
  244. package/dist/HttpApi/Operations/AdminPermissionDefinition.js +5 -0
  245. package/dist/HttpApi/Operations/AdminPermissionDefinition.js.map +1 -0
  246. package/dist/HttpApi/Operations/AdminSession.d.ts +16 -0
  247. package/dist/HttpApi/Operations/AdminSession.d.ts.map +1 -0
  248. package/dist/HttpApi/Operations/AdminSession.js +5 -0
  249. package/dist/HttpApi/Operations/AdminSession.js.map +1 -0
  250. package/dist/HttpApi/Operations/ApiKey.d.ts +16 -0
  251. package/dist/HttpApi/Operations/ApiKey.d.ts.map +1 -0
  252. package/dist/HttpApi/Operations/ApiKey.js +5 -0
  253. package/dist/HttpApi/Operations/ApiKey.js.map +1 -0
  254. package/dist/HttpApi/Operations/Discovery.d.ts +19 -0
  255. package/dist/HttpApi/Operations/Discovery.d.ts.map +1 -0
  256. package/dist/HttpApi/Operations/Discovery.js +7 -0
  257. package/dist/HttpApi/Operations/Discovery.js.map +1 -0
  258. package/dist/HttpApi/Operations/EmailAuth.d.ts +12 -0
  259. package/dist/HttpApi/Operations/EmailAuth.d.ts.map +1 -0
  260. package/dist/HttpApi/Operations/EmailAuth.js +5 -0
  261. package/dist/HttpApi/Operations/EmailAuth.js.map +1 -0
  262. package/dist/HttpApi/Operations/EmailOtp.d.ts +14 -0
  263. package/dist/HttpApi/Operations/EmailOtp.d.ts.map +1 -0
  264. package/dist/HttpApi/Operations/EmailOtp.js +5 -0
  265. package/dist/HttpApi/Operations/EmailOtp.js.map +1 -0
  266. package/dist/HttpApi/Operations/EmailVerification.d.ts +14 -0
  267. package/dist/HttpApi/Operations/EmailVerification.d.ts.map +1 -0
  268. package/dist/HttpApi/Operations/EmailVerification.js +5 -0
  269. package/dist/HttpApi/Operations/EmailVerification.js.map +1 -0
  270. package/dist/HttpApi/Operations/HttpOperation.d.ts +4 -0
  271. package/dist/HttpApi/Operations/HttpOperation.d.ts.map +1 -0
  272. package/dist/HttpApi/Operations/HttpOperation.js +2 -0
  273. package/dist/HttpApi/Operations/HttpOperation.js.map +1 -0
  274. package/dist/HttpApi/Operations/Identity.d.ts +22 -0
  275. package/dist/HttpApi/Operations/Identity.d.ts.map +1 -0
  276. package/dist/HttpApi/Operations/Identity.js +5 -0
  277. package/dist/HttpApi/Operations/Identity.js.map +1 -0
  278. package/dist/HttpApi/Operations/Jwt.d.ts +14 -0
  279. package/dist/HttpApi/Operations/Jwt.d.ts.map +1 -0
  280. package/dist/HttpApi/Operations/Jwt.js +5 -0
  281. package/dist/HttpApi/Operations/Jwt.js.map +1 -0
  282. package/dist/HttpApi/Operations/LoginApproval.d.ts +16 -0
  283. package/dist/HttpApi/Operations/LoginApproval.d.ts.map +1 -0
  284. package/dist/HttpApi/Operations/LoginApproval.js +5 -0
  285. package/dist/HttpApi/Operations/LoginApproval.js.map +1 -0
  286. package/dist/HttpApi/Operations/MagicLink.d.ts +14 -0
  287. package/dist/HttpApi/Operations/MagicLink.d.ts.map +1 -0
  288. package/dist/HttpApi/Operations/MagicLink.js +5 -0
  289. package/dist/HttpApi/Operations/MagicLink.js.map +1 -0
  290. package/dist/HttpApi/Operations/Mfa.d.ts +24 -0
  291. package/dist/HttpApi/Operations/Mfa.d.ts.map +1 -0
  292. package/dist/HttpApi/Operations/Mfa.js +5 -0
  293. package/dist/HttpApi/Operations/Mfa.js.map +1 -0
  294. package/dist/HttpApi/Operations/OAuth.d.ts +20 -0
  295. package/dist/HttpApi/Operations/OAuth.d.ts.map +1 -0
  296. package/dist/HttpApi/Operations/OAuth.js +5 -0
  297. package/dist/HttpApi/Operations/OAuth.js.map +1 -0
  298. package/dist/HttpApi/Operations/OAuthProviderAuthorization.d.ts +12 -0
  299. package/dist/HttpApi/Operations/OAuthProviderAuthorization.d.ts.map +1 -0
  300. package/dist/HttpApi/Operations/OAuthProviderAuthorization.js +5 -0
  301. package/dist/HttpApi/Operations/OAuthProviderAuthorization.js.map +1 -0
  302. package/dist/HttpApi/Operations/OAuthToken.d.ts +16 -0
  303. package/dist/HttpApi/Operations/OAuthToken.d.ts.map +1 -0
  304. package/dist/HttpApi/Operations/OAuthToken.js +5 -0
  305. package/dist/HttpApi/Operations/OAuthToken.js.map +1 -0
  306. package/dist/HttpApi/Operations/Passkey.d.ts +22 -0
  307. package/dist/HttpApi/Operations/Passkey.d.ts.map +1 -0
  308. package/dist/HttpApi/Operations/Passkey.js +5 -0
  309. package/dist/HttpApi/Operations/Passkey.js.map +1 -0
  310. package/dist/HttpApi/Operations/Password.d.ts +22 -0
  311. package/dist/HttpApi/Operations/Password.d.ts.map +1 -0
  312. package/dist/HttpApi/Operations/Password.js +5 -0
  313. package/dist/HttpApi/Operations/Password.js.map +1 -0
  314. package/dist/HttpApi/Operations/RecoveryCodes.d.ts +20 -0
  315. package/dist/HttpApi/Operations/RecoveryCodes.d.ts.map +1 -0
  316. package/dist/HttpApi/Operations/RecoveryCodes.js +5 -0
  317. package/dist/HttpApi/Operations/RecoveryCodes.js.map +1 -0
  318. package/dist/HttpApi/Operations/RefreshToken.d.ts +12 -0
  319. package/dist/HttpApi/Operations/RefreshToken.d.ts.map +1 -0
  320. package/dist/HttpApi/Operations/RefreshToken.js +5 -0
  321. package/dist/HttpApi/Operations/RefreshToken.js.map +1 -0
  322. package/dist/HttpApi/Operations/Security.d.ts +12 -0
  323. package/dist/HttpApi/Operations/Security.d.ts.map +1 -0
  324. package/dist/HttpApi/Operations/Security.js +5 -0
  325. package/dist/HttpApi/Operations/Security.js.map +1 -0
  326. package/dist/HttpApi/Operations/SecurityTimeline.d.ts +19 -0
  327. package/dist/HttpApi/Operations/SecurityTimeline.d.ts.map +1 -0
  328. package/dist/HttpApi/Operations/SecurityTimeline.js +7 -0
  329. package/dist/HttpApi/Operations/SecurityTimeline.js.map +1 -0
  330. package/dist/HttpApi/Operations/Session.d.ts +22 -0
  331. package/dist/HttpApi/Operations/Session.d.ts.map +1 -0
  332. package/dist/HttpApi/Operations/Session.js +5 -0
  333. package/dist/HttpApi/Operations/Session.js.map +1 -0
  334. package/dist/HttpApi/Operations/StepUp.d.ts +22 -0
  335. package/dist/HttpApi/Operations/StepUp.d.ts.map +1 -0
  336. package/dist/HttpApi/Operations/StepUp.js +5 -0
  337. package/dist/HttpApi/Operations/StepUp.js.map +1 -0
  338. package/dist/HttpApi/Operations/Totp.d.ts +20 -0
  339. package/dist/HttpApi/Operations/Totp.d.ts.map +1 -0
  340. package/dist/HttpApi/Operations/Totp.js +5 -0
  341. package/dist/HttpApi/Operations/Totp.js.map +1 -0
  342. package/dist/HttpApi/Operations/TrustedDevice.d.ts +23 -0
  343. package/dist/HttpApi/Operations/TrustedDevice.d.ts.map +1 -0
  344. package/dist/HttpApi/Operations/TrustedDevice.js +7 -0
  345. package/dist/HttpApi/Operations/TrustedDevice.js.map +1 -0
  346. package/dist/HttpApi/Operations/index.d.ts +27 -0
  347. package/dist/HttpApi/Operations/index.d.ts.map +1 -0
  348. package/dist/HttpApi/Operations/index.js +27 -0
  349. package/dist/HttpApi/Operations/index.js.map +1 -0
  350. package/dist/HttpApi/Passkey.d.ts +5 -0
  351. package/dist/HttpApi/Passkey.d.ts.map +1 -0
  352. package/dist/HttpApi/Passkey.js +5 -0
  353. package/dist/HttpApi/Passkey.js.map +1 -0
  354. package/dist/HttpApi/Password.d.ts +220 -0
  355. package/dist/HttpApi/Password.d.ts.map +1 -0
  356. package/dist/HttpApi/Password.js +237 -0
  357. package/dist/HttpApi/Password.js.map +1 -0
  358. package/dist/HttpApi/PasswordContract.d.ts +307 -0
  359. package/dist/HttpApi/PasswordContract.d.ts.map +1 -0
  360. package/dist/HttpApi/PasswordContract.js +63 -0
  361. package/dist/HttpApi/PasswordContract.js.map +1 -0
  362. package/dist/HttpApi/PasswordGuards.d.ts +82 -0
  363. package/dist/HttpApi/PasswordGuards.d.ts.map +1 -0
  364. package/dist/HttpApi/PasswordGuards.js +179 -0
  365. package/dist/HttpApi/PasswordGuards.js.map +1 -0
  366. package/dist/HttpApi/RecoveryCodes.d.ts +5 -0
  367. package/dist/HttpApi/RecoveryCodes.d.ts.map +1 -0
  368. package/dist/HttpApi/RecoveryCodes.js +5 -0
  369. package/dist/HttpApi/RecoveryCodes.js.map +1 -0
  370. package/dist/HttpApi/RefreshToken.d.ts +4 -0
  371. package/dist/HttpApi/RefreshToken.d.ts.map +1 -0
  372. package/dist/HttpApi/RefreshToken.js +4 -0
  373. package/dist/HttpApi/RefreshToken.js.map +1 -0
  374. package/dist/HttpApi/RequestGuards.d.ts +42 -0
  375. package/dist/HttpApi/RequestGuards.d.ts.map +1 -0
  376. package/dist/HttpApi/RequestGuards.js +194 -0
  377. package/dist/HttpApi/RequestGuards.js.map +1 -0
  378. package/dist/HttpApi/Schemas.d.ts +361 -84
  379. package/dist/HttpApi/Schemas.d.ts.map +1 -1
  380. package/dist/HttpApi/Schemas.js +190 -27
  381. package/dist/HttpApi/Schemas.js.map +1 -1
  382. package/dist/HttpApi/Security.d.ts +12 -93
  383. package/dist/HttpApi/Security.d.ts.map +1 -1
  384. package/dist/HttpApi/Security.js +65 -356
  385. package/dist/HttpApi/Security.js.map +1 -1
  386. package/dist/HttpApi/SecurityTimeline.d.ts +4 -0
  387. package/dist/HttpApi/SecurityTimeline.d.ts.map +1 -0
  388. package/dist/HttpApi/SecurityTimeline.js +4 -0
  389. package/dist/HttpApi/SecurityTimeline.js.map +1 -0
  390. package/dist/HttpApi/Session.d.ts +5 -0
  391. package/dist/HttpApi/Session.d.ts.map +1 -0
  392. package/dist/HttpApi/Session.js +5 -0
  393. package/dist/HttpApi/Session.js.map +1 -0
  394. package/dist/HttpApi/SessionGuards.d.ts +15 -0
  395. package/dist/HttpApi/SessionGuards.d.ts.map +1 -0
  396. package/dist/HttpApi/SessionGuards.js +37 -0
  397. package/dist/HttpApi/SessionGuards.js.map +1 -0
  398. package/dist/HttpApi/StepUp.d.ts +5 -0
  399. package/dist/HttpApi/StepUp.d.ts.map +1 -0
  400. package/dist/HttpApi/StepUp.js +5 -0
  401. package/dist/HttpApi/StepUp.js.map +1 -0
  402. package/dist/HttpApi/Totp.d.ts +5 -0
  403. package/dist/HttpApi/Totp.d.ts.map +1 -0
  404. package/dist/HttpApi/Totp.js +5 -0
  405. package/dist/HttpApi/Totp.js.map +1 -0
  406. package/dist/HttpApi/Transport.d.ts +4 -6
  407. package/dist/HttpApi/Transport.d.ts.map +1 -1
  408. package/dist/HttpApi/Transport.js +62 -36
  409. package/dist/HttpApi/Transport.js.map +1 -1
  410. package/dist/HttpApi/TrustedDevice.d.ts +4 -0
  411. package/dist/HttpApi/TrustedDevice.d.ts.map +1 -0
  412. package/dist/HttpApi/TrustedDevice.js +4 -0
  413. package/dist/HttpApi/TrustedDevice.js.map +1 -0
  414. package/dist/HttpApi/index.d.ts +9 -3
  415. package/dist/HttpApi/index.d.ts.map +1 -1
  416. package/dist/HttpApi/index.js +8 -2
  417. package/dist/HttpApi/index.js.map +1 -1
  418. package/dist/Identity.d.ts +138 -0
  419. package/dist/Identity.d.ts.map +1 -0
  420. package/dist/Identity.js +105 -0
  421. package/dist/Identity.js.map +1 -0
  422. package/dist/IdentityManagement.d.ts +189 -0
  423. package/dist/IdentityManagement.d.ts.map +1 -0
  424. package/dist/IdentityManagement.js +317 -0
  425. package/dist/IdentityManagement.js.map +1 -0
  426. package/dist/IncidentAction.d.ts +1 -4
  427. package/dist/IncidentAction.d.ts.map +1 -1
  428. package/dist/IncidentAction.js +15 -9
  429. package/dist/IncidentAction.js.map +1 -1
  430. package/dist/Internal.d.ts +2 -0
  431. package/dist/Internal.d.ts.map +1 -1
  432. package/dist/Internal.js +30 -0
  433. package/dist/Internal.js.map +1 -1
  434. package/dist/Invitation.d.ts +362 -0
  435. package/dist/Invitation.d.ts.map +1 -0
  436. package/dist/Invitation.js +633 -0
  437. package/dist/Invitation.js.map +1 -0
  438. package/dist/IpQualityScore.d.ts +38 -0
  439. package/dist/IpQualityScore.d.ts.map +1 -0
  440. package/dist/IpQualityScore.js +215 -0
  441. package/dist/IpQualityScore.js.map +1 -0
  442. package/dist/Jwt.d.ts +9 -30
  443. package/dist/Jwt.d.ts.map +1 -1
  444. package/dist/Jwt.js +72 -60
  445. package/dist/Jwt.js.map +1 -1
  446. package/dist/LoginApproval.d.ts +16 -31
  447. package/dist/LoginApproval.d.ts.map +1 -1
  448. package/dist/LoginApproval.js +47 -41
  449. package/dist/LoginApproval.js.map +1 -1
  450. package/dist/LoginNotification.d.ts +8 -12
  451. package/dist/LoginNotification.d.ts.map +1 -1
  452. package/dist/LoginNotification.js +30 -17
  453. package/dist/LoginNotification.js.map +1 -1
  454. package/dist/LoginRisk.d.ts +11 -13
  455. package/dist/LoginRisk.d.ts.map +1 -1
  456. package/dist/LoginRisk.js +66 -26
  457. package/dist/LoginRisk.js.map +1 -1
  458. package/dist/LoginRiskEnrichment.d.ts +145 -0
  459. package/dist/LoginRiskEnrichment.d.ts.map +1 -0
  460. package/dist/LoginRiskEnrichment.js +220 -0
  461. package/dist/LoginRiskEnrichment.js.map +1 -0
  462. package/dist/MachineAuth.d.ts.map +1 -1
  463. package/dist/MachineAuth.js.map +1 -1
  464. package/dist/MagicLink.d.ts +9 -8
  465. package/dist/MagicLink.d.ts.map +1 -1
  466. package/dist/MagicLink.js +40 -73
  467. package/dist/MagicLink.js.map +1 -1
  468. package/dist/Mailer.d.ts +20 -13
  469. package/dist/Mailer.d.ts.map +1 -1
  470. package/dist/Mailer.js +10 -12
  471. package/dist/Mailer.js.map +1 -1
  472. package/dist/OAuth.d.ts +100 -103
  473. package/dist/OAuth.d.ts.map +1 -1
  474. package/dist/OAuth.js +404 -217
  475. package/dist/OAuth.js.map +1 -1
  476. package/dist/Passkey.d.ts +17 -19
  477. package/dist/Passkey.d.ts.map +1 -1
  478. package/dist/Passkey.js +86 -39
  479. package/dist/Passkey.js.map +1 -1
  480. package/dist/PasskeyBrowser.d.ts +39 -0
  481. package/dist/PasskeyBrowser.d.ts.map +1 -0
  482. package/dist/PasskeyBrowser.js +206 -0
  483. package/dist/PasskeyBrowser.js.map +1 -0
  484. package/dist/PasskeySimpleWebAuthn.d.ts.map +1 -1
  485. package/dist/PasskeySimpleWebAuthn.js +19 -7
  486. package/dist/PasskeySimpleWebAuthn.js.map +1 -1
  487. package/dist/Password.d.ts +71 -37
  488. package/dist/Password.d.ts.map +1 -1
  489. package/dist/Password.js +296 -82
  490. package/dist/Password.js.map +1 -1
  491. package/dist/PasswordRisk.d.ts +63 -0
  492. package/dist/PasswordRisk.d.ts.map +1 -0
  493. package/dist/PasswordRisk.js +37 -0
  494. package/dist/PasswordRisk.js.map +1 -0
  495. package/dist/Permission.d.ts +308 -0
  496. package/dist/Permission.d.ts.map +1 -0
  497. package/dist/Permission.js +827 -0
  498. package/dist/Permission.js.map +1 -0
  499. package/dist/Policy.d.ts +31 -18
  500. package/dist/Policy.d.ts.map +1 -1
  501. package/dist/Policy.js +58 -14
  502. package/dist/Policy.js.map +1 -1
  503. package/dist/PostgresDelegatedAccessStorageMigrations.d.ts +7 -0
  504. package/dist/PostgresDelegatedAccessStorageMigrations.d.ts.map +1 -0
  505. package/dist/PostgresDelegatedAccessStorageMigrations.js +119 -0
  506. package/dist/PostgresDelegatedAccessStorageMigrations.js.map +1 -0
  507. package/dist/PostgresStorageMigrations.d.ts +15 -0
  508. package/dist/PostgresStorageMigrations.d.ts.map +1 -0
  509. package/dist/PostgresStorageMigrations.js +620 -0
  510. package/dist/PostgresStorageMigrations.js.map +1 -0
  511. package/dist/Privacy.d.ts +0 -3
  512. package/dist/Privacy.d.ts.map +1 -1
  513. package/dist/Privacy.js +2 -5
  514. package/dist/Privacy.js.map +1 -1
  515. package/dist/RateLimiter.d.ts +0 -3
  516. package/dist/RateLimiter.d.ts.map +1 -1
  517. package/dist/RateLimiter.js +1 -4
  518. package/dist/RateLimiter.js.map +1 -1
  519. package/dist/RecoveryCode.d.ts +84 -12
  520. package/dist/RecoveryCode.d.ts.map +1 -1
  521. package/dist/RecoveryCode.js +273 -75
  522. package/dist/RecoveryCode.js.map +1 -1
  523. package/dist/RecoveryPolicy.d.ts +81 -0
  524. package/dist/RecoveryPolicy.d.ts.map +1 -0
  525. package/dist/RecoveryPolicy.js +119 -0
  526. package/dist/RecoveryPolicy.js.map +1 -0
  527. package/dist/RefreshToken.d.ts +1 -10
  528. package/dist/RefreshToken.d.ts.map +1 -1
  529. package/dist/RefreshToken.js +31 -22
  530. package/dist/RefreshToken.js.map +1 -1
  531. package/dist/Retention.d.ts.map +1 -1
  532. package/dist/Retention.js.map +1 -1
  533. package/dist/SecurityTimeline.d.ts +1 -4
  534. package/dist/SecurityTimeline.d.ts.map +1 -1
  535. package/dist/SecurityTimeline.js +110 -17
  536. package/dist/SecurityTimeline.js.map +1 -1
  537. package/dist/Sessions.d.ts +124 -29
  538. package/dist/Sessions.d.ts.map +1 -1
  539. package/dist/Sessions.js +626 -94
  540. package/dist/Sessions.js.map +1 -1
  541. package/dist/StepUp.d.ts +132 -11
  542. package/dist/StepUp.d.ts.map +1 -1
  543. package/dist/StepUp.js +387 -19
  544. package/dist/StepUp.js.map +1 -1
  545. package/dist/Storage.d.ts +89 -23
  546. package/dist/Storage.d.ts.map +1 -1
  547. package/dist/Storage.js +10 -12
  548. package/dist/Storage.js.map +1 -1
  549. package/dist/StorageMigrations.d.ts +6 -1
  550. package/dist/StorageMigrations.d.ts.map +1 -1
  551. package/dist/StorageMigrations.js +224 -0
  552. package/dist/StorageMigrations.js.map +1 -1
  553. package/dist/StorageSchemaGenerator.d.ts +486 -0
  554. package/dist/StorageSchemaGenerator.d.ts.map +1 -0
  555. package/dist/StorageSchemaGenerator.js +1022 -0
  556. package/dist/StorageSchemaGenerator.js.map +1 -0
  557. package/dist/StrongFactor.d.ts +64 -0
  558. package/dist/StrongFactor.d.ts.map +1 -0
  559. package/dist/StrongFactor.js +100 -0
  560. package/dist/StrongFactor.js.map +1 -0
  561. package/dist/Testing.d.ts +1 -1
  562. package/dist/Testing.js +2 -2
  563. package/dist/Testing.js.map +1 -1
  564. package/dist/Totp.d.ts +88 -13
  565. package/dist/Totp.d.ts.map +1 -1
  566. package/dist/Totp.js +194 -36
  567. package/dist/Totp.js.map +1 -1
  568. package/dist/TrustedDevice.d.ts +0 -9
  569. package/dist/TrustedDevice.d.ts.map +1 -1
  570. package/dist/TrustedDevice.js +15 -17
  571. package/dist/TrustedDevice.js.map +1 -1
  572. package/dist/WaitUntil.d.ts +0 -3
  573. package/dist/WaitUntil.d.ts.map +1 -1
  574. package/dist/WaitUntil.js +1 -4
  575. package/dist/WaitUntil.js.map +1 -1
  576. package/dist/Webhook.d.ts +42 -12
  577. package/dist/Webhook.d.ts.map +1 -1
  578. package/dist/Webhook.js +165 -26
  579. package/dist/Webhook.js.map +1 -1
  580. package/dist/alchemy/cloudflare/Email.d.ts +4 -4
  581. package/dist/alchemy/cloudflare/Email.d.ts.map +1 -1
  582. package/dist/alchemy/cloudflare/Email.js +10 -5
  583. package/dist/alchemy/cloudflare/Email.js.map +1 -1
  584. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts +4 -4
  585. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts.map +1 -1
  586. package/dist/alchemy/cloudflare/RateLimitDurableObject.js +5 -4
  587. package/dist/alchemy/cloudflare/RateLimitDurableObject.js.map +1 -1
  588. package/dist/cloudflare/Email.d.ts.map +1 -1
  589. package/dist/cloudflare/Email.js +1 -1
  590. package/dist/cloudflare/Email.js.map +1 -1
  591. package/dist/cloudflare/RateLimitDurableObject.d.ts +6 -5
  592. package/dist/cloudflare/RateLimitDurableObject.d.ts.map +1 -1
  593. package/dist/cloudflare/RateLimitDurableObject.js.map +1 -1
  594. package/dist/cloudflare/RequestMetadata.d.ts +49 -0
  595. package/dist/cloudflare/RequestMetadata.d.ts.map +1 -0
  596. package/dist/cloudflare/RequestMetadata.js +71 -0
  597. package/dist/cloudflare/RequestMetadata.js.map +1 -0
  598. package/dist/index.d.ts +0 -35
  599. package/dist/index.d.ts.map +1 -1
  600. package/dist/index.js +0 -35
  601. package/dist/index.js.map +1 -1
  602. package/dist/internal/AuthFlowFinalizer.d.ts +31 -0
  603. package/dist/internal/AuthFlowFinalizer.d.ts.map +1 -0
  604. package/dist/internal/AuthFlowFinalizer.js +182 -0
  605. package/dist/internal/AuthFlowFinalizer.js.map +1 -0
  606. package/dist/internal/RateLimitDurableObject.d.ts.map +1 -1
  607. package/dist/internal/RateLimitDurableObject.js +3 -0
  608. package/dist/internal/RateLimitDurableObject.js.map +1 -1
  609. package/migrations/0001_auth_storage.sql +1 -0
  610. package/migrations/0006_auth_totp_factor.sql +1 -0
  611. package/migrations/0024_auth_permission.sql +39 -0
  612. package/migrations/0025_auth_permission_definition.sql +19 -0
  613. package/migrations/0026_auth_user_identity.sql +59 -0
  614. package/migrations/0027_auth_audit_log_storage_order.sql +46 -0
  615. package/migrations/0028_auth_oauth_client_secret_key.sql +39 -0
  616. package/migrations/delegated-access/0001_auth_delegated_access.sql +152 -0
  617. package/migrations/postgres/0001_auth_core.sql +77 -0
  618. package/migrations/postgres/0002_auth_security_oauth.sql +65 -0
  619. package/migrations/postgres/0003_auth_credentials_tokens.sql +43 -0
  620. package/migrations/postgres/0004_auth_security_history.sql +103 -0
  621. package/migrations/postgres/0005_auth_webhooks.sql +29 -0
  622. package/migrations/postgres/0006_auth_domain_timeline.sql +50 -0
  623. package/migrations/postgres/0007_auth_oauth_clients.sql +85 -0
  624. package/migrations/postgres/0008_auth_oauth_tokens.sql +63 -0
  625. package/migrations/postgres/0009_auth_permissions.sql +66 -0
  626. package/migrations/postgres/delegated-access/0001_auth_delegated_access.sql +112 -0
  627. package/package.json +309 -2
@@ -0,0 +1,100 @@
1
+ import { Context, Effect, Layer, Redacted } from "effect";
2
+ export type BotProtectionOperation = "sign-up" | "sign-in" | "password-reset-start" | "password-reset-verify" | "email-otp-start" | "email-otp-verify" | "email-auth" | "magic-link-start" | "magic-link-verify" | "email-verification-start" | "identity-availability";
3
+ /** Untrusted browser material. It is redacted so it cannot be logged accidentally. */
4
+ export type BrowserBotProof = Redacted.Redacted<string>;
5
+ /** Request facts populated by trusted server code, never directly from browser input. */
6
+ export interface TrustedBotRequestContext {
7
+ readonly ip?: string;
8
+ readonly userAgent?: string;
9
+ readonly origin?: string;
10
+ readonly metadata?: Readonly<Record<string, unknown>>;
11
+ }
12
+ export interface BotChallengeVerifyInput {
13
+ readonly proof: BrowserBotProof;
14
+ readonly operation: BotProtectionOperation;
15
+ readonly request: TrustedBotRequestContext;
16
+ readonly expectedAction: string;
17
+ readonly allowedHostnames?: readonly string[];
18
+ }
19
+ export type BotChallengeVerifierResult = {
20
+ readonly valid: true;
21
+ readonly action: string;
22
+ readonly hostname?: string;
23
+ } | {
24
+ readonly valid: false;
25
+ readonly reason?: "invalid-token" | "action-mismatch" | "hostname-mismatch";
26
+ };
27
+ declare const BotChallengeProviderError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
28
+ readonly _tag: "BotChallengeProviderError";
29
+ } & Readonly<A>;
30
+ export declare class BotChallengeProviderError extends BotChallengeProviderError_base<{
31
+ readonly message: string;
32
+ readonly retryable: boolean;
33
+ readonly cause?: unknown;
34
+ }> {
35
+ }
36
+ export interface BotChallengeVerifierService {
37
+ readonly verify: (input: BotChallengeVerifyInput) => Effect.Effect<BotChallengeVerifierResult, BotChallengeProviderError>;
38
+ }
39
+ declare const BotChallengeVerifier_base: Context.ServiceClass<BotChallengeVerifier, "auth/BotChallengeVerifier", BotChallengeVerifierService>;
40
+ export declare class BotChallengeVerifier extends BotChallengeVerifier_base {
41
+ }
42
+ export type BotProtectionOutageMode = "fail-open" | "fail-closed";
43
+ export type BotProtectionDecision = {
44
+ readonly type: "Skip";
45
+ } | {
46
+ readonly type: "Verify";
47
+ readonly action: string;
48
+ readonly allowedHostnames?: readonly string[];
49
+ readonly outageMode: BotProtectionOutageMode;
50
+ };
51
+ export interface BotProtectionPolicyInput {
52
+ readonly operation: BotProtectionOperation;
53
+ readonly request: TrustedBotRequestContext;
54
+ }
55
+ export interface BotProtectionPolicyService {
56
+ readonly decide: (input: BotProtectionPolicyInput) => Effect.Effect<BotProtectionDecision>;
57
+ }
58
+ declare const BotProtectionPolicy_base: Context.ServiceClass<BotProtectionPolicy, "auth/BotProtectionPolicy", BotProtectionPolicyService>;
59
+ export declare class BotProtectionPolicy extends BotProtectionPolicy_base {
60
+ }
61
+ declare const AbuseProtectionDeniedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
62
+ readonly _tag: "AbuseProtectionDeniedError";
63
+ } & Readonly<A>;
64
+ export declare class AbuseProtectionDeniedError extends AbuseProtectionDeniedError_base<{
65
+ readonly message: string;
66
+ }> {
67
+ }
68
+ declare const AbuseProtectionConfigError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
69
+ readonly _tag: "AbuseProtectionConfigError";
70
+ } & Readonly<A>;
71
+ export declare class AbuseProtectionConfigError extends AbuseProtectionConfigError_base<{
72
+ readonly message: string;
73
+ }> {
74
+ }
75
+ export interface EnforceBotProtectionInput extends BotProtectionPolicyInput {
76
+ readonly proof?: BrowserBotProof;
77
+ }
78
+ export interface BotProtectionService {
79
+ readonly enforce: (input: EnforceBotProtectionInput) => Effect.Effect<void, AbuseProtectionDeniedError | AbuseProtectionConfigError>;
80
+ }
81
+ declare const BotProtection_base: Context.ServiceClass<BotProtection, "auth/BotProtection", BotProtectionService>;
82
+ export declare class BotProtection extends BotProtection_base {
83
+ }
84
+ export declare namespace BotProtection {
85
+ const skip: () => BotProtectionDecision;
86
+ const verify: (input: Omit<Extract<BotProtectionDecision, {
87
+ readonly type: "Verify";
88
+ }>, "type">) => BotProtectionDecision;
89
+ }
90
+ export declare const makeBotProtection: (dependencies: {
91
+ readonly policy: BotProtectionPolicyService;
92
+ readonly verifier: BotChallengeVerifierService;
93
+ }) => BotProtectionService;
94
+ export declare const enforceBotProtection: (input: EnforceBotProtectionInput) => Effect.Effect<void, AbuseProtectionConfigError | AbuseProtectionDeniedError, BotProtection>;
95
+ export declare const BotChallengeVerifierNoopLive: Layer.Layer<BotChallengeVerifier, never, never>;
96
+ export declare const BotProtectionPolicyDefaultLive: Layer.Layer<BotProtectionPolicy, never, never>;
97
+ export declare const BotProtectionNoopLive: Layer.Layer<BotProtection, never, never>;
98
+ export declare const BotProtectionDefaultLive: Layer.Layer<BotProtection, never, BotChallengeVerifier | BotProtectionPolicy>;
99
+ export {};
100
+ //# sourceMappingURL=AbuseProtection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbuseProtection.d.ts","sourceRoot":"","sources":["../src/AbuseProtection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { Context, Data, Effect, Layer, Redacted } from "effect";
2
+ export class BotChallengeProviderError extends Data.TaggedError("BotChallengeProviderError") {
3
+ }
4
+ export class BotChallengeVerifier extends Context.Service()("auth/BotChallengeVerifier") {
5
+ }
6
+ export class BotProtectionPolicy extends Context.Service()("auth/BotProtectionPolicy") {
7
+ }
8
+ export class AbuseProtectionDeniedError extends Data.TaggedError("AbuseProtectionDeniedError") {
9
+ }
10
+ export class AbuseProtectionConfigError extends Data.TaggedError("AbuseProtectionConfigError") {
11
+ }
12
+ export class BotProtection extends Context.Service()("auth/BotProtection") {
13
+ }
14
+ (function (BotProtection) {
15
+ BotProtection.skip = () => ({ type: "Skip" });
16
+ BotProtection.verify = (input) => ({ type: "Verify", ...input });
17
+ })(BotProtection || (BotProtection = {}));
18
+ const denied = () => new AbuseProtectionDeniedError({ message: "Request could not be verified" });
19
+ export const makeBotProtection = (dependencies) => BotProtection.of({
20
+ enforce: (input) => Effect.gen(function* () {
21
+ const decision = yield* dependencies.policy.decide(input);
22
+ if (decision.type === "Skip") {
23
+ return;
24
+ }
25
+ if (decision.action.trim().length === 0) {
26
+ return yield* new AbuseProtectionConfigError({
27
+ message: "Bot protection action is not configured",
28
+ });
29
+ }
30
+ if (input.proof === undefined) {
31
+ return yield* denied();
32
+ }
33
+ const result = yield* dependencies.verifier
34
+ .verify({
35
+ proof: input.proof,
36
+ operation: input.operation,
37
+ request: input.request,
38
+ expectedAction: decision.action,
39
+ allowedHostnames: decision.allowedHostnames,
40
+ })
41
+ .pipe(Effect.catchTag("BotChallengeProviderError", (error) => decision.outageMode === "fail-open" && error.retryable
42
+ ? Effect.succeed(undefined)
43
+ : Effect.fail(new AbuseProtectionConfigError({
44
+ message: "Bot challenge verifier failed",
45
+ }))));
46
+ if (result === undefined) {
47
+ return;
48
+ }
49
+ if (!result.valid || result.action !== decision.action) {
50
+ return yield* denied();
51
+ }
52
+ if (decision.allowedHostnames !== undefined &&
53
+ (result.hostname === undefined ||
54
+ !decision.allowedHostnames.includes(result.hostname))) {
55
+ return yield* denied();
56
+ }
57
+ }),
58
+ });
59
+ export const enforceBotProtection = (input) => Effect.flatMap(BotProtection, (service) => service.enforce(input));
60
+ export const BotChallengeVerifierNoopLive = Layer.succeed(BotChallengeVerifier, BotChallengeVerifier.of({
61
+ verify: () => Effect.succeed({ valid: false }),
62
+ }));
63
+ export const BotProtectionPolicyDefaultLive = Layer.succeed(BotProtectionPolicy, BotProtectionPolicy.of({ decide: () => Effect.succeed({ type: "Skip" }) }));
64
+ export const BotProtectionNoopLive = Layer.succeed(BotProtection, BotProtection.of({ enforce: () => Effect.void }));
65
+ export const BotProtectionDefaultLive = Layer.effect(BotProtection, Effect.gen(function* () {
66
+ return makeBotProtection({
67
+ policy: yield* BotProtectionPolicy,
68
+ verifier: yield* BotChallengeVerifier,
69
+ });
70
+ }));
71
+ //# sourceMappingURL=AbuseProtection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbuseProtection.js","sourceRoot":"","sources":["../src/AbuseProtection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,344 @@
1
+ import { Brand, Context, Effect, Layer, Redacted, Schema } from "effect";
2
+ import type * as OptionTypes from "effect/Option";
3
+ import { Crypto } from "./Crypto.js";
4
+ import type { UnixMillis } from "./Identifiers.js";
5
+ import { PermissionSubject } from "./Permission.js";
6
+ export type AccessGrantId = Brand.Branded<string, "auth/AccessGrantId">;
7
+ export declare const AccessGrantId: Brand.Constructor<AccessGrantId>;
8
+ export declare const AccessGrantIdSchema: Schema.brand<Schema.String, "auth/AccessGrantId">;
9
+ export type AccessGrantToken = Brand.Branded<string, "auth/AccessGrantToken">;
10
+ export declare const AccessGrantToken: Brand.Constructor<AccessGrantToken>;
11
+ export type AccessGrantTokenHash = Brand.Branded<string, "auth/AccessGrantTokenHash">;
12
+ export declare const AccessGrantTokenHash: Brand.Constructor<AccessGrantTokenHash>;
13
+ export declare const AccessGrantTokenHashSchema: Schema.brand<Schema.String, "auth/AccessGrantTokenHash">;
14
+ export declare const accessGrantTokenVersion: "agr1";
15
+ export declare const accessGrantIdBytes = 16;
16
+ export declare const accessGrantSecretBytes = 32;
17
+ export type AccessGrantTokenOperation = "generate" | "parse" | "hash" | "verify";
18
+ declare const AccessGrantTokenError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
19
+ readonly _tag: "AccessGrantTokenError";
20
+ } & Readonly<A>;
21
+ export declare class AccessGrantTokenError extends AccessGrantTokenError_base<{
22
+ readonly operation: AccessGrantTokenOperation;
23
+ readonly message: string;
24
+ readonly cause?: unknown;
25
+ }> {
26
+ }
27
+ export interface GeneratedAccessGrantToken {
28
+ readonly id: AccessGrantId;
29
+ readonly token: Redacted.Redacted<AccessGrantToken>;
30
+ }
31
+ export interface ParsedAccessGrantToken {
32
+ readonly id: AccessGrantId;
33
+ }
34
+ export interface AccessGrantTokenHashInput {
35
+ readonly token: Redacted.Redacted<string>;
36
+ }
37
+ export interface AccessGrantTokenVerifyInput extends AccessGrantTokenHashInput {
38
+ readonly tokenHash: AccessGrantTokenHash;
39
+ }
40
+ export interface AccessGrantTokensService {
41
+ readonly generateId: () => Effect.Effect<AccessGrantId, AccessGrantTokenError>;
42
+ readonly generate: () => Effect.Effect<GeneratedAccessGrantToken, AccessGrantTokenError>;
43
+ readonly parse: (token: Redacted.Redacted<string>) => Effect.Effect<ParsedAccessGrantToken, AccessGrantTokenError>;
44
+ readonly hash: (input: AccessGrantTokenHashInput) => Effect.Effect<AccessGrantTokenHash, AccessGrantTokenError>;
45
+ readonly verify: (input: AccessGrantTokenVerifyInput) => Effect.Effect<boolean, AccessGrantTokenError>;
46
+ }
47
+ declare const AccessGrantTokens_base: Context.ServiceClass<AccessGrantTokens, "auth/AccessGrantTokens", AccessGrantTokensService> & {
48
+ readonly make: Effect.Effect<AccessGrantTokensService, never, Crypto>;
49
+ };
50
+ export declare class AccessGrantTokens extends AccessGrantTokens_base {
51
+ }
52
+ export declare const AccessGrantTokensSha256Live: Layer.Layer<AccessGrantTokens, never, Crypto>;
53
+ export interface AccessGrantTarget {
54
+ readonly type: string;
55
+ readonly id: string;
56
+ }
57
+ export declare const AccessGrantTarget: {
58
+ readonly make: (type: string, id: string) => AccessGrantTarget;
59
+ };
60
+ export interface AccessGrantBearerBinding {
61
+ readonly type: "bearer";
62
+ }
63
+ export interface AccessGrantSubjectBinding {
64
+ readonly type: "subject";
65
+ readonly subject: PermissionSubject;
66
+ }
67
+ export interface AccessGrantSubjectAndBearerBinding {
68
+ readonly type: "subject-and-bearer";
69
+ readonly subject: PermissionSubject;
70
+ }
71
+ export type AccessGrantBinding = AccessGrantBearerBinding | AccessGrantSubjectBinding | AccessGrantSubjectAndBearerBinding;
72
+ export declare const AccessGrantBinding: {
73
+ readonly bearer: () => AccessGrantBearerBinding;
74
+ readonly subject: (subject: PermissionSubject) => AccessGrantSubjectBinding;
75
+ readonly subjectAndBearer: (subject: PermissionSubject) => AccessGrantSubjectAndBearerBinding;
76
+ };
77
+ interface AccessGrantBase {
78
+ readonly id: AccessGrantId;
79
+ readonly target: AccessGrantTarget;
80
+ readonly capabilities: readonly string[];
81
+ readonly issuer?: PermissionSubject;
82
+ readonly createdAt: UnixMillis;
83
+ readonly expiresAt?: UnixMillis;
84
+ readonly revokedAt?: UnixMillis;
85
+ readonly supersededAt?: UnixMillis;
86
+ readonly supersededById?: AccessGrantId;
87
+ readonly metadata?: Schema.JsonObject;
88
+ }
89
+ export type BearerAccessGrant = AccessGrantBase & {
90
+ readonly binding: AccessGrantBearerBinding | AccessGrantSubjectAndBearerBinding;
91
+ };
92
+ export type SubjectAccessGrant = AccessGrantBase & {
93
+ readonly binding: AccessGrantSubjectBinding;
94
+ };
95
+ export type AccessGrant = BearerAccessGrant | SubjectAccessGrant;
96
+ export type AccessGrantBearerRecord = BearerAccessGrant & {
97
+ readonly tokenHash: AccessGrantTokenHash;
98
+ };
99
+ export type AccessGrantSubjectRecord = SubjectAccessGrant & {
100
+ readonly tokenHash?: never;
101
+ };
102
+ export type AccessGrantRecord = AccessGrantBearerRecord | AccessGrantSubjectRecord;
103
+ export declare const AccessGrantJsonObjectSchema: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
104
+ export declare const AccessGrantTargetSchema: Schema.Struct<{
105
+ readonly type: Schema.String;
106
+ readonly id: Schema.String;
107
+ }>;
108
+ export declare const AccessGrantBindingSchema: Schema.Union<readonly [Schema.Struct<{
109
+ readonly type: Schema.Literal<"bearer">;
110
+ }>, Schema.Struct<{
111
+ readonly type: Schema.Literal<"subject">;
112
+ readonly subject: Schema.Struct<{
113
+ readonly type: Schema.String;
114
+ readonly id: Schema.String;
115
+ }>;
116
+ }>, Schema.Struct<{
117
+ readonly type: Schema.Literal<"subject-and-bearer">;
118
+ readonly subject: Schema.Struct<{
119
+ readonly type: Schema.String;
120
+ readonly id: Schema.String;
121
+ }>;
122
+ }>]>;
123
+ export declare const AccessGrantRecordSchema: Schema.Struct<{
124
+ readonly id: Schema.brand<Schema.String, "auth/AccessGrantId">;
125
+ readonly target: Schema.Struct<{
126
+ readonly type: Schema.String;
127
+ readonly id: Schema.String;
128
+ }>;
129
+ readonly capabilities: Schema.$Array<Schema.String>;
130
+ readonly binding: Schema.Union<readonly [Schema.Struct<{
131
+ readonly type: Schema.Literal<"bearer">;
132
+ }>, Schema.Struct<{
133
+ readonly type: Schema.Literal<"subject">;
134
+ readonly subject: Schema.Struct<{
135
+ readonly type: Schema.String;
136
+ readonly id: Schema.String;
137
+ }>;
138
+ }>, Schema.Struct<{
139
+ readonly type: Schema.Literal<"subject-and-bearer">;
140
+ readonly subject: Schema.Struct<{
141
+ readonly type: Schema.String;
142
+ readonly id: Schema.String;
143
+ }>;
144
+ }>]>;
145
+ readonly issuer: Schema.optional<Schema.Struct<{
146
+ readonly type: Schema.String;
147
+ readonly id: Schema.String;
148
+ }>>;
149
+ readonly createdAt: Schema.brand<Schema.Number, "auth/UnixMillis">;
150
+ readonly expiresAt: Schema.optional<Schema.brand<Schema.Number, "auth/UnixMillis">>;
151
+ readonly tokenHash: Schema.optional<Schema.brand<Schema.String, "auth/AccessGrantTokenHash">>;
152
+ readonly revokedAt: Schema.optional<Schema.brand<Schema.Number, "auth/UnixMillis">>;
153
+ readonly supersededAt: Schema.optional<Schema.brand<Schema.Number, "auth/UnixMillis">>;
154
+ readonly supersededById: Schema.optional<Schema.brand<Schema.String, "auth/AccessGrantId">>;
155
+ readonly metadata: Schema.optional<Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
156
+ }>;
157
+ export declare const isAccessGrantRecord: <I>(input: I) => input is I & {
158
+ readonly id: string & Brand.Brand<"auth/AccessGrantId">;
159
+ readonly target: Schema.Struct.ReadonlySide<{
160
+ readonly type: Schema.String;
161
+ readonly id: Schema.String;
162
+ }, "Type">;
163
+ readonly capabilities: readonly string[];
164
+ readonly binding: Schema.Struct.ReadonlySide<{
165
+ readonly type: Schema.Literal<"bearer">;
166
+ }, "Type"> | Schema.Struct.ReadonlySide<{
167
+ readonly type: Schema.Literal<"subject">;
168
+ readonly subject: Schema.Struct<{
169
+ readonly type: Schema.String;
170
+ readonly id: Schema.String;
171
+ }>;
172
+ }, "Type"> | Schema.Struct.ReadonlySide<{
173
+ readonly type: Schema.Literal<"subject-and-bearer">;
174
+ readonly subject: Schema.Struct<{
175
+ readonly type: Schema.String;
176
+ readonly id: Schema.String;
177
+ }>;
178
+ }, "Type">;
179
+ readonly issuer?: Schema.Struct.ReadonlySide<{
180
+ readonly type: Schema.String;
181
+ readonly id: Schema.String;
182
+ }, "Type"> | undefined;
183
+ readonly createdAt: number & Brand.Brand<"auth/UnixMillis">;
184
+ readonly expiresAt?: (number & Brand.Brand<"auth/UnixMillis">) | undefined;
185
+ readonly tokenHash?: (string & Brand.Brand<"auth/AccessGrantTokenHash">) | undefined;
186
+ readonly revokedAt?: (number & Brand.Brand<"auth/UnixMillis">) | undefined;
187
+ readonly supersededAt?: (number & Brand.Brand<"auth/UnixMillis">) | undefined;
188
+ readonly supersededById?: (string & Brand.Brand<"auth/AccessGrantId">) | undefined;
189
+ readonly metadata?: {
190
+ readonly [x: string]: Schema.Json;
191
+ } | undefined;
192
+ };
193
+ export interface AccessGrantStoreListInput {
194
+ readonly target?: AccessGrantTarget;
195
+ readonly issuer?: PermissionSubject;
196
+ readonly subject?: PermissionSubject;
197
+ }
198
+ export interface AccessGrantStoreRevokeInput {
199
+ readonly id: AccessGrantId;
200
+ readonly revokedAt: UnixMillis;
201
+ }
202
+ export interface AccessGrantStoreSupersedeInput {
203
+ readonly id: AccessGrantId;
204
+ readonly supersededAt: UnixMillis;
205
+ readonly replacement: AccessGrantRecord;
206
+ }
207
+ export interface AccessGrantSupersededRecords {
208
+ readonly previous: AccessGrantRecord;
209
+ readonly replacement: AccessGrantRecord;
210
+ }
211
+ export type AccessGrantStoreOperation = "insert" | "find" | "list" | "revoke" | "supersede";
212
+ declare const AccessGrantStoreError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
213
+ readonly _tag: "AccessGrantStoreError";
214
+ } & Readonly<A>;
215
+ export declare class AccessGrantStoreError extends AccessGrantStoreError_base<{
216
+ readonly operation: AccessGrantStoreOperation;
217
+ readonly message: string;
218
+ readonly cause?: unknown;
219
+ }> {
220
+ }
221
+ export interface AccessGrantStoreService {
222
+ readonly insert: (record: AccessGrantRecord) => Effect.Effect<boolean, AccessGrantStoreError>;
223
+ readonly findById: (id: AccessGrantId) => Effect.Effect<OptionTypes.Option<AccessGrantRecord>, AccessGrantStoreError>;
224
+ readonly list: (input?: AccessGrantStoreListInput) => Effect.Effect<readonly AccessGrantRecord[], AccessGrantStoreError>;
225
+ readonly revoke: (input: AccessGrantStoreRevokeInput) => Effect.Effect<OptionTypes.Option<AccessGrantRecord>, AccessGrantStoreError>;
226
+ readonly supersede: (input: AccessGrantStoreSupersedeInput) => Effect.Effect<OptionTypes.Option<AccessGrantSupersededRecords>, AccessGrantStoreError>;
227
+ }
228
+ declare const AccessGrantStore_base: Context.ServiceClass<AccessGrantStore, "auth/AccessGrantStore", AccessGrantStoreService>;
229
+ export declare class AccessGrantStore extends AccessGrantStore_base {
230
+ }
231
+ export declare const AccessGrantStoreMemoryLive: Layer.Layer<AccessGrantStore>;
232
+ export type AccessGrantActivity = "active" | "inactive" | "all";
233
+ export interface AccessGrantIssueInput {
234
+ readonly target: AccessGrantTarget;
235
+ readonly capabilities: readonly string[];
236
+ readonly binding: AccessGrantBinding;
237
+ readonly issuer?: PermissionSubject;
238
+ readonly expiresAt?: UnixMillis;
239
+ readonly metadata?: Schema.JsonObject;
240
+ }
241
+ export interface IssuedBearerAccessGrant {
242
+ readonly grant: BearerAccessGrant;
243
+ readonly token: Redacted.Redacted<AccessGrantToken>;
244
+ }
245
+ export interface IssuedSubjectAccessGrant {
246
+ readonly grant: SubjectAccessGrant;
247
+ readonly token?: never;
248
+ }
249
+ export type IssuedAccessGrant = IssuedBearerAccessGrant | IssuedSubjectAccessGrant;
250
+ export interface AccessGrantManagementListInput extends AccessGrantStoreListInput {
251
+ readonly activity?: AccessGrantActivity;
252
+ }
253
+ export interface AccessGrantRevokeInput {
254
+ readonly id: AccessGrantId;
255
+ }
256
+ export interface AccessGrantSupersedeInput {
257
+ readonly id: AccessGrantId;
258
+ readonly expiresAt?: UnixMillis;
259
+ readonly metadata?: Schema.JsonObject;
260
+ }
261
+ export interface SupersededBearerAccessGrant extends IssuedBearerAccessGrant {
262
+ readonly previous: AccessGrant;
263
+ }
264
+ export interface SupersededSubjectAccessGrant extends IssuedSubjectAccessGrant {
265
+ readonly previous: AccessGrant;
266
+ }
267
+ export type SupersededAccessGrant = SupersededBearerAccessGrant | SupersededSubjectAccessGrant;
268
+ export type AccessGrantManagementOperation = "issue" | "list" | "get" | "revoke" | "supersede";
269
+ export type AccessGrantManagementErrorReason = "invalid_input" | "not_found" | "inactive" | "conflict" | "token" | "storage";
270
+ declare const AccessGrantManagementError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
271
+ readonly _tag: "AccessGrantManagementError";
272
+ } & Readonly<A>;
273
+ export declare class AccessGrantManagementError extends AccessGrantManagementError_base<{
274
+ readonly operation: AccessGrantManagementOperation;
275
+ readonly reason: AccessGrantManagementErrorReason;
276
+ readonly message: string;
277
+ readonly cause?: unknown;
278
+ }> {
279
+ }
280
+ export interface AccessGrantManagementService {
281
+ readonly issue: (input: AccessGrantIssueInput) => Effect.Effect<IssuedAccessGrant, AccessGrantManagementError>;
282
+ readonly list: (input?: AccessGrantManagementListInput) => Effect.Effect<readonly AccessGrant[], AccessGrantManagementError>;
283
+ readonly get: (id: AccessGrantId) => Effect.Effect<OptionTypes.Option<AccessGrant>, AccessGrantManagementError>;
284
+ readonly revoke: (input: AccessGrantRevokeInput) => Effect.Effect<AccessGrant, AccessGrantManagementError>;
285
+ readonly supersede: (input: AccessGrantSupersedeInput) => Effect.Effect<SupersededAccessGrant, AccessGrantManagementError>;
286
+ }
287
+ declare const AccessGrantManagement_base: Context.ServiceClass<AccessGrantManagement, "auth/AccessGrantManagement", AccessGrantManagementService> & {
288
+ readonly make: Effect.Effect<AccessGrantManagementService, never, AccessGrantStore | AccessGrantTokens>;
289
+ };
290
+ export declare class AccessGrantManagement extends AccessGrantManagement_base {
291
+ }
292
+ export declare const AccessGrantManagementLive: Layer.Layer<AccessGrantManagement, never, AccessGrantTokens | AccessGrantStore>;
293
+ export interface AccessGrantCheckInput {
294
+ readonly grantId?: AccessGrantId;
295
+ readonly bearerToken?: Redacted.Redacted<string>;
296
+ readonly target: AccessGrantTarget;
297
+ readonly action: string;
298
+ }
299
+ export type AccessGrantDenyReason = "grant-id-required" | "malformed-token" | "grant-reference-mismatch" | "grant-not-found" | "invalid-record" | "revoked" | "superseded" | "expired" | "target-mismatch" | "capability-missing" | "bearer-required" | "invalid-bearer" | "subject-required" | "subject-mismatch";
300
+ export interface AccessGrantAllowedDecision {
301
+ readonly type: "allowed";
302
+ readonly grant: AccessGrant;
303
+ readonly principal: PermissionSubject;
304
+ }
305
+ export interface AccessGrantDeniedDecision {
306
+ readonly type: "denied";
307
+ readonly reason: AccessGrantDenyReason;
308
+ readonly grantId?: AccessGrantId;
309
+ }
310
+ export type AccessGrantDecision = AccessGrantAllowedDecision | AccessGrantDeniedDecision;
311
+ export type AccessGrantAuthorizationFailureKind = "store" | "token";
312
+ declare const AccessGrantAuthorizationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
313
+ readonly _tag: "AccessGrantAuthorizationError";
314
+ } & Readonly<A>;
315
+ export declare class AccessGrantAuthorizationError extends AccessGrantAuthorizationError_base<{
316
+ readonly operation: "check";
317
+ readonly kind: AccessGrantAuthorizationFailureKind;
318
+ readonly message: string;
319
+ readonly cause: AccessGrantStoreError | AccessGrantTokenError;
320
+ }> {
321
+ }
322
+ declare const AccessGrantDeniedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
323
+ readonly _tag: "AccessGrantDeniedError";
324
+ } & Readonly<A>;
325
+ /** Expected authorization denials from `require`; operational failures stay separate. */
326
+ export declare class AccessGrantDeniedError extends AccessGrantDeniedError_base<{
327
+ readonly reason: AccessGrantDenyReason;
328
+ readonly grantId?: AccessGrantId;
329
+ }> {
330
+ }
331
+ export interface AccessGrantsService {
332
+ /** Subject bindings read optional `CurrentPrincipal`; never copy a request subject into context. */
333
+ readonly check: (input: AccessGrantCheckInput) => Effect.Effect<AccessGrantDecision, AccessGrantAuthorizationError>;
334
+ /** Lifts a denied decision into `AccessGrantDeniedError` without hiding operational errors. */
335
+ readonly require: (input: AccessGrantCheckInput) => Effect.Effect<AccessGrantAllowedDecision, AccessGrantDeniedError | AccessGrantAuthorizationError>;
336
+ }
337
+ declare const AccessGrants_base: Context.ServiceClass<AccessGrants, "auth/AccessGrants", AccessGrantsService> & {
338
+ readonly make: Effect.Effect<AccessGrantsService, never, AccessGrantStore | AccessGrantTokens>;
339
+ };
340
+ export declare class AccessGrants extends AccessGrants_base {
341
+ }
342
+ export declare const AccessGrantsLive: Layer.Layer<AccessGrants, never, AccessGrantTokens | AccessGrantStore>;
343
+ export {};
344
+ //# sourceMappingURL=AccessGrant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessGrant.d.ts","sourceRoot":"","sources":["../src/AccessGrant.ts"],"names":[],"mappings":"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"}