permdock 0.7.0 → 0.9.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 (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-BcudBQOF.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
  35. package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
  45. package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
  46. package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
  52. package/dist/catalog-D3oS2GH3.js +1 -0
  53. package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
  54. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  55. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  56. package/dist/catalog-operations-DeHTrJSV.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
  77. package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
  78. package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
  79. package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
  80. package/dist/collect-D-eroIfV.js +1 -0
  81. package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
  98. package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
  99. package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
  100. package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
  101. package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
  102. package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
  103. package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-DHldhVUv.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
  127. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  128. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
  130. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
  131. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-BFfzZSLH.js +58 -0
  150. package/dist/gen-BtfFWGbz.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  164. package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
  169. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  170. package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
  171. package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
  172. package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
  173. package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
  174. package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
  175. package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +34 -34
  178. package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
  179. package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +79 -26
  212. package/dist/next/index.js +121 -10
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
  223. package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
  224. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
  232. package/dist/output-files-BHOIlrfD.js +1 -0
  233. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  234. package/dist/ownership-DA5YdYTm.js +1059 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
  245. package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
  262. package/dist/powersync-B701tvhE.js +1 -0
  263. package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
  264. package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-D8x73IGm.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
  282. package/dist/pull-C3EEGzSw.js +1 -0
  283. package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
  284. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
  285. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-ConCSj1y.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
  306. package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
  310. package/dist/run-Ck22anC2.js +1 -0
  311. package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
  333. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  334. package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
  335. package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  344. package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  351. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-DZJvxFIZ.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
  357. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
  368. package/dist/supabase-hook-C0FyEACZ.js +1 -0
  369. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
  370. package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +225 -141
  394. package/dist/testing/index.js +352 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
  407. package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
  408. package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
  409. package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
  410. package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
  411. package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
  412. package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
  413. package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
  414. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  415. package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
  416. package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
  417. package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
  418. package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
  419. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  420. package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
  421. package/dist/types-tQB2CEnY.d.ts +262 -0
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-0hjZPIRX.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
  441. package/dist/watch-ClLuO2TL.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
  452. package/package.json +8 -8
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +16 -23
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -1,24 +1,28 @@
1
1
  "use client";
2
2
  import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
3
- import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
4
- import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
5
- import { t as describe } from "../describe-DZlnEtLy.js";
6
- import { n as isThenable } from "../thenable-yD7SabqG.js";
7
- import { h as secondsAt, m as rfc3339 } from "../time-DkWjdL98.js";
8
- import { f as scopeList, h as tenantOf$1, o as normalizeMemberships, s as resolveScope } from "../scopes-BHsc-wp-.js";
9
- import { o as flattenGrantee } from "../grantee-BrRANrpT.js";
10
- import { d as resolveActiveTenant } from "../tenancy-CmeBQ6Nv.js";
11
- import { i as bindConditionRefs, n as parseSnapshot } from "../snapshot-CbGmYiJx.js";
12
- import { r as heldRoleNames, t as emptySnapshot } from "../from-snapshot-Bz469dIh.js";
13
- import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-T1Q8X3A2.js";
14
- import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
15
- import { n as storeOf, r as isJws, t as adapterStore } from "../store-options-B_poyYvg.js";
16
- import { a as PermDockUiContext, i as PermDockStoreContext, n as useKeyed, t as useLiveOptions } from "../live-options-BaAFCIiu.js";
17
- import { a as useDescribe, c as useMemberships, d as usePermissions, f as useRoles, i as useAssignableRoles, l as usePermDock, m as useTenant, n as useApproval, o as useFilter, p as useSubject, r as useAssignablePermissions, s as useGate, t as Protected, u as usePermission } from "../protected-DXE3cQYg.js";
3
+ import { n as freezeDeep } from "../freeze-jjan0lCv.js";
4
+ import { r as requiredPlans } from "../problem-details-CLDgX1KV.js";
5
+ import { n as describe } from "../describe-Bb4hGK5d.js";
6
+ import { n as isThenable } from "../thenable-BNSM1U2R.js";
7
+ import { h as secondsAt, m as rfc3339 } from "../time-nR1JesoH.js";
8
+ import { f as scopeList, h as tenantOf$1, o as normalizeMemberships, s as resolveScope } from "../scopes-0Up_UA2t.js";
9
+ import { o as flattenGrantee } from "../grantee-Dke-9rd1.js";
10
+ import { t as byCodePoint } from "../compare-DTfyUunF.js";
11
+ import { d as resolveActiveTenant, r as isMembershipExpired } from "../tenancy-5d1zVBvK.js";
12
+ import { a as bindConditionRefs, n as parseSnapshot } from "../snapshot-CXlzi69u.js";
13
+ import { r as heldRoleNames, t as emptySnapshot } from "../from-snapshot-DCakWRsr.js";
14
+ import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-DEiCF4ah.js";
15
+ import { r as approvalHeaders } from "../protected-action-DUYqb-Ma.js";
16
+ import { i as isJws, n as storeOf, r as eventSourceRefresh, t as adapterStore } from "../store-options-Dil3lraY.js";
17
+ import { a as PermDockUiContext, i as PermDockStoreContext, n as useKeyed, t as useLiveOptions } from "../live-options-BBIT68le.js";
18
+ import { a as useAssignableRoles, c as useGate, d as usePermission, f as usePermissions, h as useTenant, i as useAssignablePermissions, l as useMemberships, m as useSubject, n as Protected, o as useDescribe, p as useRoles, r as useApproval, s as useFilter, t as useProtectedAction, u as usePermDock } from "../protected-action-QEA8arRB.js";
18
19
  import { useEffect, useMemo, useRef } from "react";
19
20
  import { jsx } from "react/jsx-runtime";
20
21
  //#region src/react-native/guards.ts
21
- /** `true` once the provider has a snapshot to answer from: storage was read or a seed was given. Hide the splash screen on it. */
22
+ /**
23
+ * `true` once the provider has a snapshot to answer from: storage was read or a
24
+ * seed was given. Hide the splash screen on it.
25
+ */
22
26
  function useSnapshotReady() {
23
27
  return usePermDock().status() !== "pending";
24
28
  }
@@ -41,6 +45,71 @@ function usePermissionGuard(permission, data) {
41
45
  ]);
