permdock 0.1.0 → 0.2.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 (349) hide show
  1. package/README.md +106 -47
  2. package/dist/a2a/index.d.ts +7 -16
  3. package/dist/a2a/index.js +59 -98
  4. package/dist/adapter-context-mlWsVGGg.js +23 -0
  5. package/dist/ai-sdk/index.d.ts +37 -16
  6. package/dist/ai-sdk/index.js +30 -13
  7. package/dist/approvals/index.d.ts +3 -3
  8. package/dist/approvals/index.js +5 -4
  9. package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
  10. package/dist/approvers-DT4AVyIg.js +52 -0
  11. package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
  12. package/dist/{arazzo-aoTkqYsJ.js → arazzo-cmvX2jDe.js} +2 -2
  13. package/dist/authzen/index.d.ts +4 -13
  14. package/dist/authzen/index.js +16 -50
  15. package/dist/better-auth/index.d.ts +20 -3
  16. package/dist/better-auth/index.js +27 -7
  17. package/dist/better-supabase/index.d.ts +206 -0
  18. package/dist/better-supabase/index.js +620 -0
  19. package/dist/bind-CVy3Espv.d.ts +25 -0
  20. package/dist/bind-VnYn2HKq.js +97 -0
  21. package/dist/boundary-BM8a_P6E.js +13 -0
  22. package/dist/boundary-BmHxVH1J.d.ts +15 -0
  23. package/dist/canonical-json-DemiK4Vp.js +26 -0
  24. package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
  25. package/dist/{capability-BDG_nkxt.d.ts → capability-Dq43tT1u.d.ts} +2 -2
  26. package/dist/catalog/index.d.ts +1 -1
  27. package/dist/catalog/index.js +1 -1
  28. package/dist/catalog-BjZSovXQ.js +2 -0
  29. package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-Dsc9y7sd.js} +23 -12
  30. package/dist/{catalog-B0E6bggc.js → catalog-h2tlKFkq.js} +2 -2
  31. package/dist/{catalog-H-vFGwWK.js → catalog-z8q6bi_r.js} +4 -4
  32. package/dist/claude-agent/index.d.ts +5 -14
  33. package/dist/claude-agent/index.js +4 -10
  34. package/dist/clerk/index.d.ts +12 -3
  35. package/dist/clerk/index.js +26 -5
  36. package/dist/cli/bin.js +1 -1
  37. package/dist/cli/index.d.ts +3 -3
  38. package/dist/cli/index.js +2 -2
  39. package/dist/clients-C7zLFuWT.d.ts +12 -0
  40. package/dist/clients-DjU5ABMy.js +23 -0
  41. package/dist/cloud/index.d.ts +4 -5
  42. package/dist/cloud/index.js +20 -6
  43. package/dist/{cloud-BNQTrmrr.js → cloud-BGhHS-lY.js} +2 -2
  44. package/dist/{cloud-Cuxr6Czw.js → cloud-Bo3e9Ak3.js} +7 -6
  45. package/dist/{collect-O-tOtbnk.js → collect-DDDv_ESs.js} +194 -42
  46. package/dist/collect-DLlujdHC.js +83 -0
  47. package/dist/collect-rG2IQ3t0.js +2 -0
  48. package/dist/{commands-BMh_Etm2.js → commands-DWOrSQic.js} +16 -12
  49. package/dist/compile/index.d.ts +3 -0
  50. package/dist/compile/index.js +2 -0
  51. package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
  52. package/dist/compile-CNnl6uIt.d.ts +94 -0
  53. package/dist/config-BJiM-xAm.js +157 -0
  54. package/dist/config-Bn00Z3ks.js +36 -0
  55. package/dist/config-report-Dw_JcUqT.js +44 -0
  56. package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
  57. package/dist/{context-CKEAabd7.js → context-Ttp0ekMT.js} +36 -27
  58. package/dist/convex/index.d.ts +9 -4
  59. package/dist/convex/index.js +14 -4
  60. package/dist/create-BWyx3jua.d.ts +245 -0
  61. package/dist/create-CPhDL6qx.js +253 -0
  62. package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
  63. package/dist/delegation-D8pUEuce.js +103 -0
  64. package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
  65. package/dist/{describe-DernyItf.d.ts → describe-PdoqESvg.d.ts} +9 -10
  66. package/dist/{diff-x5Il8LVa.js → diff-B8Tunc3o.js} +44 -11
  67. package/dist/{diff-BUzf5Poi.js → diff-CzqLxZ77.js} +2 -2
  68. package/dist/doctor-WpvG6p4k.js +1194 -0
  69. package/dist/doctor-collect-ByfYlNv1.js +664 -0
  70. package/dist/{doctor-Bqo6FwUa.js → doctor-rOr-4ZfS.js} +2 -2
  71. package/dist/drizzle/index.d.ts +4 -3
  72. package/dist/drizzle/index.js +3 -3
  73. package/dist/elysia/index.d.ts +6 -28
  74. package/dist/elysia/index.js +16 -60
  75. package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
  76. package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
  77. package/dist/{errors-DbZ1YOnb.d.ts → errors-DAqevpNk.d.ts} +8 -21
  78. package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
  79. package/dist/evaluation-items-CfCCejQd.js +40 -0
  80. package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
  81. package/dist/eve/index.d.ts +6 -15
  82. package/dist/eve/index.js +7 -12
  83. package/dist/expiry-BoBJ8Tvc.js +7 -0
  84. package/dist/express/index.d.ts +6 -29
  85. package/dist/express/index.js +28 -58
  86. package/dist/fastify/index.d.ts +6 -29
  87. package/dist/fastify/index.js +16 -65
  88. package/dist/fields-BMl1RxoX.js +26 -0
  89. package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
  90. package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
  91. package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
  92. package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-C3sHpZNS.js} +65 -48
  93. package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
  94. package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
  95. package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
  96. package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
  97. package/dist/helpers-H_KARDVC.js +421 -0
  98. package/dist/hono/index.d.ts +6 -28
  99. package/dist/hono/index.js +11 -43
  100. package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
  101. package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
  102. package/dist/http-SO7qGttf.js +44 -0
  103. package/dist/ids-DC4V4CFu.js +18 -0
  104. package/dist/{index-LF_hS-yn.d.ts → index-A0YNL8jZ.d.ts} +1 -1
  105. package/dist/index-CtE07CBF.d.ts +6 -0
  106. package/dist/{index-xIxJLwOQ.d.ts → index-D3vbkoSI.d.ts} +75 -7
  107. package/dist/{index-CltcQ4Bf.d.ts → index-D6_cSa1z.d.ts} +68 -5
  108. package/dist/index.d.ts +14 -9
  109. package/dist/index.js +22 -17
  110. package/dist/instance-options-BK_rNOSC.d.ts +11 -0
  111. package/dist/instance-options-Dhhcnm3y.js +22 -0
  112. package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
  113. package/dist/jwt/index.d.ts +10 -6
  114. package/dist/jwt/index.js +32 -13
  115. package/dist/kernel-GSQnMz3O.js +208 -0
  116. package/dist/kysely/index.d.ts +4 -3
  117. package/dist/kysely/index.js +3 -3
  118. package/dist/live-options-H2eG8dfJ.js +60 -0
  119. package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
  120. package/dist/load-DwJUafYN.js +2 -0
  121. package/dist/manifest-iaoBXHKc.js +783 -0
  122. package/dist/manifest-uDS9y5de.d.ts +206 -0
  123. package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
  124. package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
  125. package/dist/map-error-pgUWNNtG.js +23 -0
  126. package/dist/may-use-DndQ5tQ-.js +77 -0
  127. package/dist/mcp/index.d.ts +54 -22
  128. package/dist/mcp/index.js +218 -178
  129. package/dist/nest/index.d.ts +26 -31
  130. package/dist/nest/index.js +75 -84
  131. package/dist/next/client.d.ts +7 -8
  132. package/dist/next/client.js +11 -9
  133. package/dist/next/index.d.ts +30 -47
  134. package/dist/next/index.js +45 -60
  135. package/dist/next/plugin.d.ts +1 -1
  136. package/dist/next/plugin.js +32 -1
  137. package/dist/node/index.d.ts +9 -28
  138. package/dist/node/index.js +11 -43
  139. package/dist/openai/index.d.ts +6 -15
  140. package/dist/openai/index.js +7 -20
  141. package/dist/openapi/index.d.ts +87 -4
  142. package/dist/openapi/index.js +3 -3
  143. package/dist/{openapi-CwePaF7C.js → openapi-Bbg4wGVL.js} +3 -3
  144. package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
  145. package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
  146. package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
  147. package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
  148. package/dist/orpc/index.d.ts +15 -28
  149. package/dist/orpc/index.js +74 -117
  150. package/dist/otel/index.d.ts +2 -2
  151. package/dist/parse-BuyjxhZV.js +53 -0
  152. package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
  153. package/dist/parse-local-manifest-BrMozJCo.js +36 -0
  154. package/dist/pdp/index.d.ts +2 -2
  155. package/dist/pdp/index.js +14 -127
  156. package/dist/{permdock-yoZ7EjxX.js → permdock-CzqXjCpU.js} +641 -126
  157. package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
  158. package/dist/{permissions-CofRqesP.js → permissions-CpZrivYv.js} +3 -3
  159. package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
  160. package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
  161. package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
  162. package/dist/{policy-CInmNGkM.d.ts → policy-CFZAr_Al.d.ts} +330 -37
  163. package/dist/{policy-Cq2fB8Q5.d.ts → policy-D8UFyERw.d.ts} +2 -2
  164. package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
  165. package/dist/powersync-A8x_Yyvh.js +2 -0
  166. package/dist/powersync-C7kLglqX.js +540 -0
  167. package/dist/powersync-yW1UUFzp.js +62 -0
  168. package/dist/prisma/index.d.ts +3 -2
  169. package/dist/prisma/index.js +45 -20
  170. package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
  171. package/dist/problem-details-CkL50EEf.d.ts +7 -0
  172. package/dist/problem-details-_AMOYz-w.js +144 -0
  173. package/dist/{protected-BuPAycJT.d.ts → protected-CNsMzrVd.d.ts} +5 -4
  174. package/dist/protected-Cs6kTaHo.js +100 -0
  175. package/dist/protected-bZs6rbT1.d.ts +40 -0
  176. package/dist/{provider-wTAUda2v.d.ts → provider-Cjr62YMV.d.ts} +1 -1
  177. package/dist/provider-DLzpb2Xz.js +52 -0
  178. package/dist/provider-store-DNyC1y48.js +43 -0
  179. package/dist/react/index.d.ts +7 -5
  180. package/dist/react/index.js +5 -4
  181. package/dist/react/provider-client.d.ts +1 -1
  182. package/dist/react/provider-client.js +1 -1
  183. package/dist/react-native/index.d.ts +166 -10
  184. package/dist/react-native/index.js +607 -85
  185. package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
  186. package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
  187. package/dist/replay-BsOyTrdV.js +28 -0
  188. package/dist/replay-sqBGMnNs.d.ts +5 -0
  189. package/dist/resource-ref-CaS9yVPi.js +20 -0
  190. package/dist/revocations-Bhr0aMIC.js +27 -0
  191. package/dist/rls-BMNydpHk.js +2521 -0
  192. package/dist/{rls-BOFU3chG.js → rls-CEvs64Kj.js} +8 -3
  193. package/dist/rls-fields-BMasREhR.js +3502 -0
  194. package/dist/{rls-graph-DxQ39PJj.js → rls-graph-pc9fuXYm.js} +100 -36
  195. package/dist/{rls-import-CXV6LBlS.js → rls-import-D8F7j35Q.js} +7 -6
  196. package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-7wikfrVI.js} +6 -5
  197. package/dist/rls-ownership-B5Lkq62W.js +843 -0
  198. package/dist/rls-shared-aOQ4hGTO.js +493 -0
  199. package/dist/rls-verify-D8B7dOTh.js +745 -0
  200. package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
  201. package/dist/rpc-DOK54_CS.js +89 -0
  202. package/dist/{run-CJ6UvS3a.js → run-YXCJDNYk.js} +31 -12
  203. package/dist/runtime-CB8gQFvS.js +11 -0
  204. package/dist/{saas-BRrZzJkM.js → saas-Bj_FFkjN.js} +17 -7
  205. package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
  206. package/dist/scim/index.d.ts +1 -1
  207. package/dist/scim/index.js +1 -1
  208. package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
  209. package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
  210. package/dist/server/index.d.ts +22 -11
  211. package/dist/server/index.js +11 -8
  212. package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
  213. package/dist/shared-DRu8VFVM.js +123 -0
  214. package/dist/{sink-Cfr9-7YC.d.ts → sink-Gs6TTVa-.d.ts} +1 -1
  215. package/dist/skills-Biq5uup3.js +192 -0
  216. package/dist/{skills-C_lpV4Jx.js → skills-JaymNCdK.js} +10 -4
  217. package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
  218. package/dist/snapshot-cache-D6jLelln.js +44 -0
  219. package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
  220. package/dist/solid/index.d.ts +39 -9
  221. package/dist/solid/index.js +76 -85
  222. package/dist/sources-B0UvrJ21.js +534 -0
  223. package/dist/sources-BcJgw0lt.d.ts +192 -0
  224. package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
  225. package/dist/{src-CTNT-PBW.js → src-CSbUiozF.js} +149 -11
  226. package/dist/ssf/index.d.ts +3 -2
  227. package/dist/ssf/index.js +3 -29
  228. package/dist/store-DMAWwAJV.js +371 -0
  229. package/dist/{store-Bq90395i.d.ts → store-D_pjn91-.d.ts} +13 -4
  230. package/dist/store-options-yO0V6gRn.js +716 -0
  231. package/dist/{stores-CkG2HrSg.js → stores-4_sqiOA1.js} +10 -63
  232. package/dist/{stores-CvOnu_2T.d.ts → stores-DVR5NHLE.d.ts} +20 -9
  233. package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
  234. package/dist/{stream-BhMfZOwr.d.ts → stream-DlvG2hs-.d.ts} +2 -2
  235. package/dist/subject-settings-BwBmCdTR.js +128 -0
  236. package/dist/supabase/index.d.ts +122 -6
  237. package/dist/supabase/index.js +4 -3
  238. package/dist/supabase/middleware.d.ts +32 -27
  239. package/dist/supabase/middleware.js +56 -22
  240. package/dist/{supabase-D8UlBA7Z.js → supabase-CwafwxxF.js} +3 -3
  241. package/dist/{supabase-DTxGtYdi.js → supabase-DTBaC20O.js} +345 -367
  242. package/dist/supabase-config-Bs44dare.js +472 -0
  243. package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-BuxLQLpU.js} +994 -708
  244. package/dist/supabase-hook-D5qVd_D8.js +2 -0
  245. package/dist/supautils-DYZnzRWV.js +91 -0
  246. package/dist/svelte/PermissionBoundary.svelte +37 -0
  247. package/dist/svelte/Protected.svelte +8 -2
  248. package/dist/svelte/index.d.ts +9 -6
  249. package/dist/svelte/index.js +61 -7
  250. package/dist/svelte/runtime.d.ts +4 -3
  251. package/dist/svelte/runtime.js +4 -3
  252. package/dist/svelte/source.d.ts +9 -6
  253. package/dist/svelte/source.js +7 -4
  254. package/dist/terminal/index.d.ts +6 -14
  255. package/dist/terminal/index.js +44 -32
  256. package/dist/testing/index.d.ts +105 -16
  257. package/dist/testing/index.js +504 -40
  258. package/dist/testing/saas/index.d.ts +4 -4
  259. package/dist/testing/saas/index.js +2 -2
  260. package/dist/testing/saas/permissions.d.ts +1 -1
  261. package/dist/testing/saas/permissions.js +1 -1
  262. package/dist/token-CIWxJOCh.js +50 -0
  263. package/dist/trpc/index.d.ts +7 -26
  264. package/dist/trpc/index.js +17 -100
  265. package/dist/types-9AWO9EGt.d.ts +197 -0
  266. package/dist/{types-D6Z6-rKJ.d.ts → types-BPxgszlT.d.ts} +260 -22
  267. package/dist/{types-BvBk1wgn.d.ts → types-BVyImy5I.d.ts} +5 -3
  268. package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
  269. package/dist/types-C3s9xVJG.d.ts +48 -0
  270. package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
  271. package/dist/types-kxznc7cn.d.ts +52 -0
  272. package/dist/{types-B8w5PFtS.d.ts → types-vKyAMtcX.d.ts} +17 -1
  273. package/dist/{types-B9dmiiab.d.ts → types-vNSDF7Dq.d.ts} +1 -1
  274. package/dist/{sources-DOpW5Ila.d.ts → types-yF5LmQVD.d.ts} +86 -127
  275. package/dist/unplugin/index.d.ts +1 -1
  276. package/dist/unplugin/index.js +10 -9
  277. package/dist/{usage-1ozMubLY.js → usage-D07N9QJ3.js} +2 -2
  278. package/dist/usage-D82l1CwK.js +2 -0
  279. package/dist/{usage-CUnK6Ou9.js → usage-DG1oeCca.js} +225 -62
  280. package/dist/validation-error-CnjZ4t92.js +33 -0
  281. package/dist/validation-error-CtF23SrC.d.ts +26 -0
  282. package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
  283. package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
  284. package/dist/version-BvacVTZR.js +17 -0
  285. package/dist/views-Soe7bGSC.js +95 -0
  286. package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
  287. package/dist/vue/index.d.ts +35 -13
  288. package/dist/vue/index.js +86 -93
  289. package/dist/watch-Etoa_Mvr.js +2 -0
  290. package/dist/watch-UihESpsJ.js +128 -0
  291. package/dist/webmcp/index.d.ts +2 -2
  292. package/dist/webmcp/index.js +7 -13
  293. package/package.json +62 -36
  294. package/schemas/approval-request-v1.json +175 -0
  295. package/schemas/catalog-v1.json +29 -1
  296. package/schemas/supabase-claims-v1.json +6 -1
  297. package/schemas/supabase-manifest-v1.json +150 -6
  298. package/skills/permdock/SKILL.md +7 -7
  299. package/skills/permdock-agents/SKILL.md +5 -5
  300. package/skills/permdock-agents/references/runtimes.md +12 -10
  301. package/skills/permdock-approvals/SKILL.md +4 -4
  302. package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
  303. package/skills/permdock-audit/SKILL.md +3 -3
  304. package/skills/permdock-credentials/SKILL.md +4 -4
  305. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  306. package/skills/permdock-data/SKILL.md +4 -4
  307. package/skills/permdock-data/references/queries-and-rls.md +14 -6
  308. package/skills/permdock-data/references/relationships.md +5 -3
  309. package/skills/permdock-tenancy/SKILL.md +9 -6
  310. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
  311. package/skills/permdock-wire/SKILL.md +4 -4
  312. package/skills/permdock-wire/references/adapters.md +42 -30
  313. package/skills/permdock-wire/references/policy-options.md +5 -3
  314. package/dist/approvers-aH0PJkmf.js +0 -20
  315. package/dist/catalog-idsHc0vo.js +0 -2
  316. package/dist/collect-B7_TIfmg.js +0 -49
  317. package/dist/collect-fRPAQIWb.js +0 -2
  318. package/dist/compile-CQbvyIBr.d.ts +0 -30
  319. package/dist/config-BPYmjTOp.js +0 -26
  320. package/dist/context-gtAwAILx.js +0 -6
  321. package/dist/create-BKF3dgFk.d.ts +0 -162
  322. package/dist/create-CSkhDU9T.js +0 -222
  323. package/dist/doctor-BGle8Gqi.js +0 -1314
  324. package/dist/helpers-DnSOrhB9.js +0 -682
  325. package/dist/index-fG6NSXlc.d.ts +0 -9
  326. package/dist/kernel-YOGCWNLf.js +0 -211
  327. package/dist/load-QOOm1z70.js +0 -2
  328. package/dist/manifest-DDQbC6K0.d.ts +0 -118
  329. package/dist/map-error-RJ3ZsUyA.js +0 -16
  330. package/dist/may-use-CnFEjVEp.js +0 -37
  331. package/dist/pg-4GJWDUxG.js +0 -953
  332. package/dist/plugin-4gr7IxFJ.js +0 -65
  333. package/dist/protected-B4K3BKoX.js +0 -138
  334. package/dist/protected-wY7nXhY9.d.ts +0 -23
  335. package/dist/provider-_wx46HpB.js +0 -48
  336. package/dist/rls-CJVja9Ww.js +0 -2119
  337. package/dist/rls-helpers-BxRuif0l.js +0 -1346
  338. package/dist/runtime-DP9ttFh1.js +0 -27
  339. package/dist/skills-Dx3QLnMY.js +0 -110
  340. package/dist/source-DoBBYJi2.js +0 -6
  341. package/dist/sources-DVHM3Mwq.js +0 -284
  342. package/dist/store-C6hFW6ta.js +0 -508
  343. package/dist/subject-settings-xt7V845g.js +0 -82
  344. package/dist/supabase-hook-DW-xP4hU.js +0 -2
  345. package/dist/types-DbWdEfcm.d.ts +0 -87
  346. package/dist/types-bva3i4Gf.d.ts +0 -98
  347. package/dist/types-i4BAOvdb.d.ts +0 -97
  348. package/dist/usage-PyEor6GA.js +0 -2
  349. package/dist/version-CnSh33Fj.js +0 -16
