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,31 +1,36 @@
1
- import { n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep, t as freezeCopy } from "./freeze-CrU8nQeX.js";
3
- import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
4
- import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-BKy0EfhN.js";
5
- import { t as attachInternals } from "./internals-Dk8A8fX3.js";
6
- import { a as getResource, c as listPermissions, g as formerScopes } from "./permission-registry-Br4jSNVi.js";
7
- import { n as isThenable } from "./thenable-yD7SabqG.js";
8
- import { i as readAppData } from "./app-data-MuyzVqX8.js";
9
- import { a as normalizeMemberships, d as scopeList, m as tenantOf } from "./scopes-CUPSjo9q.js";
10
- import { o as pickVisible, s as sanitizeContext } from "./validity-CZ7-y0Cj.js";
11
- import { c as nowSeconds, d as resolveActiveTenant, m as tenantsOf, p as scopeField, t as heldRoleNamesIn, u as relatesTo } from "./tenancy-DN2QAx9z.js";
12
- import { l as policyX } from "./policy-DbM5YYtV.js";
13
- import { E as finish, M as isContact, T as emptyListeners, i as customRolesFor, j as contactMemberships, o as roleSourceFor, r as assignableNamesFor, s as sourceName, t as evaluate, u as customGrantsFor, w as emitSafe } from "./evaluate-CNClBvcj.js";
14
- import { a as whereGrant, c as applyRoleKinds, i as collectSnapshotGrants, l as audiencesOf, o as heldRoleNames, p as asMembershipSource, r as assignableIn, s as roleLeaf, t as snapshotOf } from "./instance-snapshot-BOEhcqIF.js";
15
- import { r as relationReader, t as pendingRelations } from "./relations-BnCWnJGI.js";
16
- import { r as snapshotGrant } from "./snapshot-B7DkYg6g.js";
17
- import { i as decideForTarget, n as mayUse, o as signSnapshot, r as permittedIds, t as whereFromGrants } from "./where-scope-C9vfEphl.js";
1
+ import { n as isReadonlyArray, r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep, t as freezeCopy } from "./freeze-jjan0lCv.js";
3
+ import { n as PermDockValidationError } from "./validation-error-CYg2kJEw.js";
4
+ import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-B6R_lg2a.js";
5
+ import { t as attachInternals } from "./internals-B3IgHrvo.js";
6
+ import { _ as keyToScope, a as getResource, c as listPermissions, g as formerScopes } from "./permission-registry-B8tYxPIt.js";
7
+ import { n as isThenable } from "./thenable-BNSM1U2R.js";
8
+ import { i as readAppData } from "./app-data-UNNm07jV.js";
9
+ import { f as scopeList, h as tenantOf, o as normalizeMemberships } from "./scopes-0Up_UA2t.js";
10
+ import { o as pickVisible, s as sanitizeContext } from "./validity-Buc7w8E9.js";
11
+ import { t as byCodePoint } from "./compare-DTfyUunF.js";
12
+ import { c as nowSeconds, d as resolveActiveTenant, m as tenantsOf, p as scopeField, t as heldRoleNamesIn, u as relatesTo } from "./tenancy-5d1zVBvK.js";
13
+ import { d as policyX } from "./policy-CLQ8__GF.js";
14
+ import { D as emptyListeners, E as emitSafe, N as contactMemberships, O as finish, P as isContact, i as customRolesFor, o as roleSourceFor, r as assignableNamesFor, s as sourceName, t as evaluate, u as customGrantsFor, w as unknownLevelsFor } from "./evaluate-Dd8Ta0Ie.js";
15
+ import { c as heldRoleNames, d as audiencesOf, g as asMembershipSource, i as assignableIn, l as roleLeaf, o as collectSnapshotGrants, s as whereGrant, t as snapshotOf, u as applyRoleKinds } from "./instance-snapshot--JWiTrvO.js";
16
+ import { r as relationReader, t as pendingRelations } from "./relations-BxvRvDHK.js";
17
+ import { i as snapshotGrant } from "./snapshot-CXlzi69u.js";
18
+ import { a as decideForTarget, i as permittedIds, o as deniedFor, r as mayUse, s as signSnapshot, t as whereFromGrants } from "./where-scope-DlCdCM_8.js";
19
+ import { i as decideAllWith, n as canAllWith } from "./checks-CGkP3Z7A.js";
18
20
  import { r as isSubject, t as anonymousSubject } from "./subject-BGoM5o8B.js";