42
46
  }
43
47
  //#endregion
48
+ //#region src/react-native/local-assignable.ts
49
+ /**
50
+ * The levels a holder of `level` on `key` may hand out; `undefined` when the
51
+ * table does not know the entry.
52
+ */
53
+ function entryReach(table, key, level) {
54
+ const row = Object.hasOwn(table.permissions, key) ? table.permissions[key] : void 0;
55
+ if (row === void 0) return;
56
+ if (level === void 0) return row.reach;
57
+ return row.levelReach !== void 0 && Object.hasOwn(row.levelReach, level) ? row.levelReach[level] : void 0;
58
+ }
59
+ /** The levels a holder of `role`'s included grants on `key` may hand out. */
60
+ function includeReach(table, role, key) {
61
+ const byKey = table.includeReach !== void 0 && Object.hasOwn(table.includeReach, role) ? table.includeReach[role] : void 0;
62
+ return byKey !== void 0 && Object.hasOwn(byKey, key) ? byKey[key] : void 0;
63
+ }
64
+ function listOf(record, key) {
65
+ return record !== void 0 && Object.hasOwn(record, key) ? record[key] ?? [] : [];
66
+ }
67
+ /**
68
+ * What the subject may hand out in `tenant`, by the rules of `assignableIn`:
69
+ * declared assignable roles and the tenant's custom roles, intersected with the
70
+ * permissions and levels the subject holds there. Holding a `meta.manageRoles`
71
+ * role, or an unconditioned allow of a `meta.manageRoles` permission, lifts the
72
+ * intersection.
73
+ */
74
+ function localAssignableFor(input) {
75
+ const { rules, custom, tenant, heldNames } = input;
76
+ const allows = input.held.filter((item) => item.grant.effect === "allow");
77
+ const heldKeys = new Set(allows.map((item) => item.grant.permission));
78
+ const unconditioned = (effect, key) => input.held.some(({ grant }) => grant.effect === effect && grant.permission === key && grant.where === void 0 && grant.check === void 0 && grant.approval === void 0 && grant.validity === void 0);
79
+ const manage = heldNames.some((name) => rules.manage.roles.includes(name)) || rules.manage.permissions.some((key) => unconditioned("allow", key) && !unconditioned("deny", key));
80
+ const held = new Set(heldNames);
81
+ const listed = rules.assigns === void 0 ? void 0 : new Set(heldNames.flatMap((name) => listOf(rules.assigns, name)));
82
+ const roles = rules.roles.filter((item) => {
83
+ if (manage) return true;
84
+ if (listed !== void 0) return listed.has(item.name);
85
+ return held.has(item.name) || item.allows.length > 0 && item.allows.every((key) => heldKeys.has(key));
86
+ });
87
+ const permissions = rules.permissions.filter((leaf) => manage || heldKeys.has(leaf.key));
88
+ const offered = (key) => {
89
+ const names = listOf(rules.levels, key);
90
+ if (manage) return names;
91
+ const reached = new Set(allows.filter((item) => item.grant.permission === key).flatMap((item) => item.reach ?? []));
92
+ return names.filter((name) => reached.has(name));
93
+ };
94
+ const levels = {};
95
+ for (const leaf of permissions) if (listOf(rules.levels, leaf.key).length > 0) levels[leaf.key] = offered(leaf.key);
96
+ const assignsAt = manage ? void 0 : new Set(roles.map((item) => item.on));
97
+ const mayHandOut = (scope, allow) => {
98
+ const table = Object.hasOwn(custom, scope) ? custom[scope] : void 0;
99
+ if (table === void 0 || !Object.hasOwn(table.permissions, allow.key) || !(manage || heldKeys.has(allow.key))) return false;
100
+ if (listOf(rules.levels, allow.key).length === 0) return true;
101
+ const can = offered(allow.key);
102
+ return (allow.reach ?? []).every((name) => can.includes(name));
103
+ };
104
+ const customNames = input.customRoles.filter((role) => (assignsAt === void 0 || assignsAt.has(role.scope)) && role.allows.length > 0 && role.allows.every((allow) => mayHandOut(role.scope, allow))).toSorted((a, b) => Number(!a.shared) - Number(!b.shared) || byCodePoint(a.name, b.name)).map((role) => role.name);
105
+ return compact({
106
+ tenant,
107
+ roles: [...roles.map((item) => item.name), ...new Set(customNames)],
108
+ permissions,
109
+ levels: Object.keys(levels).length === 0 ? void 0 : levels
110
+ });
111
+ }
112
+ //#endregion
44
113
  //#region src/react-native/local.ts