@@ -1,7 +1,7 @@
1
- import { Qt as PermDockOptions, at as LimitStore, cr as CustomRole, ft as RelationSource, hr as Subject, ir as Actor, mr as Principal, pr as Membership, ur as Delegation } from "../../policy-CInmNGkM.js";
2
- import { d as Permission } from "../../permissions-B4apnahQ.js";
3
- import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-B8vCg_bI.js";
4
- import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-Cq2fB8Q5.js";
1
+ import { Cr as Actor, Dr as CustomRole, Mr as Membership, Nr as Principal, Pr as Subject, bt as RelationSource, dt as LimitStore, kr as Delegation, un as PermDockOptions } from "../../policy-CFZAr_Al.js";
2
+ import { f as Permission } from "../../permissions-DttnqqxC.js";
3
+ import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-CDgvKG5L.js";
4
+ import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-D8UFyERw.js";
5
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
6
6
  //#region src/testing/saas/schema.d.ts
7
7
  type FieldKind = "string" | "boolean" | "nullable-string";
@@ -1,3 +1,3 @@
1
- import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-CofRqesP.js";
2
- import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-BRrZzJkM.js";
1
+ import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-CpZrivYv.js";
2
+ import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-Bj_FFkjN.js";
3
3
  export { SAAS_API_KEY_LIMIT, SAAS_EXPIRED_AT, SAAS_TOKEN_TTL_SECONDS, SaasDocSchema, SaasFolderSchema, SaasProjectSchema, rowSchema, saasAudience, saasCustomRoles, saasDoc, saasFolder, saasFolderScenarios, saasIssuer, saasJwks, saasLimitStore, saasMemberships, saasOrg, saasPermissions, saasPlans, saasPolicy, saasPrincipal, saasPrivateJwk, saasProject, saasPublicJwk, saasRelations, saasRoles, saasScenarioOptions, saasScenarios, saasSchemaSql, saasSeed, saasSeedSql, saasTenantRoleNames, saasUser, saasUsers, signSaasToken, verifySaasSession, verifySaasToken };