19
21
  //#region src/core/app.ts
20
22
  const APP = Symbol.for("permdock.app");
21
- /** The app definition bound to `policy` by `defineApp`, or `undefined` for a plain policy. */
23
+ /**
24
+ * The app definition bound to `policy` by `defineApp`, or `undefined` for a
25
+ * plain policy.
26
+ */
22
27
  function appOf(policy) {
23
28
  const value = Reflect.get(policy, APP);
24
29
  return value === void 0 ? void 0 : value;
25
30
  }
26
31
  /**
27
- * `options` with the app's values under it, key by key, for an adapter
28
- * factory to call first: `options = withApp(policy, options)`.
32
+ * `options` with the app's values under it, key by key, for an adapter factory
33
+ * to call first: `options = withApp(policy, options)`.
29
34
  */
30
35
  function withApp(policy, options) {
31
36
  const app = appOf(policy);
@@ -37,7 +42,10 @@ function withApp(policy, options) {
37
42
  }
38
43
  //#endregion
39
44
  //#region src/core/assert-decision.ts
40
- /** `assert`'s outcome: the granted decision, or the error a refusal throws after `onDenied` runs. */
45
+ /**
46
+ * `assert`'s outcome: the granted decision, or the error a refusal throws after
47
+ * `onDenied` runs.
48
+ */
41
49
  function assertDecision(policy, subject, permission, data, decision, onDenied) {
42
50
  if (decision.outcome === "granted") return decision;
43
51
  if (onDenied !== void 0) onDenied(decision);
@@ -70,7 +78,10 @@ function assertDecision(policy, subject, permission, data, decision, onDenied) {
70
78
  }
71
79
  //#endregion
72
80
  //#region src/core/instance-env.ts
73
- /** The environment `derive(options)` builds on: `base` with the sources `options` replaces loaded again. */
81
+ /**
82
+ * The environment `derive(options)` builds on: `base` with the sources
83
+ * `options` replaces loaded again.
84
+ */
74
85
  function deriveEnv(policy, subject, base, relationCache, options) {
75
86
  const scopes = scopeList(policy.scopes);
76
87
  const tenants = tenantsOf(subject.principal, scopes);
@@ -138,13 +149,17 @@ function simulateEvent(policy, subject, env, evaluated) {
138
149
  }
139
150
  //#endregion
140
151
  //#region src/core/instance.ts
141
- /** Each round reads one more layer: link hops, then the chain, then nested groups. */
152
+ /**
153
+ * Each round reads one more layer: link hops, then the chain, then nested
154
+ * groups.
155
+ */
142
156
  const LOAD_ROUNDS = 48;
143
157
  function buildInstance(policy, subject, envBase, team) {
144
158
  const listeners = emptyListeners();
145
159
  const queuedAuth = [...envBase.queuedAuth];
146
160
  const queuedErrors = [...envBase.queuedErrors ?? []];
147
161
  const customGrants = customGrantsFor(policy, envBase.customRoles);
162
+ const unknownLevels = unknownLevelsFor(policy, envBase.customRoles);
148
163
  const relationCache = envBase.relationCache ?? /* @__PURE__ */ new Map();
149
164
  const relations = relationReader(envBase.relations, relationCache, policy.resources);
150
165
  const assignableAt = (tenant) => assignableIn(policy, subject, envBase.customRoles, customGrants, tenant, tenant === void 0 ? void 0 : envBase.assignable?.get(tenant));
@@ -165,11 +180,25 @@ function buildInstance(policy, subject, envBase, team) {
165
180
  });
166
181
  const decideImpl = (permission, data, options) => evaluate(policy, subject, permission, data, options ?? {}, envFor(options?.call !== "simulate", options?.call === "can"));
167
182
  const explainImpl = (permission, data, options) => {
168
- return decideImpl(permission, data, {
183
+ const explained = decideImpl(permission, data, {
169
184
  ...options,
170
185
  call: options?.call ?? "explain",
171
186
  explain: true
172
187
  });
188
+ const named = unknownLevels.filter((entry) => entry.permission === permission.key);
189
+ return named.length === 0 ? explained : {
190
+ ...explained,
191
+ trace: {
192
+ ...explained.trace,
193
+ skipped: [...explained.trace.skipped, ...named.map((entry) => ({
194
+ role: entry.role,
195
+ permission: entry.permission,
196
+ effect: "allow",
197
+ why: "unknown-level",
198
+ level: entry.level
199
+ }))]
200
+ }
201
+ };
173
202
  };
174
203
  const canImpl = (permission, data, options) => {
175
204
  try {
@@ -190,9 +219,44 @@ function buildInstance(policy, subject, envBase, team) {
190
219
  const instance = {
191
220
  can: canImpl,
192
221
  decide: decideImpl,
222
+ canAll: (checks, options) => canAllWith(canImpl, checks, options),
223
+ decideAll: (checks, options) => decideAllWith(decideImpl, checks, options),
193
224
  decideEach(permission, rows, options) {
194
225
  return Object.freeze(rows.map((row) => decideImpl(permission, row, options)));
195
226
  },
227
+ async decideIds(permission, ids, options) {
228
+ const { data, ...decide } = options;
229
+ const invalid = () => deniedFor(permission, "validation");
230
+ let loaded;
231
+ try {
232
+ loaded = await data(ids);
233
+ } catch {
234
+ return Object.freeze(ids.map(invalid));
235
+ }
236
+ const resource = getResource(policy.permissions, permission.resource);
237
+ const scopes = scopeList(policy.scopes);
238
+ const root = scopes[0]?.name;
239
+ const rowOf = (id) => {
240
+ if (loaded instanceof Map) return loaded.get(id);
241
+ return isReadonlyArray(loaded) ? loaded.find((row) => isRecord(row) && resource !== void 0 && row[resource.id] === id) : void 0;
242
+ };
243
+ const tenantField = root === void 0 ? void 0 : scopeField(resource, root, scopes);
244
+ const results = [];
245
+ for (const id of ids) {
246
+ const row = rowOf(id);
247
+ if (row === void 0 || row === null) {
248
+ results.push(invalid());
249
+ continue;
250
+ }
251
+ const tenant = tenantField !== void 0 && isRecord(row) ? row[tenantField] : void 0;
252
+ const target = typeof tenant === "string" && tenant !== "" ? instance.tenant(tenant) : instance;
253
+ results.push(target.decide(permission, row, {
254
+ ...decide,
255
+ trusted: true
256
+ }));
257
+ }
258
+ return Object.freeze(results);
259
+ },
196
260
  decideFor(principalId, permission, row) {
197
261
  return decideForTarget(subject, envBase.principals, envBase.targets, principalId, permission, row);
198
262
  },
@@ -356,11 +420,13 @@ function buildInstance(policy, subject, envBase, team) {
356
420
  ...envBase,
357
421
  relationCache
358
422
  }, team);
423
+ const activeTenant = resolveActiveTenant(subject.principal, id, scopeList(policy.scopes));
359
424
  return buildInstance(policy, freezeDeep(compact({
360
425
  ...subject,
361
426
  principal: compact({
362
427
  ...subject.principal,
363
- tenant: resolveActiveTenant(subject.principal, id, scopeList(policy.scopes))
428
+ tenant: activeTenant,
429
+ unheldTenant: activeTenant === void 0 ? id : void 0
364
430
  })
365
431
  })), {
366
432
  ...envBase,
@@ -448,6 +514,30 @@ function buildInstance(policy, subject, envBase, team) {
448
514
  //#endregion
449
515
  //#region src/core/oauth-scopes.ts
450
516
  /**
517
+ * Every OAuth scope a token may carry to the permission keys it reaches: each
518
+ * permission's own scope, the scopes of the keys it was renamed from, and each
519
+ * coarse `oauthScopes` scope. Scopes and keys are sorted by code point. A key
520
+ * outside `permissions` is dropped, so a stale `oauthScopes` entry grants
521
+ * nothing. better-supabase's `delegation.scopes` and the SQL helpers'
522
+ * `rls.tokenScopes` ceiling both read this map.
523
+ */
524
+ function delegatedScopeMap(permissions, oauthScopes = []) {
525
+ const delegated = /* @__PURE__ */ new Map();
526
+ const add = (scope, key) => {
527
+ const keys = delegated.get(scope) ?? /* @__PURE__ */ new Set();
528
+ keys.add(key);
529
+ delegated.set(scope, keys);
530
+ };
531
+ const known = /* @__PURE__ */ new Set();
532
+ for (const permission of permissions) {
533
+ known.add(permission.key);
534
+ add(permission.scope, permission.key);
535
+ for (const former of permission.renamedFrom ?? []) add(keyToScope(former), permission.key);
536
+ }
537
+ for (const entry of oauthScopes) for (const key of entry.permissions) if (known.has(key)) add(entry.scope, key);
538
+ return Object.fromEntries([...delegated.keys()].toSorted(byCodePoint).map((scope) => [scope, [...delegated.get(scope) ?? []].toSorted(byCodePoint)]));
539
+ }
540
+ /**
451
541
  * `delegation` with every coarse OAuth scope the policy declares in
452
542
  * `oauthScopes` followed by the scopes of the permissions it covers, so the
453
543
  * delegation checks downstream match them. The token's scopes stay first and
@@ -464,11 +554,17 @@ function expandOAuthScopes(policy, delegation) {
464
554
  scopes: [...out]
465
555
  };
466
556
  }
467
- /** The coarse scopes the policy declares that cover `permission`, in declaration order. */
557
+ /**
558
+ * The coarse scopes the policy declares that cover `permission`, in declaration
559
+ * order.
560
+ */
468
561
  function coarseScopesFor(policy, permission) {
469
562
  return (policy.oauthScopes ?? []).filter((entry) => entry.permissions.includes(permission.key)).map((entry) => entry.scope);
470
563
  }
471
- /** Every token scope that reaches `permission`: its own, any it was renamed from, and the coarse scopes covering it. */
564
+ /**
565
+ * Every token scope that reaches `permission`: its own, any it was renamed
566
+ * from, and the coarse scopes covering it.
567
+ */
472
568
  function scopesReaching(policy, permission) {
473
569
  return [
474
570
  permission.scope,
@@ -477,9 +573,9 @@ function scopesReaching(policy, permission) {
477
573
  ];
478
574
  }
479
575
  /**
480
- * The scope an `insufficient_scope` challenge names for `permission`: the
481
- * first coarse scope that covers it, which the authorization server issues,
482
- * else the permission's own scope.
576
+ * The scope an `insufficient_scope` challenge names for `permission`: the first
577
+ * coarse scope that covers it, which the authorization server issues, else the
578
+ * permission's own scope.
483
579
  */
484
580
  function challengeScope(policy, permission) {
485
581
  return coarseScopesFor(policy, permission)[0] ?? permission.scope;
@@ -491,8 +587,8 @@ function hasScope(granted, scopes) {
491
587
  //#endregion
492
588
  //#region src/core/resolve-subject.ts
493
589
  /**
494
- * The tenant a user API key holds its owner to (`Credential.tenant`): only
495
- * the memberships inside it count, and no global role.
590
+ * The tenant a user API key holds its owner to (`Credential.tenant`): only the
591
+ * memberships inside it count, and no global role.
496
592
  */
497
593
  function heldTenantOf(principal) {
498
594
  const credential = principal["credential"];
@@ -546,16 +642,22 @@ function assemblePrincipal(policy, user, options, auth) {
546
642
  }
547
643
  };
548
644
  let stale;
645
+ let roles;
549
646
  if (principal !== null && source !== void 0 && !fromClaims) {
550
647
  live = true;
551
648
  memberships = read(source, principal);
552
649
  } else if (principal?.memberships !== void 0 && fromClaims && source.onStale === "reread" && source.version !== void 0) {
553
- const reread = rereadStale(source, principal, principal.memberships, () => read(source, principal), auth);
650
+ const reread = rereadStale(source, principal, principal.memberships, () => read(source, principal), auth, source.globalRolesFor === void 0 ? void 0 : () => source.globalRolesFor?.(compact({
651
+ id: principal.id,
652
+ kind: principal.kind
653
+ })) ?? []);
554
654
  memberships = reread.memberships;
555
655
  stale = reread.stale;
656
+ roles = reread.roles;
556
657
  }
557
658
  return compact({
558
659
  principal,
660
+ roles,
559
661
  context: contextResult,
560
662
  actor,
561
663
  delegation: expandOAuthScopes(policy, delegation),
@@ -574,7 +676,7 @@ function versionQuery(principal) {
574
676
  memberships: principal.memberships
575
677
  });
576
678
  }
577
- function rereadStale(source, principal, claims, read, auth) {
679
+ function rereadStale(source, principal, claims, read, auth, readRoles) {
578
680
  const claimed = principal.authzVersion;
579
681
  const judge = (current) => typeof claimed === "number" && current !== void 0 && claimed >= current ? "fresh" : "reread";
580
682
  const unknown = () => {
@@ -592,14 +694,39 @@ function rereadStale(source, principal, claims, read, auth) {
592
694
  } catch {
593
695
  freshness = unknown();
594
696
  }
595
- if (isThenable(freshness)) return {
596
- memberships: freshness.then((found) => found === "reread" ? read() : claims),
597
- stale: freshness.then((found) => found === "unknown")
697
+ const failed = () => {
698
+ auth.push({
699
+ reason: "source-threw",
700
+ source: "memberships",
701
+ ...sourceName(source)
702
+ });
703
+ return [];
598
704
  };
599
- return {
600
- memberships: freshness === "reread" ? read() : claims,
601
- stale: freshness === "unknown"
705
+ const rolesOf = (found) => {
706
+ if (found !== "reread" || readRoles === void 0) return;
707
+ try {
708
+ const roles = readRoles();
709
+ return isThenable(roles) ? Promise.resolve(roles).catch(failed) : roles;
710
+ } catch {
711
+ return failed();
712
+ }
602
713
  };
714
+ if (isThenable(freshness)) {
715
+ const settled = freshness.then((found) => ({
716
+ found,
717
+ roles: rolesOf(found)
718
+ }));
719
+ return {
720
+ memberships: settled.then(({ found }) => found === "reread" ? read() : claims),
721
+ stale: settled.then(({ found }) => found === "unknown"),
722
+ roles: settled.then(({ roles }) => roles)
723
+ };
724
+ }
725
+ return compact({
726
+ memberships: freshness === "reread" ? read() : claims,
727
+ stale: freshness === "unknown",
728
+ roles: rolesOf(freshness)
729
+ });
603
730
  }
604
731
  function finishSubject(policy, assembled, context, input, options, extra) {
605
732
  if (assembled.principal === null) return freezeCopy(compact({
@@ -617,12 +744,14 @@ function finishSubject(policy, assembled, context, input, options, extra) {
617
744
  const roles = held === void 0 ? kinds.roles : [];
618
745
  const memberships = held === void 0 ? kinds.memberships : outsideHeld(held, options) ? [] : kinds.memberships.filter((membership) => tenantOf(membership, scopes) === held);
619
746
  const plans = contact ? [] : [.../* @__PURE__ */ new Set([...assembled.principal.plans ?? [], ...extra.plans])];
747
+ const activeTenant = contact ? void 0 : activeTenantOf(policy, assembled, memberships, options);
620
748
  const withMemberships = freezeCopy(compact({
621
749
  ...assembled.principal,
622
750
  roles,
623
751
  memberships,
624
752
  plans: plans.length > 0 ? plans : contact ? void 0 : assembled.principal.plans,
625
- tenant: contact ? void 0 : activeTenantOf(policy, assembled, memberships, options)
753
+ tenant: activeTenant,
754
+ unheldTenant: activeTenant === void 0 ? options.tenant : void 0
626
755
  }));
627
756
  return freezeCopy(compact({
628
757
  principal: withMemberships,
@@ -635,7 +764,10 @@ function finishSubject(policy, assembled, context, input, options, extra) {
635
764
  liveSession: assembled.liveSession
636
765
  }));
637
766
  }
638
- /** Runs the policy's membership schema over each `x`; an invalid one is dropped and reported, never the membership. */
767
+ /**
768
+ * Runs the policy's membership schema over each `x`; an invalid one is dropped
769
+ * and reported, never the membership.
770
+ */
639
771
  function checkMembershipX(memberships, schema, auth) {
640
772
  if (schema === void 0) return memberships;
641
773
  let dropped = false;
@@ -760,7 +892,17 @@ function withRequestContext(request, resolved) {
760
892
  };
761
893
  }
762
894
  function resolveSubject(policy, user, options, auth) {
763
- const assembled = assemblePrincipal(policy, user, options, auth);
895
+ const first = assemblePrincipal(policy, user, options, auth);
896
+ const apply = (roles) => resolveAssembled(policy, roles === void 0 || first.principal === null ? first : {
897
+ ...first,
898
+ principal: {
899
+ ...first.principal,
900
+ roles
901
+ }
902
+ }, options, auth);
903
+ return isThenable(first.roles) ? Promise.resolve(first.roles).then(apply) : apply(first.roles);
904
+ }
905
+ function resolveAssembled(policy, assembled, options, auth) {
764
906
  const memberships = settle(assembled.memberships, [], () => {
765
907
  auth.push({
766
908
  reason: "source-threw",
@@ -803,35 +945,42 @@ function instantiate(codePolicy, subject, options, auth) {
803
945
  const customRoles = customRolesFor(roleSource, tenants, auth, subject.principal === null ? void 0 : subject.principal.roles ?? [], (tenant) => heldRoleNamesIn(subject.principal, scopes, tenant));
804
946
  const assignable = assignableNamesFor(roleSource, tenants, auth);
805
947
  const approvals = options.approvalPolicies?.load(policy, tenants, auth);
806
- const build = (roles, names, approvalPolicies) => buildInstance(policy, subject, compact({
807
- customRoles: roles,
808
- sink: options.sink,
809
- limits: options.limits,
810
- limitCache: /* @__PURE__ */ new Map(),
811
- simulated: false,
812
- roleSource,
813
- assignable: names,
814
- queuedAuth: auth,
815
- queuedErrors: errors,
816
- relations: options.relations,
817
- approvalPolicies,
818
- memberships: options.memberships === void 0 ? void 0 : asMembershipSource(options.memberships),
819
- principals: options.principals,
820
- settings: options.settings,
821
- targets: (principal, tenant) => getPermDock(codePolicy, {
822
- principal,
823
- context: {}
824
- }, compact({
825
- tenant,
826
- memberships: options.memberships,
827
- customRoles: options.customRoles,
828
- entitlements: options.entitlements,
948
+ const build = (roles, names, approvalPolicies) => {
949
+ for (const entry of unknownLevelsFor(policy, roles)) auth.push({
950
+ reason: "schema",
951
+ source: "customRoles",
952
+ cause: `unknown-level: ${entry.role} grants ${entry.permission} at '${entry.level}', which its resource does not declare`
953
+ });
954
+ return buildInstance(policy, subject, compact({
955
+ customRoles: roles,
956
+ sink: options.sink,
829
957
  limits: options.limits,
830
- policies: options.policies,
958
+ limitCache: /* @__PURE__ */ new Map(),
959
+ simulated: false,
960
+ roleSource,
961
+ assignable: names,
962
+ queuedAuth: auth,
963
+ queuedErrors: errors,
831
964
  relations: options.relations,
832
- approvalPolicies: options.approvalPolicies
833
- }))
834
- }));
965
+ approvalPolicies,
966
+ memberships: options.memberships === void 0 ? void 0 : asMembershipSource(options.memberships),
967
+ principals: options.principals,
968
+ settings: options.settings,
969
+ targets: (principal, tenant) => getPermDock(codePolicy, {
970
+ principal,
971
+ context: {}
972
+ }, compact({
973
+ tenant,
974
+ memberships: options.memberships,
975
+ customRoles: options.customRoles,
976
+ entitlements: options.entitlements,
977
+ limits: options.limits,
978
+ policies: options.policies,
979
+ relations: options.relations,
980
+ approvalPolicies: options.approvalPolicies
981
+ }))
982
+ }));
983
+ };
835
984
  if (isThenable(customRoles) || isThenable(assignable) || isThenable(approvals)) return Promise.all([
836
985
  customRoles,
837
986
  assignable,
@@ -849,8 +998,8 @@ function create(policy, user, given) {
849
998
  /**
850
999
  * The instance for `user`, built synchronously. Every input must answer
851
1000
  * synchronously: the subject mapper, `memberships`, `customRoles`,
852
- * `entitlements`, `approvalPolicies` and the freshness check. One that
853
- * answers with a Promise throws here; use `getPermDock` for those.
1001
+ * `entitlements`, `approvalPolicies` and the freshness check. One that answers
1002
+ * with a Promise throws here; use `getPermDock` for those.
854
1003
  */
855
1004
  function getPermDockSync(policy, user, options = {}) {
856
1005
  const created = create(policy, user, options);
@@ -860,9 +1009,12 @@ function getPermDockSync(policy, user, options = {}) {
860
1009
  }
861
1010
  return created;
862
1011
  }
863
- /** The instance for `user`: waits for every source, then builds it. `getPermDockSync` is the synchronous twin. */
1012
+ /**
1013
+ * The instance for `user`: waits for every source, then builds it.
1014
+ * `getPermDockSync` is the synchronous twin.
1015
+ */
864
1016
  function getPermDock(policy, user, options = {}) {
865
1017
  return Promise.resolve().then(() => create(policy, user, options));
866
1018
  }
867
1019
  //#endregion
868
- export { hasScope as a, withApp as c, challengeScope as i, getPermDockSync as n, scopesReaching as o, resolveSubject as r, APP as s, getPermDock as t };
1020
+ export { delegatedScopeMap as a, APP as c, challengeScope as i, withApp as l, getPermDockSync as n, hasScope as o, resolveSubject as r, scopesReaching as s, getPermDock as t };
@@ -1,8 +1,8 @@
1
1
  import { n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-DXSHAMIa.js";
4
- import { r as parseAppData, t as assertAppData } from "./app-data-MuyzVqX8.js";
5
- import { f as normaliseRelation, h as restrictedStopsOf, i as assertIncludes, n as RESOURCE_NAME, r as assertGraphTargets, t as LEVEL_NAME } from "./resource-relations-D_jw0BFx.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-CUvURzHp.js";
4
+ import { r as parseAppData, t as assertAppData } from "./app-data-UNNm07jV.js";
5
+ import { f as normaliseRelation, h as restrictedStopsOf, i as assertIncludes, n as RESOURCE_NAME, r as assertGraphTargets, t as LEVEL_NAME } from "./resource-relations-8-pCScBO.js";
6
6
  //#region src/core/brands.ts
7
7
  const RESOURCE_BRAND = Symbol.for("permdock.resource");
8
8
  const TREE_REGISTRY = Symbol.for("permdock.registry");
@@ -91,7 +91,10 @@ function formerKeys(permission) {
91
91
  const value = Reflect.get(permission, LEAF_FORMER);
92
92
  return isReadonlyArray(value) ? value.filter((item) => typeof item === "string") : [];
93
93
  }
94
- /** The OAuth scope strings `permission` used to have: each former key with `.` as `:`. */
94
+ /**
95
+ * The OAuth scope strings `permission` used to have: each former key with `.`
96
+ * as `:`.
97
+ */
95
98
  function formerScopes(permission) {
96
99
  return formerKeys(permission).map(keyToScope);
97
100
  }
@@ -183,6 +186,9 @@ function materialiseResource(init, path, registry, leaves, build) {
183
186
  levels[levelName] = freezeDeep({ ...condition });
184
187
  }
185
188
  if (Object.keys(levels).length > 0 && instanceSet.size === 0) throw new Error(`PermDock: resource '${name}' declares levels but no instance actions`);
189
+ const ordered = init.options.orderedLevels;
190
+ if (ordered !== void 0 && ordered !== true) throw new Error(`PermDock: orderedLevels on '${name}' must be true when set`);
191
+ if (ordered === true && Object.keys(levels).length < 2) throw new Error(`PermDock: resource '${name}' sets orderedLevels with fewer than two levels`);
186
192
  const meta = resourceMetaFor(name, init.options.meta, build.x?.resource);
187
193
  const resourceNode = Object.freeze({
188
194
  ...meta === void 0 ? {} : { meta },
@@ -199,7 +205,8 @@ function materialiseResource(init, path, registry, leaves, build) {
199
205
  disclosure,
200
206
  instanceActions: instanceSet,
201
207
  collectionActions: collectionSet,
202
- levels: Object.freeze(levels)
208
+ levels: Object.freeze(levels),
209
+ ...ordered === true ? { orderedLevels: true } : {}
203
210
  });
204
211
  assertIncludes(resourceNode);
205
212
  registry.set(name, resourceNode);
@@ -211,7 +218,10 @@ function materialiseResource(init, path, registry, leaves, build) {
211
218
  });
212
219
  return freezeDeep(node);
213
220
  }
214
- /** The resource a `definePermissions` resource node was built from, read from the node itself. */
221
+ /**
222
+ * The resource a `definePermissions` resource node was built from, read from
223
+ * the node itself.
224
+ */
215
225
  function resourceOfNode(node) {
216
226
  if (!Object.hasOwn(node, NODE_RESOURCE)) return;
217
227
  const value = Reflect.get(node, NODE_RESOURCE);
@@ -261,7 +271,10 @@ function getResource(tree, name) {
261
271
  return getRegistry(tree).get(name);
262
272
  }
263
273
  const RENAMED_KEY = /^\S+$/u;
264
- /** Current key to its former keys, from the `renamed` option; targets are checked once leaves exist. */
274
+ /**
275
+ * Current key to its former keys, from the `renamed` option; targets are
276
+ * checked once leaves exist.
277
+ */
265
278
  function formerByKey(renamed) {
266
279
  const former = /* @__PURE__ */ new Map();
267
280
  if (renamed === void 0) return former;
@@ -274,8 +287,8 @@ function formerByKey(renamed) {
274
287
  return former;
275
288
  }
276
289
  /**
277
- * Every current key is unique, every former key names exactly one leaf, and
278
- * no former key is also a current key, so a string resolves to one leaf.
290
+ * Every current key is unique, every former key names exactly one leaf, and no
291
+ * former key is also a current key, so a string resolves to one leaf.
279
292
  */
280
293
  function assertKeys(leaves, former) {
281
294
  const current = /* @__PURE__ */ new Set();
@@ -382,4 +395,4 @@ function renamedKeys(tree) {
382
395
  return map;
383
396
  }
384
397
  //#endregion
385
- export { resource as _, getResource as a, listPermissions as c, attachRegistry as d, resourceOfNode as f, formerScopes as g, formerKeys as h, getRegistry as i, mergePermissions as l, annotationsFor as m, findPermission as n, isPermission as o, walk as p, formerByKey as r, isRegistryTree as s, assertKeys as t, renamedKeys as u };
398
+ export { keyToScope as _, getResource as a, listPermissions as c, attachRegistry as d, resourceOfNode as f, formerScopes as g, formerKeys as h, getRegistry as i, mergePermissions as l, annotationsFor as m, findPermission as n, isPermission as o, walk as p, formerByKey as r, isRegistryTree as s, assertKeys as t, renamedKeys as u, resource as v };