45
114
  const CARRIED = /* @__PURE__ */ new Set([
46
115
  "id",
@@ -75,8 +144,8 @@ function renamed(grant, name) {
75
144
  };
76
145
  }
77
146
  /**
78
- * The grants a custom role holds, from the entries the server resolved one
79
- * by one: an entry the table does not know grants nothing.
147
+ * The grants a custom role holds, from the entries the server resolved one by
148
+ * one: an entry the table does not know grants nothing.
80
149
  */
81
150
  function customGrants(table, role) {
82
151
  const entries = Array.isArray(role.grants) ? role.grants : [];
@@ -102,22 +171,38 @@ function customGrants(table, role) {
102
171
  });
103
172
  }
104
173
  const out = [];
174
+ const reached = [];
105
175
  const included = /* @__PURE__ */ new Set();
106
176
  const names = Array.isArray(role.includes) ? role.includes : [];
107
177
  for (const name of names) {
108
178
  const list = typeof name === "string" && Object.hasOwn(table.includes, name) ? table.includes[name] : void 0;
109
179
  for (const grant of list ?? []) {
110
180
  if (grant.effect === "deny" || !removed.has(grant.permission)) out.push(grant);
111
- if (grant.effect === "allow") included.add(grant.permission);
181
+ if (grant.effect === "allow") {
182
+ included.add(grant.permission);
183
+ if (!removed.has(grant.permission) && typeof name === "string") reached.push({
184
+ key: grant.permission,
185
+ reach: includeReach(table, name, grant.permission)
186
+ });
187
+ }
112
188
  }
113
189
  }
114
190
  for (const { key, level } of allows) {
115
191
  if (removed.has(key) || included.has(key)) continue;
116
192
  const row = Object.hasOwn(table.permissions, key) ? table.permissions[key] : void 0;
117
193
  const grants = typeof level === "string" ? row?.levels?.[level] : row?.all;
118
- out.push(...grants ?? []);
194
+ if (grants !== void 0 && grants.length > 0) {
195
+ out.push(...grants);
196
+ reached.push({
197
+ key,
198
+ reach: entryReach(table, key, typeof level === "string" ? level : void 0)
199
+ });
200
+ }
119
201
  }
120
- return out.map((grant) => renamed(grant, role.name));
202
+ return {
203
+ grants: out.map((grant) => renamed(grant, role.name)),
204
+ allows: reached
205
+ };
121
206
  }
