permdock 0.6.0 → 0.8.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 (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,24 +1,34 @@
1
- import { $n as Delegation, Bt as LocalSnapshotManifest, C as MembershipFixture, D as PolicyDelegation, I as SeparationConflict, In as DenialReason, J as EntitlementSource, Kt as AccessEvent, Lt as InstanceHandle, N as RoleBinding, Nn as Decision, P as RoleOptions, Pn as Denial, Qt as DeliveryEvent, R as SupportAccessOptions, Rt as Instant, T as Policy, V as VocabularyFromInput, Vt as Snapshot, W as CustomRoleSource, Xt as DecisionEvent, Y as JwtClaims, Zn as CustomRole, ar as Subject, at as SettingsSource, br as SqlFunctionCondition, c as BreakGlassOptions, ct as TenantSettings, dr as ConditionRef, et as MembershipSource, g as GrantCondition, h as Grant, hr as OpaqueCondition, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, nr as Membership, nt as RelationGroup, ot as SnapshotSource, rn as SinkEvent, rr as Principal, s as AssuranceRequirement, sn as PolicyScopesInput, ut as TokenSigner, yr as SqlFunctionArg } from "./policy-types-n0uRTsW8.js";
2
- import { C as InferPermissionTree, D as PermissionsOptions, E as PermissionTree, F as ResourceParent, L as ResourceRelationInput, M as ResourceMeta, N as ResourceNode, P as ResourceOptions, R as ResourceRestricted, T as PermissionKind, g as ActionMeta, h as ActionList, k as ResourceInit, r as Role, w as Permission, z as ResourceXTree } from "./vocabulary-CN8H_9UF.js";
3
- import { i as PermDockOptions, r as PermDock } from "./permdock-SV8ZINYT.js";
4
- import { a as PolicyDocument } from "./hosted-BPk51-kX.js";
5
- import { m as ApprovalStore } from "./types-BdtSDbBO.js";
6
- import { t as InstanceOptions } from "./instance-options-BsVpyGIk.js";
7
- import { n as PermDockWrap } from "./wrap-C5jC6sKI.js";
8
- import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
9
- import { i as CatalogEventData, s as CloudEvent } from "./sink-4-eQIRWf.js";
1
+ import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-CCiDRZBH.js";
2
+ import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-CAY-GU7e.js";
3
+ import { a as RoleTree, r as Role } from "./vocabulary-DEJ5j4mR.js";
4
+ import { a as PermDock, o as PermDockOptions } from "./permdock-B6Sf4T_S.js";
5
+ import { o as PolicyDocument } from "./hosted-Cmtxogd0.js";
6
+ import { m as ApprovalStore } from "./types-B_tiYvk8.js";
7
+ import { t as InstanceOptions } from "./instance-options-B0KXqTrJ.js";
8
+ import { n as PermDockWrap } from "./wrap-DlJE3gS_.js";
9
+ import { t as JsonSchemaNode } from "./json-schema-BfXgnRNT.js";
10
+ import { i as CatalogEventData, s as CloudEvent } from "./sink-Dvi7YZG_.js";
10
11
  import { StandardSchemaV1 } from "@standard-schema/spec";
11
12
  //#region src/conditions/refs.d.ts
12
- type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session";
13
+ type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session" | "claims";
13
14
  type SubjectRef = ConditionRef & { readonly [K in KnownRefField]: SubjectRef; } & {
14
15
  readonly [key: string]: SubjectRef;
15
16
  };
16
17
  declare const principal: SubjectRef;
17
18
  declare const context: SubjectRef;
19
+ /**
20
+ * `principal.claims.<path>` for a dot path such as `team_ids` or
21
+ * `attrs.region`, typed `SubjectRef` under `noUncheckedIndexedAccess` and
22
+ * `noPropertyAccessFromIndexSignature`.
23
+ */
24
+ declare function claim(path: string): SubjectRef;
18
25
  //#endregion
19
26
  //#region src/core/custom-roles.d.ts
20
27
  type CustomRoleDropReason = "unknown-permission" | "outside-ceiling" | "condition-not-allowed" | "unknown-level";
21
- /** Why part of a custom role was left out: a permission, or an undeclared include. */
28
+ /**
29
+ * Why part of a custom role was left out: a permission, or an undeclared
30
+ * include.
31
+ */
22
32
  type CustomRoleDrop = {
23
33
  readonly permission: string;
24
34
  readonly reason: CustomRoleDropReason;
@@ -37,10 +47,16 @@ type CustomRoleRename = {
37
47
  readonly to: string;
38
48
  };
39
49
  type ResolvedCustomRole = {
40
- /** Declared grants re-targeted to the custom role; conditions and approvals kept. */
50
+ /**
51
+ * Declared grants re-targeted to the custom role; conditions and approvals
52
+ * kept.
53
+ */
41
54
  readonly grants: readonly Grant[];
42
55
  readonly dropped: readonly CustomRoleDrop[];
43
- /** Grants stored under a former key (`definePermissions` `renamed`), resolved to the current one. */
56
+ /**
57
+ * Grants stored under a former key (`definePermissions` `renamed`), resolved
58
+ * to the current one.
59
+ */
44
60
  readonly renamed: readonly CustomRoleRename[];
45
61
  };
46
62
  type CustomRoleValidation = {
@@ -61,15 +77,36 @@ type CustomRoleValidation = {
61
77
  */
62
78
  declare function resolveCustomRole(policy: Policy, role: CustomRole): ResolvedCustomRole;
63
79
  type ValidateCustomRoleOptions = {
64
- /** The shared custom roles: a tenant role with one of their names is dropped as `name-taken`. */
80
+ /**
81
+ * The shared custom roles: a tenant role with one of their names is dropped
82
+ * as `name-taken`.
83
+ */
65
84
  readonly shared?: readonly CustomRole[];
66
85
  };
67
86
  declare function validateCustomRole(policy: Policy, role: CustomRole, options?: ValidateCustomRoleOptions): CustomRoleValidation;
87
+ /** The outcome of one stored allow entry, `<permission>[@<level>]`. */
88
+ type CustomRoleEntry = {
89
+ readonly ok: true;
90
+ /** The current key, after a `renamed` key resolves. */
91
+ readonly permission: string;
92
+ readonly level?: string;
93
+ } | {
94
+ readonly ok: false;
95
+ readonly cause: "unknown-permission" | "outside-ceiling" | "unknown-level";
96
+ };
68
97
  /**
69
- * The compact JWT form of custom roles for the `memberships[].grants` claim
70
- * RLS reads in `jwt` mode: role name to entries, where `key` allows, `-key`
71
- * denies and `@role` includes. Put a team custom role on its team membership.
72
- * Pass `policy` to write keys stored under a former name as the current key.
98
+ * Checks one stored allow entry, `<permission>[@<level>]`, the way
99
+ * `permdock_custom_role_entry_problem` does in SQL. `scope` defaults to the
100
+ * first scope; its ceiling is the allows of that scope's assignable roles.
101
+ */
102
+ declare function parseCustomRoleEntry(policy: Policy, entry: string, options?: {
103
+ readonly scope?: string;
104
+ }): CustomRoleEntry;
105
+ /**
106
+ * The compact JWT form of custom roles for the `memberships[].grants` claim RLS
107
+ * reads in `jwt` mode: role name to entries, where `key` allows, `-key` denies
108
+ * and `@role` includes. Put a team custom role on its team membership. Pass
109
+ * `policy` to write keys stored under a former name as the current key.
73
110
  */
74
111
  declare function customRoleClaim(roles: readonly CustomRole[], policy?: Policy): Readonly<Record<string, readonly string[]>>;
75
112
  //#endregion
@@ -87,7 +124,23 @@ declare function emptySnapshot(): Snapshot;
87
124
  declare function requiresApproval(approval: Grant["approval"] | undefined): boolean;
88
125
  //#endregion
89
126
  //#region src/core/policy.d.ts
90
- declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>>;
127
+ declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>, S>;
128
+ /**
129
+ * The role names a policy declares: the keys of its `defineRoles` vocabulary,
130
+ * else `string`.
131
+ */
132
+ type RoleNameOf<P> = P extends {
133
+ readonly vocabulary: infer V;
134
+ } ? V extends {
135
+ readonly roles: infer R extends RoleTree;
136
+ } ? R[keyof R]["key"] : string : string;
137
+ /**
138
+ * Whether `value` names a role the policy declares, for a role read as a string
139
+ * from a database or a token. A name it rejects is an unknown role, which
140
+ * grants nothing (`unknown-role`). A tenant's custom roles are not declared;
141
+ * `CustomRoleSource` resolves them.
142
+ */
143
+ declare function isRoleName<P extends Policy<never>>(policy: P, value: unknown): value is RoleNameOf<P>;
91
144
  declare function separationConflicts(policy: Policy, memberships: readonly MembershipFixture[]): readonly SeparationConflict[];
92
145
  //#endregion
93
146
  //#region src/core/permission-registry.d.ts
@@ -120,16 +173,22 @@ declare function sqlFunction(name: string, options: {
120
173
  //#region src/core/memory-sources.d.ts
121
174
  declare function memoryEntitlementSource(entries: Readonly<Record<string, readonly string[]>>): EntitlementSource;
122
175
  declare function memorySettingsSource(settings: Readonly<Record<string, TenantSettings>>): SettingsSource;
123
- /** Memberships keyed by principal id; `tenant` is not a filter, as for a database source. */
176
+ /**
177
+ * Memberships keyed by principal id; `tenant` is not a filter, as for a
178
+ * database source.
179
+ */
124
180
  declare function memoryMembershipSource(entries: Readonly<Record<string, readonly Membership[]>>): MembershipSource;
125
181
  /** A snapshot held in memory; `set` replaces it and notifies every subscriber. */
126
182
  declare function memorySnapshotSource(initial: Snapshot | string): SnapshotSource & {
127
- set(snapshot: Snapshot | string): void;
183
+ set: (snapshot: Snapshot | string) => void;
128
184
  };
129
185
  declare function memoryCustomRoleSource(customRoles: readonly CustomRole[]): CustomRoleSource;
130
186
  //#endregion
131
187
  //#region src/core/approval-state.d.ts
132
- /** The denial detail when an `ApprovalPolicySource` threw or returned an invalid entry. */
188
+ /**
189
+ * The denial detail when an `ApprovalPolicySource` threw or returned an invalid
190
+ * entry.
191
+ */
133
192
  declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
134
193
  //#endregion
135
194
  //#region src/core/memberships.d.ts
@@ -141,23 +200,26 @@ declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
141
200
  */
142
201
  declare function composeMemberships(sources: readonly MembershipSource[]): MembershipSource;
143
202
  /**
144
- * Trust the memberships the verified token carries, and read `source` only
145
- * when the token marks them truncated. With `version`, a token minted before
146
- * the latest membership change is stale for the policy's `fresh` permissions,
147
- * or with `onStale: 'reread'` has its memberships read from `source` instead.
203
+ * Trust the memberships the verified token carries, and read `source` only when
204
+ * the token marks them truncated. With `version`, a token minted before the
205
+ * latest membership change is stale for the policy's `fresh` permissions, or
206
+ * with `onStale: 'reread'` has its memberships read from `source` instead.
148
207
  */
149
208
  declare function claimsFirst(source: MembershipSource | readonly MembershipSource[], options?: {
150
209
  readonly version?: MembershipSource["version"];
151
210
  readonly onStale?: "deny" | "reread";
152
211
  }): MembershipSource;
153
- /** Whether the identity provider owns `membership`: the application must not add, change or remove it. */
212
+ /**
213
+ * Whether the identity provider owns `membership`: the application must not
214
+ * add, change or remove it.
215
+ */
154
216
  declare function isExternallyManaged(membership: Membership): boolean;
155
217
  /**
156
- * How many principals hold `role` in one scope instance now, from the
157
- * source's member list (`MembershipSource.list`): live memberships of exactly
158
- * that scope and instance, each principal counted once. The `holders` a
159
- * `decideRoleChange` with `min`, `max` or `transferOnly` needs. `undefined`
160
- * when the source cannot list or the read fails, which that check denies.
218
+ * How many principals hold `role` in one scope instance now, from the source's
219
+ * member list (`MembershipSource.list`): live memberships of exactly that scope
220
+ * and instance, each principal counted once. The `holders` a `decideRoleChange`
221
+ * with `min`, `max` or `transferOnly` needs. `undefined` when the source cannot
222
+ * list or the read fails, which that check denies.
161
223
  */
162
224
  declare function countHolders(source: MembershipSource | readonly MembershipSource[], query: {
163
225
  readonly scope: string;
@@ -168,15 +230,18 @@ declare function countHolders(source: MembershipSource | readonly MembershipSour
168
230
  }): Promise<number | undefined>;
169
231
  //#endregion
170
232
  //#region src/core/stripe-entitlements.d.ts
171
- /** The part of the Stripe Node SDK this source calls: `stripe.entitlements.activeEntitlements.list`. */
233
+ /**
234
+ * The part of the Stripe Node SDK this source calls:
235
+ * `stripe.entitlements.activeEntitlements.list`.
236
+ */
172
237
  type StripeEntitlementsClient = {
173
238
  readonly entitlements: {
174
239
  readonly activeEntitlements: {
175
- list(params: {
240
+ list: (params: {
176
241
  readonly customer: string;
177
242
  readonly limit?: number;
178
243
  readonly starting_after?: string;
179
- }): PromiseLike<{
244
+ }) => PromiseLike<{
180
245
  readonly data: readonly {
181
246
  readonly id: string;
182
247
  readonly lookup_key: string;
@@ -208,14 +273,17 @@ type MemoryEdge = {
208
273
  readonly expiresAt?: number;
209
274
  };
210
275
  type MemoryRelationSourceData = {
211
- /** Rows per resource: parent pointers, links, restricted flags and relation columns are read from them. */
276
+ /**
277
+ * Rows per resource: parent pointers, links, restricted flags and relation
278
+ * columns are read from them.
279
+ */
212
280
  readonly rows?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
213
281
  /** Edge-table rows per resource and relation. */
214
282
  readonly edges?: Readonly<Record<string, Readonly<Record<string, readonly MemoryEdge[]>>>>;
215
283
  /**
216
- * Edge tables as the database holds them, keyed by `edge` name: each row
217
- * is read through the relation's `object`, `subject`, `expiresAt`, `match`
218
- * and `groups` columns. A relation whose table is here ignores `edges`.
284
+ * Edge tables as the database holds them, keyed by `edge` name: each row is
285
+ * read through the relation's `object`, `subject`, `expiresAt`, `match` and
286
+ * `groups` columns. A relation whose table is here ignores `edges`.
219
287
  */
220
288
  readonly tables?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
221
289
  };
@@ -235,7 +303,10 @@ type HoldingVia = {
235
303
  readonly kind: "relation";
236
304
  readonly resource: string;
237
305
  readonly relation: string;
238
- /** The instance the relation is held on: the object or one of its ancestors. */
306
+ /**
307
+ * The instance the relation is held on: the object or one of its
308
+ * ancestors.
309
+ */
239
310
  readonly id: string;
240
311
  } | {
241
312
  readonly kind: "share";
@@ -243,7 +314,10 @@ type HoldingVia = {
243
314
  readonly relation: string;
244
315
  readonly id: string;
245
316
  readonly expiresAt?: number;
246
- /** The group the share names, when the principal holds it as one of its members. */
317
+ /**
318
+ * The group the share names, when the principal holds it as one of its
319
+ * members.
320
+ */
247
321
  readonly group?: RelationGroup;
248
322
  };
249
323
  type Holder = {
@@ -253,10 +327,10 @@ type Holder = {
253
327
  readonly via: readonly HoldingVia[];
254
328
  };
255
329
  /**
256
- * Who holds a permission on one object, for share dialogs and access
257
- * reviews. It lists and never grants. `complete: false` means some grantee
258
- * could not be enumerated (a global role, a plan, a source without `list`,
259
- * an unavailable relation): holders may be missing, so check with `decide`.
330
+ * Who holds a permission on one object, for share dialogs and access reviews.
331
+ * It lists and never grants. `complete: false` means some grantee could not be
332
+ * enumerated (a global role, a plan, a source without `list`, an unavailable
333
+ * relation): holders may be missing, so check with `decide`.
260
334
  */
261
335
  type WhoCan = {
262
336
  readonly permission: string;
@@ -264,11 +338,11 @@ type WhoCan = {
264
338
  readonly complete: boolean;
265
339
  };
266
340
  /**
267
- * Who holds `permission` on `resource` for the instance's policy and how
268
- * (role, relation or share), from `MembershipSource.list` and
269
- * `RelationSource.related`. It lists and never grants; `complete: false`
270
- * means some holders could not be listed. An instance built from a
271
- * snapshot answers an empty, incomplete list.
341
+ * Who holds `permission` on `resource` for the instance's policy and how (role,
342
+ * relation or share), from `MembershipSource.list` and
343
+ * `RelationSource.related`. It lists and never grants; `complete: false` means
344
+ * some holders could not be listed. An instance built from a snapshot answers
345
+ * an empty, incomplete list.
272
346
  */
273
347
  declare function whoCan(permdock: InstanceHandle, permission: Permission<string, unknown, "instance">, resource: unknown): Promise<WhoCan>;
274
348
  //#endregion
@@ -276,7 +350,10 @@ declare function whoCan(permdock: InstanceHandle, permission: Permission<string,
276
350
  type SignPolicyDocumentOptions = {
277
351
  /** `aud`: the environment URL `cloud().policies` checks it against. */
278
352
  readonly audience: string | readonly string[];
279
- /** `exp`, a NumericDate; the signer's default (one hour after `iat`) when absent. */
353
+ /**
354
+ * `exp`, a NumericDate; the signer's default (one hour after `iat`) when
355
+ * absent.
356
+ */
280
357
  readonly expiresAt?: number;
281
358
  };
282
359
  /**
@@ -292,9 +369,30 @@ type SignSnapshotOptions = {
292
369
  readonly audience?: string | readonly string[];
293
370
  };
294
371
  /**
295
- * Signs `snapshot` as a `vnd.permdock.snapshot+jwt`. `issuedAt` and
296
- * `expiresAt` become `iat` and `exp` and leave the `snapshot` claim, so the
297
- * registered claims are the only times a verifier reads.
372
+ * The claims of a `vnd.permdock.snapshot+jwt` apart from `iss`, `aud` and
373
+ * `jti`.
374
+ */
375
+ type SnapshotClaims = {
376
+ readonly snapshot: Omit<Snapshot, "issuedAt" | "expiresAt">;
377
+ /** The principal's id; absent for an anonymous snapshot. */
378
+ readonly sub?: string;
379
+ /** `issuedAt` in NumericDate seconds; absent when it is not after the epoch. */
380
+ readonly iat?: number;
381
+ /**
382
+ * `expiresAt` in NumericDate seconds; absent when the snapshot has none, and
383
+ * the signer then sets its default.
384
+ */
385
+ readonly exp?: number;
386
+ };
387
+ /**
388
+ * The claims `signSnapshot` signs for `snapshot`. `issuedAt` and `expiresAt`
389
+ * become `iat` and `exp` and leave the `snapshot` claim, so the registered
390
+ * claims are the only times a verifier reads.
391
+ */
392
+ declare function snapshotClaims(snapshot: Snapshot): SnapshotClaims;
393
+ /**
394
+ * Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims
395
+ * `snapshotClaims` answers.
298
396
  */
299
397
  declare function signSnapshot(snapshot: Snapshot, signer: TokenSigner, options?: SignSnapshotOptions): Promise<string>;
300
398
  /**
@@ -340,10 +438,9 @@ type ArazzoFinding = {
340
438
  };
341
439
  declare function arazzoFindings(input: ArazzoSimulateInput, tree: PermissionTree | undefined): readonly ArazzoFinding[];
342
440
  /**
343
- * Walks an Arazzo workflow against `permdock`: each step's operation is
344
- * decided as `permdock.simulate` would, and a server instance emits one
345
- * simulate event for the whole plan. Works on an instance built from a
346
- * snapshot too.
441
+ * Walks an Arazzo workflow against `permdock`: each step's operation is decided
442
+ * as `permdock.simulate` would, and a server instance emits one simulate event
443
+ * for the whole plan. Works on an instance built from a snapshot too.
347
444
  */
348
445
  declare function simulateArazzo(permdock: PermDock, input: ArazzoSimulateInput): ArazzoPlan;
349
446
  //#endregion
@@ -357,16 +454,17 @@ declare function localSnapshotManifest(policy: Policy): LocalSnapshotManifest;
357
454
  //#endregion
358
455
  //#region src/core/app.d.ts
359
456
  /**
360
- * How strict `defineApp` is about the services the policy needs. `dev`
361
- * fills in in-process defaults (a memory approval store and a memory limit
362
- * store) so a new app runs before any infrastructure exists. `prod` throws at startup when a grant needs a
363
- * service the app does not configure, instead of denying at run time.
457
+ * How strict `defineApp` is about the services the policy needs. `dev` fills in
458
+ * in-process defaults (a memory approval store and a memory limit store) so a
459
+ * new app runs before any infrastructure exists. `prod` throws at startup when
460
+ * a grant needs a service the app does not configure, instead of denying at run
461
+ * time.
364
462
  */
365
463
  type AppProfile = "dev" | "prod";
366
464
  /**
367
- * Everything an app wires once and every adapter reads: the data sources,
368
- * the opt-in features and the services. An adapter's own options win over
369
- * these, key by key.
465
+ * Everything an app wires once and every adapter reads: the data sources, the
466
+ * opt-in features and the services. An adapter's own options win over these,
467
+ * key by key.
370
468
  */
371
469
  type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
372
470
  /** Where approval requests open and resume, for every adapter. */
@@ -376,10 +474,10 @@ type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
376
474
  //#endregion
377
475
  //#region src/app/define-app.d.ts
378
476
  /**
379
- * Binds the app's sources, features and services to `policy`. The result
380
- * is a policy: pass it wherever a policy goes (`createPermDock`, every
381
- * adapter, the CLI) and each picks up the app definition, with its own
382
- * options taking precedence. The profile defaults to `prod`.
477
+ * Binds the app's sources, features and services to `policy`. The result is a
478
+ * policy: pass it wherever a policy goes (`createPermDock`, every adapter, the
479
+ * CLI) and each picks up the app definition, with its own options taking
480
+ * precedence. The profile defaults to `prod`.
383
481
  */
384
482
  declare function defineApp<TUser, TPrincipal extends Principal, V extends PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options?: AppOptions): Policy<TUser, TPrincipal, V>;
385
483
  //#endregion
@@ -403,20 +501,20 @@ type ShadowMismatch = {
403
501
  type ShadowOptions = {
404
502
  readonly legacy: LegacyCheck;
405
503
  /**
406
- * Permissions PermDock decides; every other check returns the legacy
407
- * answer. `"all"` once every mismatch is resolved; default none.
504
+ * Permissions PermDock decides; every other check returns the legacy answer.
505
+ * `"all"` once every mismatch is resolved; default none.
408
506
  */
409
507
  readonly enforce?: readonly Permission[] | "all";
410
508
  /** Called for each disagreement; a throw here is ignored. */
411
509
  readonly onMismatch?: (mismatch: ShadowMismatch) => void;
412
510
  };
413
511
  /**
414
- * Runs PermDock beside the application's existing checks while adopting
415
- * it. Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both;
416
- * the legacy answer is returned unless the permission is in `enforce`, and
417
- * every disagreement reaches `onMismatch`. Promote permissions one by one
418
- * as their mismatches are resolved, then remove the wrap. Pass it as an
419
- * adapter's `wrap` option, or call it on a core instance.
512
+ * Runs PermDock beside the application's existing checks while adopting it.
513
+ * Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both; the
514
+ * legacy answer is returned unless the permission is in `enforce`, and every
515
+ * disagreement reaches `onMismatch`. Promote permissions one by one as their
516
+ * mismatches are resolved, then remove the wrap. Pass it as an adapter's `wrap`
517
+ * option, or call it on a core instance.
420
518
  */
421
519
  declare function shadowMode(options: ShadowOptions): PermDockWrap;
422
520
  //#endregion
@@ -433,28 +531,41 @@ declare function mayAccess(policy: Policy, user: unknown, permission: Permission
433
531
  }): boolean;
434
532
  //#endregion
435
533
  //#region src/core/custom-role-source.d.ts
436
- /** Reads custom roles from the application's store, as `customRoleSource` takes them. */
534
+ /**
535
+ * Reads custom roles from the application's store, as `customRoleSource` takes
536
+ * them.
537
+ */
437
538
  type CustomRoleReader = {
438
- /** Every custom role of `tenant`, whether or not anyone in the request holds it. */
439
- rolesFor(tenant: string): CustomRole[] | Promise<CustomRole[]>;
440
- assignable?(tenant: string): string[] | Promise<string[]>;
539
+ /**
540
+ * Every custom role of `tenant`, whether or not anyone in the request holds
541
+ * it.
542
+ */
543
+ rolesFor: (tenant: string) => CustomRole[] | Promise<CustomRole[]>;
544
+ assignable?: (tenant: string) => string[] | Promise<string[]>;
441
545
  /** Platform custom roles (`scope: 'global'`). */
442
- globalRoles?(): CustomRole[] | Promise<CustomRole[]>;
546
+ globalRoles?: () => CustomRole[] | Promise<CustomRole[]>;
443
547
  /** Shared custom roles (`shared: true`), the same for every tenant. */
444
- sharedRoles?(): CustomRole[] | Promise<CustomRole[]>;
548
+ sharedRoles?: () => CustomRole[] | Promise<CustomRole[]>;
445
549
  };
446
550
  type CustomRoleSourceOptions = {
447
- /** `'all'` (default): read every custom role of each tenant, so `assignableRoles` and `decideRoleChange` see them all. */
551
+ /**
552
+ * `'all'` (default): read every custom role of each tenant, so
553
+ * `assignableRoles` and `decideRoleChange` see them all.
554
+ */
448
555
  readonly read?: "all";
449
556
  } | {
450
- /** `'held'`: skip a tenant's read, and the platform read, when every role the subject holds there is declared in `policy`. For requests that never manage roles. */
557
+ /**
558
+ * `'held'`: skip a tenant's read, and the platform read, when every role
559
+ * the subject holds there is declared in `policy`. For requests that
560
+ * never manage roles.
561
+ */
451
562
  readonly read: "held";
452
563
  readonly policy: Policy;
453
564
  };
454
565
  /**
455
- * A `CustomRoleSource` over a reader that returns every custom role of a tenant.
456
- * It keeps only the roles of the requested tenant. With `read: 'held'` it
457
- * skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
566
+ * A `CustomRoleSource` over a reader that returns every custom role of a
567
+ * tenant. It keeps only the roles of the requested tenant. With `read: 'held'`
568
+ * it skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
458
569
  * subject holds only declared roles there.
459
570
  */
460
571
  declare function customRoleSource(reader: CustomRoleReader, options?: CustomRoleSourceOptions): CustomRoleSource;
@@ -472,7 +583,10 @@ type SnapshotForOptions = {
472
583
  readonly memberships?: readonly Membership[];
473
584
  /** The tenant's custom roles, typically from a shared, tagged cache. */
474
585
  readonly customRoles?: readonly CustomRole[];
475
- /** Per tenant, the role names `CustomRoleSource.assignable` returns; narrows `assignable`. */
586
+ /**
587
+ * Per tenant, the role names `CustomRoleSource.assignable` returns; narrows
588
+ * `assignable`.
589
+ */
476
590
  readonly assignable?: Readonly<Record<string, readonly string[]>>;
477
591
  /** Plans of the active tenant; replaces `principal.plans`. */
478
592
  readonly plans?: readonly string[];
@@ -482,15 +596,15 @@ type SnapshotForOptions = {
482
596
  readonly now?: Instant;
483
597
  };
484
598
  /**
485
- * Builds the serializable access snapshot for a subject without a request,
486
- * a network call or a cache directive: call it inside the app's own
487
- * `'use cache: private'` function. Synchronous; the policy's `subject` and
488
- * `context` mappers must be synchronous too.
599
+ * Builds the serializable access snapshot for a subject without a request, a
600
+ * network call or a cache directive: call it inside the app's own `'use cache:
601
+ * private'` function. Synchronous; the policy's `subject` and `context` mappers
602
+ * must be synchronous too.
489
603
  */
490
604
  declare function snapshotFor<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: SnapshotForOptions): Snapshot;
491
605
  //#endregion
492
606
  //#region src/core/permissions.d.ts
493
- declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>): InferPermissionTree<Input, "", PX> & ResourceXTree<RX>;
607
+ declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>): PermissionsOf<Input, PX, RX>;
494
608
  //#endregion
495
609
  //#region src/core/permission-leaf.d.ts
496
610
  /**
@@ -498,8 +612,12 @@ declare function definePermissions<const Input, PX = never, RX = never>(input: I
498
612
  * renames and for one that crossed a serialisation boundary.
499
613
  */
500
614
  declare function formerKeys(permission: object): readonly string[];
501
- declare function resource<T, const A extends ActionList = readonly [], const C extends ActionList = readonly []>(schema: StandardSchemaV1<unknown, T>, options?: ResourceOptions<A, C>): ResourceInit<T, A, C>;
502
- declare function resource<const A extends ActionList = readonly [], const C extends ActionList = readonly []>(options: ResourceOptions<A, C>): ResourceInit<unknown, A, C>;
615
+ declare function resource<T, const A extends ActionList = readonly [], const C extends ActionList = readonly [], const N extends string = never>(schema: StandardSchemaV1<unknown, T>, options?: ResourceOptions<A, C> & {
616
+ readonly name?: N;
617
+ }): ResourceInit<T, A, C, N>;
618
+ declare function resource<const A extends ActionList = readonly [], const C extends ActionList = readonly [], const N extends string = never>(options: ResourceOptions<A, C> & {
619
+ readonly name?: N;
620
+ }): ResourceInit<unknown, A, C, N>;
503
621
  //#endregion
504
622
  //#region src/core/presets.d.ts
505
623
  type ReadOnlyMeta = {
@@ -562,7 +680,10 @@ declare function writable<const A extends ActionList | undefined = undefined, co
562
680
  //#endregion
563
681
  //#region src/core/role-builder.d.ts
564
682
  type RoleGrants = readonly (Omit<Grant, "role" | "scope"> | readonly Omit<Grant, "role" | "scope">[])[];
565
- /** A role held at a named scope: `on` is checked against `definePolicy({ scopes })`. */
683
+ /**
684
+ * A role held at a named scope: `on` is checked against `definePolicy({ scopes
685
+ * })`.
686
+ */
566
687
  declare function role<const S extends string>(name: string | Role, grants: RoleGrants, options: RoleOptions<S> & {
567
688
  readonly on: S;
568
689
  }): RoleBinding<S>;
@@ -574,7 +695,18 @@ declare function normalizeAssurance(input: AssuranceRequirement | undefined): As
574
695
  //#endregion
575
696
  //#region src/core/grant-builders.d.ts
576
697
  declare function allow<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
698
+ /**
699
+ * Every action of a resource (`permissions.post`), of several, or of the whole
700
+ * tree, unconditionally. Each grant is listed in the policy as if written out,
701
+ * and an action added to the resource later is granted too.
702
+ */
703
+ declare function allow(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
577
704
  declare function deny<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
705
+ /**
706
+ * Every action of a resource, of several, or of the whole tree,
707
+ * unconditionally.
708
+ */
709
+ declare function deny(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
578
710
  //#endregion
579
711
  //#region src/core/approval-normalize.d.ts
580
712
  declare function normalizeApproval(approval: ApprovalOption | undefined, permission?: string): Grant["approval"];
@@ -599,7 +731,10 @@ declare function supportAccess<const S extends string>(options: SupportAccessOpt
599
731
  declare function supportAccess(options: SupportAccessOptions<never>): RoleBinding<"tenant">;
600
732
  type ActivateInput = {
601
733
  readonly role: string | Role;
602
- /** The scope the activation applies in (a declared name or the `tenant` / `team` alias). */
734
+ /**
735
+ * The scope the activation applies in (a declared name or the `tenant` /
736
+ * `team` alias).
737
+ */
603
738
  readonly scope: string;
604
739
  readonly id: string;
605
740
  /** Ancestor scope ids, keyed by scope name, for a nested-scope activation. */
@@ -609,30 +744,57 @@ type ActivateInput = {
609
744
  readonly reason?: string;
610
745
  };
611
746
  /**
612
- * Requests a just-in-time role activation. It never writes: a granted
613
- * decision carries the elevated membership under `elevation` for the app to
614
- * write. `approval-required` comes back first when the role's `activation`
615
- * sets `approval`. Fail-closed: an unknown role, an ineligible subject, a
616
- * missing justification or stale authentication all deny.
747
+ * Requests a just-in-time role activation. It never writes: a granted decision
748
+ * carries the elevated membership under `elevation` for the app to write.
749
+ * `approval-required` comes back first when the role's `activation` sets
750
+ * `approval`. Fail-closed: an unknown role, an ineligible subject, a missing
751
+ * justification or stale authentication all deny.
617
752
  */
618
753
  /**
619
754
  * Requests a just-in-time activation of an eligible role for the subject of
620
755
  * `permdock`. It never writes: a granted decision carries the elevated
621
- * membership under `elevation` for the app to write, and
622
- * `approval-required` comes back first when the role's `activation` sets
623
- * `approval`. An instance built from a snapshot denies with `unsupported`.
756
+ * membership under `elevation` for the app to write, and `approval-required`
757
+ * comes back first when the role's `activation` sets `approval`. An instance
758
+ * built from a snapshot denies with `unsupported`.
624
759
  */
625
760
  declare function activate(permdock: InstanceHandle, input: ActivateInput): Decision;
626
761
  //#endregion
762
+ //#region src/core/scope-helpers.d.ts
763
+ /**
764
+ * The canonical form PermDock evaluates one membership in, or `undefined` when
765
+ * it is malformed and grants nothing. `scopes` is the policy's or the catalog's
766
+ * scope list; absent or empty means the implicit `tenant` and `team` pair.
767
+ */
768
+ declare function normalizeMembership(input: unknown, scopes?: readonly Scope[]): Membership | undefined;
769
+ /**
770
+ * Every well-formed membership of `input` in canonical form; malformed entries
771
+ * are dropped.
772
+ */
773
+ declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[]): readonly Membership[];
774
+ /**
775
+ * The declared scope `name` stands for: the name itself, or the scope the
776
+ * `tenant` (first) or `team` (second) alias names. `undefined` otherwise.
777
+ */
778
+ declare function resolveScope(scopes: readonly Scope[] | undefined, name: unknown): string | undefined;
779
+ //#endregion
627
780
  //#region src/core/ownership.d.ts
628
- /** Who a role change is about: their principal id and their membership in the scope instance. */
781
+ /**
782
+ * Who a role change is about: their principal id and their membership in the
783
+ * scope instance.
784
+ */
629
785
  type RoleChangeTarget = {
630
786
  readonly id: string;
631
- /** The kind of the target's membership in the instance (`staff`, `contact`, ...). */
787
+ /**
788
+ * The kind of the target's membership in the instance (`staff`, `contact`,
789
+ * ...).
790
+ */
632
791
  readonly via?: string;
633
792
  /** The roles the target holds in the instance now. */
634
793
  readonly roles?: readonly string[];
635
- /** `idp` when the identity provider owns the target's membership: the application cannot change it. */
794
+ /**
795
+ * `idp` when the identity provider owns the target's membership: the
796
+ * application cannot change it.
797
+ */
636
798
  readonly managedBy?: "idp";
637
799
  };
638
800
  type RoleChangeBase = {
@@ -642,16 +804,15 @@ type RoleChangeBase = {
642
804
  readonly within?: Readonly<Record<string, string>>;
643
805
  readonly target: RoleChangeTarget;
644
806
  /**
645
- * How many principals hold `role` in the instance now, from the
646
- * application's store. Without it a role with `min`, `max` or
647
- * `transferOnly` is denied.
807
+ * How many principals hold `role` in the instance now, from the application's
808
+ * store. Without it a role with `min`, `max` or `transferOnly` is denied.
648
809
  */
649
810
  readonly holders?: number;
650
811
  };
651
812
  /**
652
813
  * A role held at a named scope instance (`scope` is a declared name or alias
653
- * and `id` the instance), or a global role: `scope: 'global'` with no `id`.
654
- * A global change has no tenant, so `within` and `holders` do not apply to it.
814
+ * and `id` the instance), or a global role: `scope: 'global'` with no `id`. A
815
+ * global change has no tenant, so `within` and `holders` do not apply to it.
655
816
  */
656
817
  type RoleChange = RoleChangeBase & ({
657
818
  /** The scope the role is held at (a declared name or alias). */
@@ -676,12 +837,65 @@ type RoleChangeDecision = {
676
837
  readonly change: RoleChange;
677
838
  readonly denials: readonly Denial[];
678
839
  };
840
+ /**
841
+ * The holder-count, membership-kind, exclusivity and `assigns` rules of one
842
+ * role, as the catalog lists them (`CatalogRole`).
843
+ */
844
+ type RoleRules = {
845
+ readonly key: string;
846
+ readonly min?: number;
847
+ readonly max?: number;
848
+ readonly transferOnly?: boolean;
849
+ readonly assigns?: readonly string[];
850
+ readonly for?: readonly string[];
851
+ readonly exclusiveWith?: readonly string[];
852
+ };
853
+ type RoleChangeCheckInput = {
854
+ readonly change: {
855
+ readonly kind: "assign" | "revoke" | "transfer";
856
+ readonly target: Pick<RoleChangeTarget, "via" | "roles">;
857
+ };
858
+ /**
859
+ * How many principals hold the role in the instance now; without it a role
860
+ * with `min`, `max` or `transferOnly` is denied.
861
+ */
862
+ readonly holders?: number;
863
+ /**
864
+ * Every declared role: adds the `exclusiveWith` other roles declare against
865
+ * this one, and with `actorRoles` the `assigns` rule.
866
+ */
867
+ readonly roles?: readonly RoleRules[];
868
+ /**
869
+ * The roles the actor holds at the instance, highest rank first. With `roles`
870
+ * naming any `assigns`, one of them must assign this role.
871
+ */
872
+ readonly actorRoles?: readonly string[];
873
+ };
874
+ /**
875
+ * `by` names the actor role whose `assigns` allowed the change, `null` when the
876
+ * rule did not apply.
877
+ */
878
+ type RoleChangeCheck = {
879
+ readonly ok: true;
880
+ readonly by: string | null;
881
+ } | {
882
+ readonly ok: false;
883
+ readonly denials: readonly Denial[];
884
+ };
885
+ /**
886
+ * The rules of a role change that need no subject: `assigns`, `for`,
887
+ * `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and the
888
+ * target's roles alone. `decideRoleChange` runs the same function after its
889
+ * actor, tenant and ceiling checks; a service that holds only the catalog calls
890
+ * it with the `CatalogRole` entries.
891
+ */
892
+ declare function checkRoleChange(role: RoleRules, input: RoleChangeCheckInput): RoleChangeCheck;
679
893
  type RoleChangeOptions = {
680
894
  /**
681
- * `true` when the application loaded `change.within` from its own store
682
- * (the instance's stored parent), not from the request. Without it, a
683
- * nested instance's tenant comes only from a live membership the actor
684
- * holds on that instance or under it.
895
+ * `true` when the application loaded `change.within` from its own store (the
896
+ * instance's stored parent), not from the request. Without it, a nested
897
+ * instance's tenant comes only from a live membership the actor holds on that
898
+ * instance or under it.
685
899
  */
686
900
  readonly trusted?: boolean;
687
901
  };
@@ -690,12 +904,12 @@ type RoleChangeOptions = {
690
904
  * the instance's own principal; nothing in `change` can stand in for it.
691
905
  */
692
906
  /**
693
- * Whether the subject of `permdock` may assign, revoke or transfer a role
694
- * in one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`,
695
- * `min`, `max` and `transferOnly`. It never writes; the application does,
696
- * and generated RLS triggers re-check the holder counts at commit. A nested
697
- * instance's tenant comes from a live membership the subject holds on it,
698
- * or from `change.within` only with `{ trusted: true }`; otherwise
907
+ * Whether the subject of `permdock` may assign, revoke or transfer a role in
908
+ * one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`, `min`,
909
+ * `max` and `transferOnly`. It never writes; the application does, and
910
+ * generated RLS triggers re-check the holder counts at commit. A nested
911
+ * instance's tenant comes from a live membership the subject holds on it, or
912
+ * from `change.within` only with `{ trusted: true }`; otherwise
699
913
  * `no-membership`. An instance built from a snapshot denies with
700
914
  * `unsupported`.
701
915
  */
@@ -703,17 +917,20 @@ declare function decideRoleChange(permdock: InstanceHandle, change: RoleChange,
703
917
  //#endregion
704
918
  //#region src/core/parse-sink-events.d.ts
705
919
  /**
706
- * Validates one untrusted sink event against its family's schema and returns
707
- * a frozen copy, or `null` for anything else. Never throws.
920
+ * Validates one untrusted sink event against its family's schema and returns a
921
+ * frozen copy, or `null` for anything else. Never throws.
708
922
  */
709
923
  declare function parseSinkEvent(value: unknown): SinkEvent | null;
710
924
  /**
711
925
  * Validates an untrusted list of sink events, such as a request body a sink
712
- * receiver read. Each event that fails its schema is dropped, and a value
713
- * that is not an array yields no events. Never throws.
926
+ * receiver read. Each event that fails its schema is dropped, and a value that
927
+ * is not an array yields no events. Never throws.
714
928
  */
715
929
  declare function parseSinkEvents(value: unknown): readonly SinkEvent[];
716
- /** Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it does not match. */
930
+ /**
931
+ * Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it
932
+ * does not match.
933
+ */
717
934
  declare function parseCatalogEventData(value: unknown): CatalogEventData | null;
718
935
  /**
719
936
  * Validates one CloudEvent against the closed type list, its `dataschema` and
@@ -728,7 +945,10 @@ declare function parseCloudEvent(value: unknown): CloudEvent | null;
728
945
  declare function parseCloudEventBatch(value: unknown): readonly CloudEvent[] | null;
729
946
  //#endregion
730
947
  //#region src/core/event-schemas.d.ts
731
- /** The URL each event family's schema is published at, and its CloudEvents `dataschema`. */
948
+ /**
949
+ * The URL each event family's schema is published at, and its CloudEvents
950
+ * `dataschema`.
951
+ */
732
952
  declare const EVENT_SCHEMA_IDS: {
733
953
  readonly decision: "https://permdock.com/schemas/decision-event-v1.json";
734
954
  readonly directory: "https://permdock.com/schemas/directory-event-v1.json";
@@ -762,9 +982,9 @@ declare const SINK_EVENT_SCHEMAS: {
762
982
  /** The OCSF schema version `toOcsf` emits. */
763
983
  declare const OCSF_VERSION = "1.9.0";
764
984
  /**
765
- * An OCSF Authorize Session (class 3003, category Identity and Access Management) event.
766
- * API Activity (6003) would fit a per-request decision, but it requires `api` and
767
- * `src_endpoint`, which a decision event does not carry.
985
+ * An OCSF Authorize Session (class 3003, category Identity and Access
986
+ * Management) event. API Activity (6003) would fit a per-request decision, but
987
+ * it requires `api` and `src_endpoint`, which a decision event does not carry.
768
988
  */
769
989
  type OcsfAuthorizeSession = {
770
990
  readonly class_uid: 3003;
@@ -822,15 +1042,16 @@ type OcsfAuthorizeSession = {
822
1042
  };
823
1043
  };
824
1044
  /**
825
- * Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged.
826
- * An event whose `at` does not parse has no OCSF `time` and projects to `undefined`.
1045
+ * Projects a decision or approval event onto OCSF Authorize Session; the event
1046
+ * itself is unchanged. An event whose `at` does not parse has no OCSF `time`
1047
+ * and projects to `undefined`.
827
1048
  */
828
1049
  declare function toOcsf(event: DecisionEvent): OcsfAuthorizeSession | undefined;
829
1050
  /**
830
1051
  * An OCSF User Management (class 3007) event for a support-access lifecycle
831
1052
  * event: `started` enables the session, `ended` and `revoked` disable it.
832
- * Support access is high severity, so a SIEM can alert on vendor access.
833
- * OCSF 1.9.0 deprecates Account Change (3001) in favour of this class.
1053
+ * Support access is high severity, so a SIEM can alert on vendor access. OCSF
1054
+ * 1.9.0 deprecates Account Change (3001) in favour of this class.
834
1055
  */
835
1056
  type OcsfUserManagement = {
836
1057
  readonly class_uid: 3007;
@@ -875,35 +1096,53 @@ declare function accessToOcsf(event: AccessEvent): OcsfUserManagement | undefine
875
1096
  /** The CSV export columns, in order; the header row of every CSV file. */
876
1097
  declare const CSV_COLUMNS: readonly ["time", "principal", "actor", "tenant", "permission", "outcome", "matched.role", "via", "denials.reason", "token"];
877
1098
  /**
878
- * One RFC 4180 row for a decision or approval event, without a line
879
- * terminator; join rows with CRLF under a `CSV_COLUMNS` header.
1099
+ * One RFC 4180 row for a decision or approval event, without a line terminator;
1100
+ * join rows with CRLF under a `CSV_COLUMNS` header.
880
1101
  */
881
1102
  declare function toCsvRow(event: DecisionEvent): string;
882
1103
  //#endregion
883
1104
  //#region src/core/catalog-fingerprint.d.ts
884
1105
  /**
885
- * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON without `generatedAt`, `generator`, `fingerprint`
886
- * and every `permissions[].usages`, so neither the CLI version, the clock nor
887
- * call sites change it.
1106
+ * The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
1107
+ * without `generatedAt`, `generator`, `fingerprint` and every
1108
+ * `permissions[].usages`, so neither the CLI version, the clock nor call sites
1109
+ * change it.
888
1110
  */
889
1111
  declare function catalogFingerprint(catalog: unknown): string;
890
1112
  //#endregion
1113
+ //#region src/core/canonical-json.d.ts
1114
+ /**
1115
+ * RFC 8785 (JCS) output for I-JSON input: keys sorted by UTF-16 code units,
1116
+ * ECMAScript number and string serialisation, no whitespace. `undefined`
1117
+ * members are dropped. Outside I-JSON, Dates become ISO strings, bigints
1118
+ * `"<n>n"`, and a repeated object on the current path `"[Circular]"`, so any
1119
+ * validated row serialises.
1120
+ */
1121
+ declare function canonicalJson(value: unknown): string;
1122
+ //#endregion
1123
+ //#region src/core/sha256.d.ts
1124
+ /**
1125
+ * The one digest notation: `sha-256:` plus the unpadded base64url SHA-256 of
1126
+ * `text`. An RFC 9651 sf-token, so it fits a structured header as is.
1127
+ */
1128
+ declare function sha256Digest(text: string): string;
1129
+ //#endregion
891
1130
  //#region src/core/delegation.d.ts
892
1131
  type DelegatedPermission = Pick<Permission, "scope" | "resource" | "action">;
893
1132
  /**
894
1133
  * Whether a delegated caller may use a permission its principal holds, through
895
- * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
896
- * `undefined` means covered; otherwise the denial reason `decide` would add.
1134
+ * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`. `undefined`
1135
+ * means covered; otherwise the denial reason `decide` would add.
897
1136
  */
898
1137
  declare function coveredByDelegation(permission: DelegatedPermission, delegation: Delegation | undefined, resourceId?: string, hasActor?: boolean): DenialReason | undefined;
899
1138
  /**
900
1139
  * The permission keys the policy's delegations let `subject.actor` use for
901
1140
  * `subject.principal` right now: the union over every active delegation whose
902
- * `to` matches the actor and whose `from` the principal holds. `undefined`
903
- * when none applies, so the call falls back to the token delegation alone.
904
- * An actor with `readOnly: true` gets only each delegation's read-only keys.
905
- * Attenuation only: a key here still needs a matching allow and no deny.
1141
+ * `to` matches the actor and whose `from` the principal holds. `undefined` when
1142
+ * none applies, so the call falls back to the token delegation alone. An actor
1143
+ * with `readOnly: true` gets only each delegation's read-only keys. Attenuation
1144
+ * only: a key here still needs a matching allow and no deny.
906
1145
  */
907
1146
  declare function delegatedPermissions(delegations: readonly PolicyDelegation[] | undefined, subject: Subject, heldRoles: ReadonlySet<string>, now: number): ReadonlySet<string> | undefined;
908
1147
  //#endregion
909
- export { ShadowMismatch as $, CustomRoleValidation as $t, decideRoleChange as A, isExternallyManaged as At, crud as B, getResource as Bt, parseCloudEventBatch as C, MemoryRelationSourceData as Ct, RoleChangeDecision as D, claimsFirst as Dt, RoleChange as E, stripeEntitlementSource as Et, normalizeApproval as F, memorySettingsSource as Ft, definePermissions as G, separationConflicts as Gt, writable as H, listPermissions as Ht, allow as I, memorySnapshotSource as It, CustomRoleReader as J, fromSnapshot as Jt, SnapshotForOptions as K, requiresApproval as Kt, deny as L, sqlFunction as Lt, activate as M, memoryCustomRoleSource as Mt, breakGlass as N, memoryEntitlementSource as Nt, RoleChangeOptions as O, composeMemberships as Ot, supportAccess as P, memoryMembershipSource as Pt, LegacyCheck as Q, CustomRoleRename as Qt, normalizeAssurance as R, opaque as Rt, parseCloudEvent as S, MemoryEdge as St, parseSinkEvents as T, StripeEntitlementsClient as Tt, formerKeys as U, mergePermissions as Ut, readable as V, isPermission as Vt, resource as W, definePolicy as Wt, customRoleSource as X, CustomRoleDrop as Xt, CustomRoleSourceOptions as Y, parseSnapshot as Yt, mayAccess as Z, CustomRoleDropReason as Zt, DIRECTORY_EVENT_SCHEMA as _, signPolicyDocument as _t, toCsvRow as a, context as an, localSnapshotManifest as at, SINK_EVENT_SCHEMAS as b, WhoCan as bt, OcsfUserManagement as c, ArazzoSimulateInput as ct, ACCESS_EVENT_SCHEMA as d, simulateArazzo as dt, ResolvedCustomRole as en, ShadowOptions as et, AUTOMATION_EVENT_SCHEMA as f, deliveryEvent as ft, DELIVERY_EVENT_SCHEMA as g, SignPolicyDocumentOptions as gt, DECISION_EVENT_SCHEMA as h, snapshotFromClaims as ht, CSV_COLUMNS as i, validateCustomRole as in, AppProfile as it, ActivateInput as j, APPROVAL_POLICY_UNAVAILABLE as jt, RoleChangeTarget as k, countHolders as kt, accessToOcsf as l, ArazzoStepResult as lt, CREDENTIAL_EVENT_SCHEMA as m, signSnapshot as mt, delegatedPermissions as n, customRoleClaim as nn, defineApp as nt, OCSF_VERSION as o, principal as on, ArazzoFinding as ot, CATALOG_EVENT_SCHEMA as p, SignSnapshotOptions as pt, snapshotFor as q, emptySnapshot as qt, catalogFingerprint as r, resolveCustomRole as rn, AppOptions as rt, OcsfAuthorizeSession as s, ArazzoPlan as st, coveredByDelegation as t, ValidateCustomRoleOptions as tn, shadowMode as tt, toOcsf as u, arazzoFindings as ut, EVENT_SCHEMA_IDS as v, Holder as vt, parseSinkEvent as w, memoryRelationSource as wt, parseCatalogEventData as x, whoCan as xt, MEMBERSHIP_EVENT_SCHEMA as y, HoldingVia as yt, role as z, findPermission as zt };
1148
+ export { resource as $, listPermissions as $t, RoleChangeCheckInput as A, HoldingVia as At, ActivateInput as B, countHolders as Bt, parseCatalogEventData as C, SnapshotClaims as Ct, parseSinkEvents as D, SignPolicyDocumentOptions as Dt, parseSinkEvent as E, snapshotFromClaims as Et, checkRoleChange as F, memoryRelationSource as Ft, allow as G, memoryMembershipSource as Gt, breakGlass as H, APPROVAL_POLICY_UNAVAILABLE as Ht, decideRoleChange as I, StripeEntitlementsClient as It, role as J, sqlFunction as Jt, deny as K, memorySettingsSource as Kt, normalizeMembership as L, stripeEntitlementSource as Lt, RoleChangeOptions as M, whoCan as Mt, RoleChangeTarget as N, MemoryEdge as Nt, RoleChange as O, signPolicyDocument as Ot, RoleRules as P, MemoryRelationSourceData as Pt, formerKeys as Q, isPermission as Qt, normalizeMemberships as R, claimsFirst as Rt, SINK_EVENT_SCHEMAS as S, principal as Sn, SignSnapshotOptions as St, parseCloudEventBatch as T, snapshotClaims as Tt, supportAccess as U, memoryCustomRoleSource as Ut, activate as V, isExternallyManaged as Vt, normalizeApproval as W, memoryEntitlementSource as Wt, readable as X, findPermission as Xt, crud as Y, opaque as Yt, writable as Z, getResource as Zt, DECISION_EVENT_SCHEMA as _, parseCustomRoleEntry as _n, ArazzoSimulateInput as _t, catalogFingerprint as a, requiresApproval as an, customRoleSource as at, EVENT_SCHEMA_IDS as b, claim as bn, simulateArazzo as bt, OCSF_VERSION as c, parseSnapshot as cn, ShadowMismatch as ct, accessToOcsf as d, CustomRoleEntry as dn, defineApp as dt, mergePermissions as en, definePermissions as et, toOcsf as f, CustomRoleRename as fn, AppOptions as ft, CREDENTIAL_EVENT_SCHEMA as g, customRoleClaim as gn, ArazzoPlan as gt, CATALOG_EVENT_SCHEMA as h, ValidateCustomRoleOptions as hn, ArazzoFinding as ht, canonicalJson as i, separationConflicts as in, CustomRoleSourceOptions as it, RoleChangeDecision as j, WhoCan as jt, RoleChangeCheck as k, Holder as kt, OcsfAuthorizeSession as l, CustomRoleDrop as ln, ShadowOptions as lt, AUTOMATION_EVENT_SCHEMA as m, ResolvedCustomRole as mn, localSnapshotManifest as mt, delegatedPermissions as n, definePolicy as nn, snapshotFor as nt, CSV_COLUMNS as o, emptySnapshot as on, mayAccess as ot, ACCESS_EVENT_SCHEMA as p, CustomRoleValidation as pn, AppProfile as pt, normalizeAssurance as q, memorySnapshotSource as qt, sha256Digest as r, isRoleName as rn, CustomRoleReader as rt, toCsvRow as s, fromSnapshot as sn, LegacyCheck as st, coveredByDelegation as t, RoleNameOf as tn, SnapshotForOptions as tt, OcsfUserManagement as u, CustomRoleDropReason as un, shadowMode as ut, DELIVERY_EVENT_SCHEMA as v, resolveCustomRole as vn, ArazzoStepResult as vt, parseCloudEvent as w, signSnapshot as wt, MEMBERSHIP_EVENT_SCHEMA as x, context as xn, deliveryEvent as xt, DIRECTORY_EVENT_SCHEMA as y, validateCustomRole as yn, arazzoFindings as yt, resolveScope as z, composeMemberships as zt };