@@ -1,2 +1,2 @@
1
- import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-B8vCg_bI.js";
1
+ import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-CDgvKG5L.js";
2
2
  export { SaasDoc, SaasDocSchema, SaasFolder, SaasFolderSchema, SaasProject, SaasProjectSchema, saasPermissions, saasPlans, saasRoles, saasTenantRoleNames };
@@ -1,2 +1,2 @@
1
- import { a as saasPlans, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-CofRqesP.js";
1
+ import { a as saasPlans, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-CpZrivYv.js";
2
2
  export { SaasDocSchema, SaasFolderSchema, SaasProjectSchema, saasPermissions, saasPlans, saasRoles, saasTenantRoleNames };
@@ -0,0 +1,50 @@
1
+ import { t as canonicalJson } from "./canonical-json-DemiK4Vp.js";
2
+ import { n as sha256, t as bytesToBase64Url } from "./sha256-BO0swRXL.js";
3
+ //#region src/core/token.ts
4
+ /**
5
+ * Only stable identity goes into the token, so refreshing a session (new
6
+ * roles, assurance or claims) does not orphan an outstanding approval.
7
+ */
8
+ function principalIdentity(principal) {
9
+ if (principal === null) return null;
10
+ return {
11
+ id: principal.id,
12
+ tenant: principal.tenant ?? null,
13
+ issuer: principal.issuer ?? null
14
+ };
15
+ }
16
+ /** A row's `version` field as token input; `null` when it is missing or not a scalar. */
17
+ function versionOf(row, field) {
18
+ if (row === null || typeof row !== "object" || !Object.hasOwn(row, field)) return null;
19
+ const value = row[field];
20
+ if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value.toISOString();
21
+ return typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean" ? String(value) : null;
22
+ }
23
+ /** The digest that binds a token to the call's data when no row id does. */
24
+ function payloadDigest(data) {
25
+ return bytesToBase64Url(sha256(canonicalJson(data)));
26
+ }
27
+ /**
28
+ * `version` is set only for an approval that goes stale on a resource
29
+ * change; without it the payload, and so every other token, is unchanged.
30
+ * `payload` is set when `resourceId` is `*` (a collection action or a row
31
+ * without an id), so an approval covers the arguments it was given and no
32
+ * others.
33
+ */
34
+ function decisionToken(input) {
35
+ const payload = JSON.stringify({
36
+ key: input.key,
37
+ resourceId: input.resourceId,
38
+ principal: principalIdentity(input.principal),
39
+ actor: input.actor === void 0 ? null : {
40
+ id: input.actor.id,
41
+ kind: input.actor.kind
42
+ },
43
+ fingerprint: input.fingerprint,
44
+ ...input.version === void 0 ? {} : { version: input.version },
45
+ ...input.payload === void 0 ? {} : { payload: input.payload }
46
+ });
47
+ return `pd1.${bytesToBase64Url(sha256(payload))}`;
48
+ }
49
+ //#endregion
50
+ export { payloadDigest as n, versionOf as r, decisionToken as t };
@@ -1,10 +1,9 @@
1
- import { $ as DecisionSink, C as Policy, at as LimitStore, ct as MembershipSource, ft as RelationSource, mr as Principal, pt as RoleSource, sn as PolicySource, tt as EntitlementSource, xt as SnapshotSource } from "../policy-CInmNGkM.js";
2
- import { d as Permission } from "../permissions-B4apnahQ.js";
3
- import { f as ApprovalStore } from "../types-B8w5PFtS.js";
1
+ import { C as Policy, Nr as Principal } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission } from "../permissions-DttnqqxC.js";
4
3
  import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
5
- import { r as PdpFactory } from "../types-BvBk1wgn.js";
6
- import { S as ConnectionOptions, b as Connection, h as WebBotAuthVerifier, n as OpenApiHooks, o as TenantOption } from "../create-BKF3dgFk.js";
7
- import { t as StreamProtectOptions } from "../stream-BhMfZOwr.js";
4
+ import { A as ConnectionOptions, O as Connection, n as OpenApiHooks } from "../create-BWyx3jua.js";
5
+ import { t as ServerAdapterOptions } from "../bind-CVy3Espv.js";
6
+ import { t as StreamProtectOptions } from "../stream-DlvG2hs-.js";
8
7
  import { AnyTRPCMiddlewareFunction } from "@trpc/server";
9
8
  //#region src/trpc/create.d.ts
10
9
  type TrpcMiddlewareOpts<TCtx = object, TInput = unknown> = {
@@ -17,27 +16,9 @@ type TrpcMiddlewareOpts<TCtx = object, TInput = unknown> = {
17
16
  }) => Promise<unknown>;
18
17
  };