122
207
  function isList(value) {
123
208
  return Array.isArray(value);
@@ -158,39 +243,60 @@ function buildLocalSnapshot(manifest, data, at) {
158
243
  const declared = new Set(manifest.roles);
159
244
  const globalRoles = new Set(input?.roles ?? []);
160
245
  const grants = [];
161
- const attach = (grant, membership) => {
162
- grants.push(bindGrant(membership === void 0 ? grant : {
246
+ const held = [];
247
+ const attach = (grant, membership, reach) => {
248
+ const bound = bindGrant(membership === void 0 ? grant : {
163
249
  ...grant,
164
250
  membership
165
- }, subject));
251
+ }, subject);
252
+ grants.push(bound);
253
+ if (membership === void 0 || tenantOf$1(membership, scopes) === tenant && !isMembershipExpired(membership, now)) held.push({
254
+ grant: bound,
255
+ reach
256
+ });
166
257
  };
167
- for (const grant of manifest.grants) {
258
+ const grantReach = manifest.assignable?.grants;
259
+ for (const [index, grant] of manifest.grants.entries()) {
260
+ const reach = grantReach !== void 0 && Object.hasOwn(grantReach, String(index)) ? grantReach[String(index)] : void 0;
168
261
  const roleItems = flattenGrantee(grant.to).filter((item) => item.kind === "role");
169
262
  if (roleItems.length > 0 && principal === null) continue;
170
263
  if (!roleItems.every((item) => item.scope !== "global" || declared.has(item.role) && globalRoles.has(item.role))) continue;
171
264
  const scoped = roleItems.filter((item) => item.scope !== "global");
172
265
  if (scoped.length === 0) {
173
- attach(grant);
266
+ attach(grant, void 0, reach);
174
267
  continue;
175
268
  }
176
- for (const membership of memberships) if (scoped.every((item) => declared.has(item.role) && membership.roles.includes(item.role) && (typeof item.scope === "string" ? membership.scope === item.scope : membership.on !== void 0))) attach(grant, membership);
269
+ for (const membership of memberships) if (scoped.every((item) => declared.has(item.role) && membership.roles.includes(item.role) && (typeof item.scope === "string" ? membership.scope === item.scope : membership.on !== void 0))) attach(grant, membership, reach);
177
270
  }
178
271
  const formed = (data.customRoles ?? []).filter((role) => role !== null && typeof role === "object" && typeof role.name === "string" && !declared.has(role.name));
179
272
  const sharedNames = new Set(formed.filter((role) => role.shared === true).map((role) => role.name));
180
273
  const custom = formed.filter((role) => role.shared === true || role.scope === "global" || !sharedNames.has(role.name));
274
+ const tenantCustom = [];
275
+ const tenantRoles = /* @__PURE__ */ new Set();
181
276
  for (const role of custom) {
182
277
  const scope = customScope(role, scopes);
183
278
  const table = scope !== void 0 && Object.hasOwn(manifest.custom, scope) ? manifest.custom[scope] : void 0;
184
279
  if (scope === void 0 || table === void 0) continue;
185
- const resolved = customGrants(table, role);
280
+ const { grants: resolved, allows } = customGrants(table, role);
281
+ const reachOf = (permission) => [...new Set(allows.filter((allow) => allow.key === permission).flatMap((allow) => allow.reach ?? []))];
186
282
  if (scope === "global") {
187
- if (role.tenant === void 0 && globalRoles.has(role.name)) for (const grant of resolved) attach(grant);
283
+ if (role.tenant === void 0 && globalRoles.has(role.name)) for (const grant of resolved) attach(grant, void 0, reachOf(grant.permission));
188
284
  continue;
189
285
  }
286
+ if (tenant !== void 0 && (role.shared === true ? role.tenant === void 0 : role.tenant === tenant) && !tenantRoles.has(role.name)) {
287
+ tenantRoles.add(role.name);
288
+ tenantCustom.push({
289
+ name: role.name,
290
+ scope,
291
+ shared: role.shared === true,
292
+ allows
293
+ });
294
+ }
190
295
  const id = role.team ?? role.id;
191
- for (const membership of memberships) if (membership.scope === scope && (role.shared === true ? role.tenant === void 0 && id === void 0 && tenantOf$1(membership, scopes) !== void 0 : typeof role.tenant === "string" && tenantOf$1(membership, scopes) === role.tenant) && (id === void 0 || membership.id === id) && membership.roles.includes(role.name)) for (const grant of resolved) attach(grant, membership);
296
+ for (const membership of memberships) if (membership.scope === scope && (role.shared === true ? role.tenant === void 0 && id === void 0 && tenantOf$1(membership, scopes) !== void 0 : typeof role.tenant === "string" && tenantOf$1(membership, scopes) === role.tenant) && (id === void 0 || membership.id === id) && membership.roles.includes(role.name)) for (const grant of resolved) attach(grant, membership, reachOf(grant.permission));
192
297
  }
193
298
  const roles = subject.principal === null ? [] : heldRoleNames(subject, tenant, scopes, { rank: manifest.rank ?? [] }, now);
299
+ const rules = manifest.assignable;
194
300
  return freezeDeep(compact({
195
301
  v: 1,
196
302
  issuedAt: rfc3339(now),
@@ -201,13 +307,21 @@ function buildLocalSnapshot(manifest, data, at) {
201
307
  roles,
202
308
  grants,
203
309
  tenants: tenant === void 0 ? [] : [tenant],
310
+ assignable: tenant === void 0 || rules === void 0 ? void 0 : [localAssignableFor({
311
+ rules,
312
+ custom: manifest.custom,
313
+ tenant,
314
+ heldNames: roles,
315
+ held,
316
+ customRoles: tenantCustom
317
+ })],
204
318
  scopes: manifest.scopes,
205
319
  vocabulary: manifest.vocabulary
206
320
  }));
207
321
  }
208
322
  /**
209
- * A snapshot source over the device's own membership rows (SQLite, a
210
- * PowerSync or Electric replica): offline, the UI guards answer from them.
323
+ * A snapshot source over the device's own membership rows (SQLite, a PowerSync
324
+ * or Electric replica): offline, the UI guards answer from them.
211
325
  */
212
326
  function localSnapshot(options) {
213
327
  return compact({
@@ -223,7 +337,10 @@ function isColumns(roles) {
223
337
  function quoted(name) {
224
338
  return `"${name.replaceAll("\"", "\"\"")}"`;
225
339
  }
226
- /** The synced tables `rows` names, each read whole: the subject streams sync only the user's own rows. */
340
+ /**
341
+ * The synced tables `rows` names, each read whole: the subject streams sync
342
+ * only the user's own rows.
343
+ */
227
344
  function rowTables(rows) {
228
345
  const tables = /* @__PURE__ */ new Set();
229
346
  const column = (item) => {
@@ -258,7 +375,10 @@ function isSet(row, column) {
258
375
  function rowsOf(tables, table) {
259
376
  return (tables[table] ?? []).filter(isRecord);
260
377
  }
261
- /** The value a column holds, read through its referenced table or map; `undefined` for none. */
378
+ /**
379
+ * The value a column holds, read through its referenced table or map;
380
+ * `undefined` for none.
381
+ */
262
382
  function columnValue(row, column, tables) {
263
383
  const raw = text(row[column.column]);
264
384
  if (raw === void 0) return;
@@ -335,7 +455,10 @@ function customRoleOf({ key, grants, includes }) {
335
455
  id: key.id
336
456
  });
337
457
  }
338
- /** Custom roles from the custom-role rows: a tenant role, a shared role (no tenant) or a global role. */
458
+ /**
459
+ * Custom roles from the custom-role rows: a tenant role, a shared role (no
460
+ * tenant) or a global role.
461
+ */
339
462
  function customRolesOf(permissions, includes) {
340
463
  const roles = /* @__PURE__ */ new Map();
341
464
  const entry = (key) => {
@@ -371,7 +494,10 @@ function customRolesOf(permissions, includes) {
371
494
  }
372
495
  return [...roles.values()].map(customRoleOf);
373
496
  }
374
- /** The user's memberships, global roles and custom roles from the rows of the tables `rows` names. */
497
+ /**
498
+ * The user's memberships, global roles and custom roles from the rows of the
499
+ * tables `rows` names.
500
+ */
375
501
  function readRows(rows, tables, principal) {
376
502
  const { id: user, tenant, attributes } = principal;
377
503
  const memberships = rows.memberships.flatMap((source) => membershipsOf(source, tables, user));
@@ -412,11 +538,10 @@ function planOf(options) {
412
538
  * A `localSnapshot` source over a PowerSync database: `get` runs every query
413
539
  * with `db.getAll`, and a `db.watch` per query reports changes. Without
414
540
  * `queries` and `read`, it reads the tables `manifest.rows` names: the
415
- * memberships of every source with null roles dropped, the global roles and
416
- * the custom roles with their levels. A watch
417
- * result with unchanged content re-renders nothing (`connectSource`). The source
418
- * takes the database as an argument; `permdock/react-native` never imports
419
- * `@powersync/*`.
541
+ * memberships of every source with null roles dropped, the global roles and the
542
+ * custom roles with their levels. A watch result with unchanged content
543
+ * re-renders nothing (`connectSource`). The source takes the database as an
544
+ * argument; `permdock/react-native` never imports `@powersync/*`.
420
545
  */
421
546
  function powerSyncSource(db, options) {
422
547
  const plan = planOf(options);
@@ -525,7 +650,10 @@ function guardStorage(storage) {
525
650
  fail
526
651
  };
527
652
  }
528
- /** `undefined` when the storage answers asynchronously; any failure reads as empty. */
653
+ /**
654
+ * `undefined` when the storage answers asynchronously; any failure reads as
655
+ * empty.
656
+ */
529
657
  function readStoredSync(storage, subjectId, signed) {
530
658
  if (subjectId === null) return NOTHING;
531
659
  const raw = storage.read(SNAPSHOT_KEY);
@@ -562,8 +690,8 @@ function contentKey(snapshot) {
562
690
  });
563
691
  }
564
692
  /**
565
- * Whether a source read changes nothing: same content as the snapshot the
566
- * store holds, and the store already settled on it.
693
+ * Whether a source read changes nothing: same content as the snapshot the store
694
+ * holds, and the store already settled on it.
567
695
  */
568
696
  function unchanged(store, next) {
569
697
  if (typeof next === "string" || store.get().status() === "stale") return false;
@@ -575,9 +703,9 @@ function unchanged(store, next) {
575
703
  }
576
704
  /**
577
705
  * Hydrates `store` from `source` now, on every change it reports and on each
578
- * return to the foreground. Only the latest read applies; a read with
579
- * unchanged content re-renders nothing, and a failed read keeps the current
580
- * snapshot. Returns the unsubscribe.
706
+ * return to the foreground. Only the latest read applies; a read with unchanged
707
+ * content re-renders nothing, and a failed read keeps the current snapshot.
708
+ * Returns the unsubscribe.
581
709
  */
582
710
  function connectSource(store, source, subscribeForeground) {
583
711
  let active = true;
@@ -585,8 +713,8 @@ function connectSource(store, source, subscribeForeground) {
585
713
  const pull = () => {
586
714
  seq += 1;
587
715
  const mine = seq;
588
- Promise.resolve().then(() => source.get()).then((next) => {
589
- if (active && mine === seq && !unchanged(store, next)) store.replace(next);
716
+ Promise.resolve().then(() => source.get()).then((snapshot) => {
717
+ if (active && mine === seq && !unchanged(store, snapshot)) store.replace(snapshot);
590
718
  }, () => void 0);
591
719
  };
592
720
  pull();
@@ -642,7 +770,8 @@ function nativeStore(options) {
642
770
  passCache: true,
643
771
  onSnapshot: options.onSnapshot,
644
772
  onClear: options.onClear,
645
- approvalInterval: options.approvalInterval
773
+ approvalInterval: options.approvalInterval,
774
+ refreshOn: options.refreshOn
646
775
  }), snapshot, {
647
776
  server: false,
648
777
  stale: revalidates && (fromStorage !== void 0 || waiting),
@@ -696,6 +825,7 @@ function PermDockProvider(props) {
696
825
  onSnapshot: live.onSnapshot,
697
826
  onClear: live.onClear,
698
827
  approvalInterval: props.approvalInterval,
828
+ refreshOn: props.refreshOn,
699
829
  previous: shown.current ?? void 0
700
830
  })), [
701
831
  props.storage,
@@ -737,9 +867,9 @@ function PermDockProvider(props) {
737
867
  const refresh = () => {
738
868
  if (inFlight || !online) return;
739
869
  inFlight = true;
740
- store.get().refresh().catch(() => void 0).finally(() => {
870
+ store.get().refresh().finally(() => {
741
871
  inFlight = false;
742
- });
872
+ }).catch(() => void 0);
743
873
  };
744
874
  const startTimer = () => {
745
875
  if (typeof mode === "number" && timer === void 0) timer = setInterval(refresh, mode * 1e3);
@@ -793,7 +923,10 @@ function PermDockProvider(props) {
793
923
  }
794
924
  //#endregion
795
925
  //#region src/react-native/storage-adapters.ts
796
- /** SecureStore warns above 2048 bytes and may refuse larger values on some devices. */
926
+ /**
927
+ * SecureStore warns above 2048 bytes and may refuse larger values on some
928
+ * devices.
929
+ */
797
930
  const SECURE_STORE_CHUNK_BYTES = 2048;
798
931
  const INDEX_PREFIX = "permdock-chunks:";
799
932
  function utf8Length(char) {
@@ -828,9 +961,9 @@ function chunkKey(key, index) {
828
961
  return `${key}.${index}`;
829
962
  }
830
963
  /**
831
- * A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks
832
- * of at most 2048 bytes under `<key>.<n>`; `<key>` holds the chunk count and
833
- * is written last, so an interrupted write reads as absent.
964
+ * A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks of
965
+ * at most 2048 bytes under `<key>.<n>`; `<key>` holds the chunk count and is
966
+ * written last, so an interrupted write reads as absent.
834
967
  */
835
968
  function secureStoreStorage(store, options) {
836
969
  const removeChunks = async (key, from, to) => {
@@ -863,7 +996,10 @@ function secureStoreStorage(store, options) {
863
996
  }
864
997
  };
865
998
  }
866
- /** A synchronous `SnapshotStorage` over a `react-native-mmkv` instance: the first frame already has the snapshot. */
999
+ /**
1000
+ * A synchronous `SnapshotStorage` over a `react-native-mmkv` instance: the
1001
+ * first frame already has the snapshot.
1002
+ */
867
1003
  function mmkvStorage(mmkv) {
868
1004
  return {
869
1005
  getItem: (key) => mmkv.getString(key) ?? null,
@@ -879,8 +1015,8 @@ function mmkvStorage(mmkv) {
879
1015
  //#endregion
880
1016
  //#region src/react-native/subscriptions.ts
881
1017
  /**
882
- * `subscribeForeground` over `AppState`: `active` returns to the foreground
883
- * and `background` leaves it. iOS `inactive` (a system sheet over the app) is
1018
+ * `subscribeForeground` over `AppState`: `active` returns to the foreground and
1019
+ * `background` leaves it. iOS `inactive` (a system sheet over the app) is
884
1020
  * neither.
885
1021
  */
886
1022
  function appStateForeground(appState) {
@@ -894,11 +1030,14 @@ function appStateForeground(appState) {
894
1030
  };
895
1031
  };
896
1032
  }
897
- /** `subscribeOnline` over NetInfo. An unknown (`null`) connection counts as online. */
1033
+ /**
1034
+ * `subscribeOnline` over NetInfo. An unknown (`null`) connection counts as
1035
+ * online.
1036
+ */
898
1037
  function netInfoOnline(netInfo) {
899
1038
  return (listener) => netInfo.addEventListener((state) => {
900
1039
  listener(state.isConnected !== false && state.isInternetReachable !== false);
901
1040
  });
902
1041
  }
903
1042
  //#endregion
904
- export { PermDockProvider, Protected, appStateForeground, approvalHeaders, buildLocalSnapshot, connectSource, describe, localSnapshot, memorySnapshotStorage, mmkvStorage, nativeStore, netInfoOnline, parseLocalSnapshotManifest, powerSyncSource, requiredPlans, secureStoreStorage, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissionGuard, usePermissions, useRoles, useSnapshotReady, useSubject, useTenant };
1043
+ export { PermDockProvider, Protected, appStateForeground, approvalHeaders, buildLocalSnapshot, connectSource, describe, eventSourceRefresh, localSnapshot, memorySnapshotStorage, mmkvStorage, nativeStore, netInfoOnline, parseLocalSnapshotManifest, powerSyncSource, requiredPlans, secureStoreStorage, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissionGuard, usePermissions, useProtectedAction, useRoles, useSnapshotReady, useSubject, useTenant };
@@ -1,5 +1,5 @@
1
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
2
- import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-DXSHAMIa.js";
1
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
2
+ import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-CUvURzHp.js";
3
3
  //#region src/conditions/ast.ts
4
4
  function parentHop(parent) {
5
5
  return typeof parent === "string" ? { field: parent } : parent;
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { r as ownGet } from "./paths-DXSHAMIa.js";
3
- import { n as relationId } from "./relations-BnCWnJGI.js";
2
+ import { r as ownGet } from "./paths-CUvURzHp.js";
3
+ import { n as relationId } from "./relations-BxvRvDHK.js";
4
4
  //#region src/core/relation-walk.ts
5
5
  /** Whether the holder's period covers `now`. */
6
6
  function activeNow(holder, now) {
@@ -53,7 +53,10 @@ function restrictedAbove(condition, row, reader) {
53
53
  if (new Set(ids).size !== ids.length || chain.truncated === true || chain.ancestors.length > above.depth - 1) return "relation-depth";
54
54
  return false;
55
55
  }
56
- /** The instances a graph relation reads: the start, then ancestors until a restricted one or `depth`. */
56
+ /**
57
+ * The instances a graph relation reads: the start, then ancestors until a
58
+ * restricted one or `depth`.
59
+ */
57
60
  function relationWalk(condition, row, reader) {
58
61
  if (!isRecord(row)) return;
59
62
  const first = relationId(ownGet(row, condition.field));
@@ -93,10 +96,10 @@ function relationWalk(condition, row, reader) {
93
96
  };
94
97
  }
95
98
  /**
96
- * Whether the subject holds the relation on the row's instance or an
97
- * ancestor within `depth`. A cycle is `relation-depth`; so is a chain that
98
- * goes on past `depth` with no holder below it. Any read the instance could
99
- * not answer is `relation-unavailable` unless a holder was found elsewhere.
99
+ * Whether the subject holds the relation on the row's instance or an ancestor
100
+ * within `depth`. A cycle is `relation-depth`; so is a chain that goes on past
101
+ * `depth` with no holder below it. Any read the instance could not answer is
102
+ * `relation-unavailable` unless a holder was found elsewhere.
100
103
  */
101
104
  function resolveRelated(condition, row, subject, now, reader, permitted) {
102
105
  if (condition.permission !== void 0) return resolveInherited(condition, condition.permission, row, reader, permitted);
@@ -148,8 +151,8 @@ function groupKey(group) {
148
151
  }
149
152
  /**
150
153
  * Whether the principal holds `at.relation` on one instance, directly or
151
- * through a group whose members hold it. Groups of `at`'s own resource nest
152
- * at most `budget` deep; a group of another resource gets a fresh budget
154
+ * through a group whose members hold it. Groups of `at`'s own resource nest at
155
+ * most `budget` deep; a group of another resource gets a fresh budget
153
156
  * (declarations rule out cycles across resources). A group met twice on one
154
157
  * path, or one past the budget, is `relation-depth`. `explored` holds the
155
158
  * budget each group was walked with across the whole walk: a group already
@@ -1,7 +1,7 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { i as idText } from "./expiry-D4_YKRKD.js";
3
- import { n as isThenable } from "./thenable-yD7SabqG.js";
4
- import { a as expandRelation } from "./resource-relations-D_jw0BFx.js";
2
+ import { i as idText } from "./expiry-6XByK0dm.js";
3
+ import { n as isThenable } from "./thenable-BNSM1U2R.js";
4
+ import { a as expandRelation } from "./resource-relations-8-pCScBO.js";
5
5
  //#region src/core/relations.ts
6
6
  function isInstant(value) {
7
7
  return value === void 0 || typeof value === "number" && Number.isFinite(value);
@@ -1,4 +1,4 @@
1
- import { o as epochSeconds } from "./time-DkWjdL98.js";
1
+ import { o as epochSeconds } from "./time-nR1JesoH.js";
2
2
  //#region src/ssf/replay.ts
3
3
  function memoryReplayStore() {
4
4
  const seen = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- import { l as ReplayStore } from "./types-cTos-H7p.js";
1
+ import { l as ReplayStore } from "./types-DsHGPtkR.js";
2
2
  //#region src/ssf/replay.d.ts
3
3
  declare function memoryReplayStore(): ReplayStore;
4
4
  //#endregion
@@ -1,10 +1,10 @@
1
- import { t as assertAppData } from "./app-data-MuyzVqX8.js";
2
- import { n as wrapPermDock } from "./wrap-CiSc_KCq.js";
3
- import { t as buildInstance } from "./build-instance-DxE7czo9.js";
1
+ import { t as assertAppData } from "./app-data-UNNm07jV.js";
2
+ import { n as wrapPermDock } from "./wrap-B2wziJI_.js";
3
+ import { t as buildInstance } from "./build-instance-BWXqwQYU.js";
4
4
  //#region src/core/request-context.ts
5
5
  /**
6
- * Errors an adapter raises around one instance (a `context` hook that threw,
7
- * an `onDenied` that failed), fed to the instance's `on('error')` handlers and
6
+ * Errors an adapter raises around one instance (a `context` hook that threw, an
7
+ * `onDenied` that failed), fed to the instance's `on('error')` handlers and
8
8
  * replayed to later ones, as core replays its own.
9
9
  */
10
10
  function deliver(handler, error) {
@@ -33,9 +33,9 @@ function errorChannel(queued) {
33
33
  };
34
34
  }
35
35
  /**
36
- * `buildInstance` with an error channel: the instance's `on('error')`
37
- * replays `errors` raised while resolving the request, and `report` adds
38
- * more. Kept beside `errorChannel`, so adapters without one do not bundle it.
36
+ * `buildInstance` with an error channel: the instance's `on('error')` replays
37
+ * `errors` raised while resolving the request, and `report` adds more. Kept
38
+ * beside `errorChannel`, so adapters without one do not bundle it.
39
39
  */
40
40
  async function buildReportingInstance(input) {
41
41
  const channel = errorChannel(input.errors);
@@ -1,5 +1,8 @@
1
1
  //#region src/approvals/request-schema.ts
2
- /** An RFC 3339 instant as `Temporal.Instant` prints it; pg_jsonschema asserts no `format`. */
2
+ /**
3
+ * An RFC 3339 instant as `Temporal.Instant` prints it; pg_jsonschema asserts no
4
+ * `format`.
5
+ */
3
6
  const INSTANT = String.raw`^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$`;
4
7
  const STRINGS = {
5
8
  type: "array",