19
18
  type TrpcMiddleware = AnyTRPCMiddlewareFunction;
20
- type TrpcPermDockOptions<TCtx = object, TUser = unknown> = {
21
- readonly subject: (opts: TrpcMiddlewareOpts<TCtx>) => TUser | Promise<TUser>;
22
- readonly tenant?: TenantOption<TrpcMiddlewareOpts<TCtx>>;
19
+ type TrpcPermDockOptions<TCtx = object, TUser = unknown> = ServerAdapterOptions<TrpcMiddlewareOpts<TCtx>, TUser> & {
23
20
  /** The Web `Request` behind a context; defaults to `ctx.request` or `ctx.req`. */
24
21
  readonly request?: (ctx: TCtx) => Request | null | undefined;
25
- readonly memberships?: MembershipSource | readonly MembershipSource[];
26
- /** The object graph for relation grants that walk a parent chain; without it they deny. */
27
- readonly relations?: RelationSource;
28
- readonly entitlements?: EntitlementSource;
29
- readonly customRoles?: RoleSource;
30
- /** Hosted grants, read once per instance; see `PolicySource`. */
31
- readonly policies?: PolicySource;
32
- readonly store?: ApprovalStore;
33
- readonly sink?: DecisionSink;
34
- readonly limits?: LimitStore;
35
- /** `createPermDock` from `permdock/pdp`; `protect` then decides delegated permissions remotely. */
36
- readonly pdp?: PdpFactory;
37
- /** Accepted for adapter parity; not read by this adapter. */
38
- readonly snapshots?: SnapshotSource;
39
- /** `(request) => verifyWebBotAuth(request, options)`; a verified bot becomes the actor. */
40
- readonly webBotAuth?: WebBotAuthVerifier;
41
22
  /** Ends or revalidates open subscriptions. */
42
23
  readonly revocations?: RevocationFeed;
43
24
  };
@@ -53,7 +34,7 @@ type TrpcOpenApiHooks = {
53
34
  };
54
35
  type TrpcPermDock<TCtx = object> = {
55
36
  readonly permdock: () => TrpcMiddleware;
56
- readonly protect: (permission: Permission, loadData?: (opts: TrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => TrpcMiddleware;
37
+ readonly protect: (permission: Permission | null, loadData?: (opts: TrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => TrpcMiddleware;
57
38
  /** A long-lived connection for the request behind `ctx`. */
58
39
  readonly connection: (opts: TrpcMiddlewareOpts<TCtx>, connectionOptions?: ConnectionOptions) => Promise<Connection>;
59
40
  readonly permdockHandler: (request: Request) => Promise<Response>;
@@ -1,29 +1,11 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { o as invalidSignatureResponse } from "../evaluations-DsAU9ppl.js";
3
- import { r as tenantScope, t as createKernel } from "../create-CSkhDU9T.js";
4
- import { t as problemFromError } from "../map-error-RJ3ZsUyA.js";
5
- import { n as guardIterable, r as isAsyncIterable } from "../stream-Q_xlB6Ko.js";
1
+ import { a as problemMessage } from "../http-SO7qGttf.js";
2
+ import { t as problemFromError } from "../map-error-pgUWNNtG.js";
3
+ import { n as attached } from "../bind-VnYn2HKq.js";
4
+ import { a as reloadAfter, r as isAsyncIterable } from "../stream-DDpvynSB.js";
5
+ import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-DOK54_CS.js";
6
6
  import { TRPCError, isTrackedEnvelope } from "@trpc/server";
7
7
  //#region src/trpc/create.ts
8
- function requestFromCtx(ctx) {
9
- if ("request" in ctx && ctx.request instanceof Request) return ctx.request;
10
- if ("req" in ctx && ctx.req instanceof Request) return ctx.req;
11
- }
12
- function problemMessage(cause, fallback) {
13
- if (cause !== null && typeof cause === "object" && "detail" in cause && typeof cause.detail === "string" && cause.detail.length > 0) return cause.detail;
14
- return fallback;
15
- }
16
8
  const PROBLEM = Symbol.for("permdock.problem");
17
- function trpcCode(status) {
18
- switch (status) {
19
- case 400: return "BAD_REQUEST";
20
- case 401: return "UNAUTHORIZED";
21
- case 404: return "NOT_FOUND";
22
- case 429: return "TOO_MANY_REQUESTS";
23
- case 503: return "SERVICE_UNAVAILABLE";
24
- default: return "FORBIDDEN";
25
- }
26
- }
27
9
  /** A `TRPCError` for a revoked subscription; the Problem Details body rides on `cause`. */
28
10
  function trpcErrorFrom(error) {
29
11
  const problem = error.toProblemDetails();
@@ -33,23 +15,18 @@ function trpcErrorFrom(error) {
33
15
  enumerable: true
34
16
  });
35
17
  return new TRPCError({
36
- code: trpcCode(problem.status),
18
+ code: rpcCode(problem.status),
37
19
  message: error.code,
38
20
  cause
39
21
  });
40
22
  }
41
23
  async function throwTrpcError(response) {
42
- let cause;
43
- try {
44
- cause = await response.json();
45
- } catch {
46
- cause = { status: response.status };
47
- }
24
+ const cause = await problemBody(response);
48
25
  if (cause !== null && typeof cause === "object") Object.defineProperty(cause, PROBLEM, {
49
26
  value: true,
50
27
  enumerable: true
51
28
  });
52
- const code = trpcCode(response.status);
29
+ const code = rpcCode(response.status);
53
30
  throw new TRPCError({
54
31
  code,
55
32
  message: problemMessage(cause, code),
@@ -80,84 +57,27 @@ function errorFormatter(opts) {
80
57
  };
81
58
  }
82
59
  function createPermDock(policy, options) {
83
- const optsByRequest = /* @__PURE__ */ new WeakMap();
84
- const requestByCtx = /* @__PURE__ */ new WeakMap();
85
- const kernel = createKernel(policy, compact({
86
- subject: (request) => {
87
- const opts = optsByRequest.get(request);
88
- return opts === void 0 ? null : options.subject(opts);
89
- },
90
- memberships: options.memberships,
91
- relations: options.relations,
92
- entitlements: options.entitlements,
93
- customRoles: options.customRoles,
94
- policies: options.policies,
95
- store: options.store,
96
- sink: options.sink,
97
- limits: options.limits,
98
- pdp: options.pdp,
99
- webBotAuth: options.webBotAuth,
100
- revocations: options.revocations,
101
- adapter: "trpc"
102
- }));
103
- const requestOf = (ctx) => {
104
- if (options.request !== void 0) try {
105
- return options.request(ctx) ?? void 0;
106
- } catch {
107
- return;
108
- }
109
- return requestFromCtx(ctx);
110
- };
111
- /**
112
- * One `Request` per HTTP request, shared by every procedure in a batch. The
113
- * subject reads the first procedure's opts; the tenant is resolved from each
114
- * procedure's own opts in `scopeOf`, never through the shared `Request`.
115
- */
116
- const bind = (opts) => {
117
- const ctx = opts.ctx;
118
- const hit = requestByCtx.get(ctx);
119
- if (hit !== void 0) return hit;
120
- const request = requestOf(opts.ctx) ?? new Request(`http://localhost/trpc/${opts.path}`, { method: "POST" });
121
- requestByCtx.set(ctx, request);
122
- if (!optsByRequest.has(request)) optsByRequest.set(request, opts);
123
- return request;
124
- };
125
- const scopeOf = (opts) => tenantScope(options.tenant, opts);
126
- const attach = (ctx, request) => {
127
- requestByCtx.set(ctx, request);
128
- };
60
+ const { kernel, bind, attach, scopeOf, connection, evaluate } = bindRpcKernel(policy, options, "trpc", (opts) => opts.ctx, (opts) => opts.path);
129
61
  const permdock = () => (async (opts) => {
130
62
  const request = bind(opts);
131
- let instance;
132
- try {
133
- instance = await kernel.permdock(request, await scopeOf(opts));
134
- } catch (error) {
135
- const response = invalidSignatureResponse(error);
136
- if (response !== void 0) return throwTrpcError(response);
137
- throw error;
138
- }
63
+ const instance = await attached(async () => kernel.permdock(request, await scopeOf(opts)));
64
+ if (!instance.ok) return throwTrpcError(instance.response);
139
65
  const nextCtx = {
140
66
  ...opts.ctx,
141
- permdock: instance
67
+ permdock: instance.permdock
142
68
  };
143
69
  attach(nextCtx, request);
144
70
  return mapDownstream(await opts.next({ ctx: nextCtx }));
145
71
  });
146
- const connection = async (opts, connectionOptions) => kernel.connection(bind(opts), connectionOptions, await scopeOf(opts));
147
72
  /** Wraps a subscription's iterable so revocation ends it and unreadable items drop. */
148
73
  const guardSubscription = async (result, opts, permission, loadData, protectOptions) => {
149
74
  if (result === null || typeof result !== "object" || result.ok !== true || !isAsyncIterable(result.data)) return result;
150
- const conn = await connection(opts, compact({
151
- permission,
152
- data: loadData
153
- }));
154
75
  return {
155
76
  ...result,
156
- data: guardIterable(result.data, conn, compact({
157
- items: protectOptions?.items,
77
+ data: await guardStream(result.data, (connectionOptions) => connection(opts, connectionOptions), permission, loadData, protectOptions, {
158
78
  unwrap: (item) => isTrackedEnvelope(item) ? item[1] : item,
159
79
  onRevoked: trpcErrorFrom
160
- }))
80
+ })
161
81
  };
162
82
  };
163
83
  const protect = (permission, loadData, protectOptions) => (async (opts) => {
@@ -170,20 +90,17 @@ function createPermDock(policy, options) {
170
90
  permdockData: guard.data
171
91
  };
172
92
  attach(nextCtx, request);
173
- return guardSubscription(await mapDownstream(await opts.next({ ctx: nextCtx })), opts, permission, loadData === void 0 ? void 0 : () => loadData(opts), protectOptions);
93
+ return guardSubscription(await mapDownstream(await opts.next({ ctx: nextCtx })), opts, permission, loadData === void 0 ? void 0 : reloadAfter(guard.data, () => loadData(opts)), protectOptions);
174
94
  }
175
95
  return throwTrpcError(guard.response);
176
96
  });
177
97
  const permdockHandler = (request) => {
178
- const opts = {
98
+ return evaluate(request, {
179
99
  ctx: { req: request },
180
100
  path: "permdock",
181
101
  type: "unknown",
182
102
  next: (nextOpts) => Promise.resolve(nextOpts ?? { ctx: { req: request } })
183
- };
184
- bind(opts);
185
- const { POST, GET } = kernel.permdockHandler(() => scopeOf(opts));
186
- return Promise.resolve(request.method === "GET" ? GET(request) : POST(request));
103
+ });
187
104
  };
188
105
  const kernelOpenApi = kernel.openapi;
189
106
  return {
@@ -0,0 +1,197 @@
1
+ import { Cr as Actor, Ft as TokenVerifier, Nr as Principal, Nt as TokenFailureCause, Pr as Subject, ct as JwtClaims, et as AuthEvent, gt as MembershipSource } from "./policy-CFZAr_Al.js";
2
+ import { f as ApprovalStore } from "./types-vKyAMtcX.js";
3
+ import { t as ClientNames } from "./clients-C7zLFuWT.js";
4
+ import { n as RevocationFeed } from "./revocations-Cy06JNx2.js";
5
+ import { StandardSchemaV1 } from "@standard-schema/spec";
6
+ //#region src/ssf/types.d.ts
7
+ type CaepEventName = "session-revoked" | "credential-change" | "assurance-level-change" | "token-claims-change" | "device-compliance-change";
8
+ type SetSubject = {
9
+ readonly format: string;
10
+ readonly [key: string]: unknown;
11
+ };
12
+ type SsfSubject = {
13
+ readonly id: string;
14
+ readonly session?: string;
15
+ readonly issuer?: string;
16
+ };
17
+ type SsfSubjectMapper = (setSubject: SetSubject, meta?: {
18
+ readonly session?: string;
19
+ readonly issuer?: string;
20
+ }) => string | SsfSubject | null | undefined | Promise<string | SsfSubject | null | undefined>;
21
+ type SsfEventInput = {
22
+ readonly subject: SsfSubject;
23
+ readonly event: Readonly<Record<string, unknown>>;
24
+ readonly event_timestamp?: number;
25
+ readonly jti: string;
26
+ readonly type: string;
27
+ };
28
+ type SsfEventHandler = (input: SsfEventInput) => void | Promise<void>;
29
+ type SsfOnEvent = { readonly [K in CaepEventName]?: SsfEventHandler; } & {
30
+ readonly "*"?: SsfEventHandler;
31
+ };
32
+ /**
33
+ * Keys are opaque strings namespaced by issuer. A store that implements both
34
+ * `claim` and `release` makes concurrent deliveries of one SET dispatch once;
35
+ * one with only `seen` and `remember` is checked and recorded non-atomically.
36
+ */
37
+ type ReplayStore = {
38
+ seen(key: string): boolean | Promise<boolean>;
39
+ remember(key: string, expiresAt?: number): void | Promise<void>;
40
+ /** Records `key` and returns `true` only if it was not already recorded. */
41
+ claim?(key: string, expiresAt?: number): boolean | Promise<boolean>;
42
+ /** Forgets a claimed `key` so a failed delivery can be retried. */
43
+ release?(key: string): void | Promise<void>;
44
+ };
45
+ type SsfAuditEvent = {
46
+ readonly type: string;
47
+ readonly subject?: SsfSubject;
48
+ readonly transmitter?: string;
49
+ readonly jti?: string;
50
+ readonly replayed?: true;
51
+ readonly cancelled?: number;
52
+ readonly unknown?: "event" | "subject";
53
+ readonly err?: string;
54
+ readonly cause?: TokenFailureCause;
55
+ };
56
+ type SsfEventListener = (event: SsfAuditEvent) => void;
57
+ type PollOptions = {
58
+ readonly endpoint: string;
59
+ readonly every?: number | string;
60
+ readonly token?: string;
61
+ readonly fetch?: typeof fetch;
62
+ readonly signal?: AbortSignal;
63
+ };
64
+ type PollHandle = {
65
+ readonly stop: () => void;
66
+ };
67
+ type PollResult = {
68
+ readonly acked: readonly string[];
69
+ };
70
+ type SsfPermDockOptions = {
71
+ readonly issuer?: string;
72
+ readonly audience: string | readonly string[];
73
+ readonly jwks?: JwtJwks | string;
74
+ readonly discovery?: DiscoveryInput;
75
+ readonly verifier?: TokenVerifier;
76
+ readonly subject: SsfSubjectMapper;
77
+ readonly onEvent?: SsfOnEvent;
78
+ readonly replay?: ReplayStore;
79
+ readonly approvals?: ApprovalStore;
80
+ /**
81
+ * Publishes `session-revoked` for a revoked session and `changed` for
82
+ * credential, assurance and claims changes, so open connections end or
83
+ * revalidate.
84
+ */
85
+ readonly revocations?: RevocationFeed;
86
+ readonly clockTolerance?: number;
87
+ };
88
+ type SsfReceiver = {
89
+ push(request: Request): Promise<Response>;
90
+ logout(request: Request): Promise<Response>;
91
+ poll(options: PollOptions): Promise<PollResult> | PollHandle;
92
+ on(event: "event", handler: SsfEventListener): () => void;
93
+ };
94
+ type SsfPermDock = {
95
+ readonly receiver: SsfReceiver;
96
+ };
97
+ //#endregion
98
+ //#region src/jwt/types.d.ts
99
+ type JwtAlgorithm = "ES256" | "PS256" | "Ed25519" | "RS256" | "HS256" | "EdDSA";
100
+ type JwtProfile = "fapi2";
101
+ type JsonWebKeySet = {
102
+ readonly keys: readonly Record<string, unknown>[];
103
+ };
104
+ type JwtJwks = URL | string | JsonWebKeySet | {
105
+ readonly secret: Uint8Array | string;
106
+ };
107
+ type DiscoveryInput = string | {
108
+ readonly issuer: string;
109
+ readonly metadata?: {
110
+ readonly issuer?: string;
111
+ readonly jwks_uri?: string;
112
+ };
113
+ };
114
+ type JwksCacheOptions = {
115
+ readonly minTtl?: number;
116
+ readonly maxTtl?: number;
117
+ readonly cooldown?: number;
118
+ /** Milliseconds a discovery or JWKS request may take before it counts as failed. Default 5000. */
119
+ readonly timeout?: number;
120
+ };
121
+ type JoseTokenVerifierOptions = {
122
+ readonly jwks?: JwtJwks;
123
+ readonly discovery?: DiscoveryInput;
124
+ readonly issuer?: string;
125
+ readonly algorithms?: readonly JwtAlgorithm[];
126
+ readonly typ?: string | readonly string[];
127
+ readonly audience?: string | readonly string[];
128
+ readonly clockTolerance?: number;
129
+ readonly decryptionKeys?: JsonWebKeySet | Record<string, unknown>;
130
+ readonly decryptionAlgorithms?: readonly string[];
131
+ readonly profile?: JwtProfile;
132
+ readonly jwksCache?: JwksCacheOptions;
133
+ readonly fetch?: typeof fetch;
134
+ };
135
+ type JoseTokenSignerOptions = {
136
+ readonly key: Record<string, unknown> | Uint8Array;
137
+ readonly alg: JwtAlgorithm;
138
+ readonly kid: string;
139
+ readonly issuer?: string;
140
+ };
141
+ type JwtClaimPaths = {
142
+ readonly id?: string;
143
+ readonly roles?: string;
144
+ readonly groups?: string;
145
+ readonly entitlements?: string;
146
+ readonly plans?: string;
147
+ readonly tenant?: string;
148
+ readonly memberships?: string;
149
+ readonly kind?: string;
150
+ readonly assurance?: string | {
151
+ readonly acr?: string;
152
+ readonly amr?: string;
153
+ readonly authTime?: string;
154
+ /** OpenID Connect for Identity Assurance; default `verified_claims`. */
155
+ readonly verified?: string;
156
+ };
157
+ readonly session?: string;
158
+ };
159
+ type JwtDelegationPaths = {
160
+ readonly scopes?: string;
161
+ readonly authorizationDetails?: string;
162
+ readonly access?: string;
163
+ };
164
+ type JwtSubjectOptions = JoseTokenVerifierOptions & {
165
+ readonly accept?: "access-token" | "id-token";
166
+ readonly claims?: JwtClaimPaths;
167
+ readonly groupRoles?: Readonly<Record<string, readonly string[]>>;
168
+ readonly schema?: StandardSchemaV1;
169
+ readonly delegation?: JwtDelegationPaths;
170
+ readonly actor?: {
171
+ readonly from?: "act";
172
+ readonly kind?: string;
173
+ /** Names for client ids (`ClientNames`): the actor gets `client` set to the name of `act.sub`. */
174
+ readonly clients?: ClientNames;
175
+ } | ((claims: JwtClaims) => Actor | undefined);
176
+ readonly sender?: "none" | "dpop" | "mtls";
177
+ /** With `sender: "dpop"`, rejects a proof `jti` already used by the same key within 60 seconds. */
178
+ readonly replay?: ReplayStore;
179
+ readonly memberships?: MembershipSource;
180
+ readonly verifier?: TokenVerifier;
181
+ readonly certificateThumbprint?: string;
182
+ readonly onAuth?: (event: AuthEvent) => void;
183
+ readonly requestId?: string;
184
+ };
185
+ type JwtPrincipal = Principal & {
186
+ readonly issuer?: string;
187
+ readonly claims?: Readonly<Record<string, unknown>>;
188
+ };
189
+ type DpopProofResult = {
190
+ readonly ok: true;
191
+ } | {
192
+ readonly ok: false;
193
+ readonly cause: TokenFailureCause;
194
+ };
195
+ type MappedSubject = Subject<JwtPrincipal>;
196
+ //#endregion
197
+ export { SsfPermDock as C, SsfSubjectMapper as D, SsfSubject as E, SsfOnEvent as S, SsfReceiver as T, SetSubject as _, JsonWebKeySet as a, SsfEventInput as b, JwtJwks as c, MappedSubject as d, CaepEventName as f, ReplayStore as g, PollResult as h, JoseTokenVerifierOptions as i, JwtPrincipal as l, PollOptions as m, DpopProofResult as n, JwtAlgorithm as o, PollHandle as p, JoseTokenSignerOptions as r, JwtClaimPaths as s, DiscoveryInput as t, JwtSubjectOptions as u, SsfAuditEvent as v, SsfPermDockOptions as w, SsfEventListener as x, SsfEventHandler as y };