permdock 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,24 +1,28 @@
1
1
  "use client";
2
- import { 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-BybMRY7A.js";
6
- import { n as isThenable } from "../thenable-yD7SabqG.js";
7
- import { h as secondsAt, m as rfc3339 } from "../time-DkWjdL98.js";
8
- import { a as normalizeMemberships, d as scopeList, m as tenantOf$1, o as resolveScope } from "../scopes-CUPSjo9q.js";
9
- import { o as flattenGrantee } from "../grantee-hxrUsbpM.js";
10
- import { d as resolveActiveTenant } from "../tenancy-DN2QAx9z.js";
11
- import { i as bindConditionRefs, n as parseSnapshot } from "../snapshot-B7DkYg6g.js";
12
- import { r as heldRoleNames, t as emptySnapshot } from "../from-snapshot-CTCMsFZk.js";
13
- import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-CVSs6J9I.js";
14
- import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
15
- import { n as storeOf, r as isJws, t as adapterStore } from "../store-options-u0ycEe8s.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-BlF0F6wL.js";
2
+ import { r as isRecord, t as compact } from "../compact-CAf557ZB.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({
@@ -216,33 +330,232 @@ function localSnapshot(options) {
216
330
  });
217
331
  }
218
332
  //#endregion
333
+ //#region src/react-native/powersync-rows.ts
334
+ function isColumns(roles) {
335
+ return Array.isArray(roles);
336
+ }
337
+ function quoted(name) {
338
+ return `"${name.replaceAll("\"", "\"\"")}"`;
339
+ }
340
+ /**
341
+ * The synced tables `rows` names, each read whole: the subject streams sync
342
+ * only the user's own rows.
343
+ */
344
+ function rowTables(rows) {
345
+ const tables = /* @__PURE__ */ new Set();
346
+ const column = (item) => {
347
+ if ("through" in item) tables.add(item.through.table);
348
+ };
349
+ for (const source of rows.memberships) {
350
+ tables.add(source.table);
351
+ column(source.user);
352
+ if (isColumns(source.roles)) for (const item of source.roles) column(item);
353
+ }
354
+ if (rows.roles !== void 0) {
355
+ tables.add(rows.roles.table);
356
+ for (const item of rows.roles.roles) column(item);
357
+ }
358
+ if (rows.customRoles !== void 0) {
359
+ tables.add(rows.customRoles.permissions);
360
+ tables.add(rows.customRoles.includes);
361
+ }
362
+ return [...tables];
363
+ }
364
+ function rowQuery(table) {
365
+ return `SELECT * FROM ${quoted(table)}`;
366
+ }
367
+ function text(value) {
368
+ if (typeof value === "string") return value === "" ? void 0 : value;
369
+ return typeof value === "number" || typeof value === "bigint" ? String(value) : void 0;
370
+ }
371
+ function isSet(row, column) {
372
+ const value = column === void 0 ? void 0 : row[column];
373
+ return value !== void 0 && value !== null;
374
+ }
375
+ function rowsOf(tables, table) {
376
+ return (tables[table] ?? []).filter(isRecord);
377
+ }
378
+ /**
379
+ * The value a column holds, read through its referenced table or map;
380
+ * `undefined` for none.
381
+ */
382
+ function columnValue(row, column, tables) {
383
+ const raw = text(row[column.column]);
384
+ if (raw === void 0) return;
385
+ if ("through" in column) {
386
+ const { through } = column;
387
+ const target = rowsOf(tables, through.table).find((item) => text(item[through.id]) === raw);
388
+ return target === void 0 ? void 0 : text(target[through.column]);
389
+ }
390
+ if ("map" in column) return Object.hasOwn(column.map, raw) ? column.map[raw] ?? void 0 : void 0;
391
+ return raw;
392
+ }
393
+ function membershipsOf(source, tables, user) {
394
+ const byInstance = /* @__PURE__ */ new Map();
395
+ for (const row of rowsOf(tables, source.table)) {
396
+ if (columnValue(row, source.user, tables) !== user || isSet(row, source.expiresAt) || isSet(row, source.disabledAt)) continue;
397
+ const scope = "value" in source.scope ? source.scope.value : text(row[source.scope.column]);
398
+ const id = text(row[source.id]);
399
+ const via = source.via === void 0 ? void 0 : "value" in source.via ? source.via.value : text(row[source.via.column]);
400
+ const roles = isColumns(source.roles) ? source.roles.flatMap((column) => {
401
+ const key = columnValue(row, column, tables);
402
+ return key === void 0 ? [] : [key];
403
+ }) : source.roles.value;
404
+ if (scope === void 0 || id === void 0 || roles.length === 0) continue;
405
+ const key = JSON.stringify([
406
+ scope,
407
+ id,
408
+ via ?? null
409
+ ]);
410
+ const entry = byInstance.get(key) ?? {
411
+ scope,
412
+ id,
413
+ via,
414
+ roles: /* @__PURE__ */ new Set()
415
+ };
416
+ for (const role of roles) entry.roles.add(role);
417
+ byInstance.set(key, entry);
418
+ }
419
+ return [...byInstance.values()].map((entry) => compact({
420
+ scope: entry.scope,
421
+ id: entry.id,
422
+ roles: [...entry.roles].toSorted(),
423
+ via: entry.via
424
+ }));
425
+ }
426
+ function roleKeyOf(row) {
427
+ const name = text(row["role"]);
428
+ const scope = text(row["scope"]);
429
+ return name === void 0 || scope === void 0 ? void 0 : {
430
+ tenant: text(row["tenant_id"]),
431
+ scope,
432
+ id: text(row["scope_id"]),
433
+ name
434
+ };
435
+ }
436
+ function customRoleOf({ key, grants, includes }) {
437
+ const body = {
438
+ name: key.name,
439
+ grants,
440
+ includes
441
+ };
442
+ if (key.scope === "global") return {
443
+ ...body,
444
+ scope: "global"
445
+ };
446
+ if (key.tenant === void 0) return {
447
+ ...body,
448
+ shared: true,
449
+ scope: key.scope
450
+ };
451
+ return compact({
452
+ ...body,
453
+ tenant: key.tenant,
454
+ scope: key.scope,
455
+ id: key.id
456
+ });
457
+ }
458
+ /**
459
+ * Custom roles from the custom-role rows: a tenant role, a shared role (no
460
+ * tenant) or a global role.
461
+ */
462
+ function customRolesOf(permissions, includes) {
463
+ const roles = /* @__PURE__ */ new Map();
464
+ const entry = (key) => {
465
+ const id = JSON.stringify([
466
+ key.tenant ?? null,
467
+ key.scope,
468
+ key.id ?? null,
469
+ key.name
470
+ ]);
471
+ const found = roles.get(id) ?? {
472
+ key,
473
+ grants: [],
474
+ includes: []
475
+ };
476
+ roles.set(id, found);
477
+ return found;
478
+ };
479
+ for (const row of permissions) {
480
+ const key = roleKeyOf(row);
481
+ const permission = text(row["permission"]);
482
+ const effect = row["effect"] === "deny" ? "deny" : "allow";
483
+ const level = text(row["level"]);
484
+ if (key !== void 0 && permission !== void 0) entry(key).grants.push(compact({
485
+ permission,
486
+ effect,
487
+ level
488
+ }));
489
+ }
490
+ for (const row of includes) {
491
+ const key = roleKeyOf(row);
492
+ const include = text(row["include_role"]);
493
+ if (key !== void 0 && include !== void 0) entry(key).includes.push(include);
494
+ }
495
+ return [...roles.values()].map(customRoleOf);
496
+ }
497
+ /**
498
+ * The user's memberships, global roles and custom roles from the rows of the
499
+ * tables `rows` names.
500
+ */
501
+ function readRows(rows, tables, principal) {
502
+ const { id: user, tenant, attributes } = principal;
503
+ const memberships = rows.memberships.flatMap((source) => membershipsOf(source, tables, user));
504
+ const global = rows.roles;
505
+ const roles = global === void 0 ? [] : rowsOf(tables, global.table).flatMap((row) => text(row[global.user]) === user ? global.roles.flatMap((column) => {
506
+ const key = columnValue(row, column, tables);
507
+ return key === void 0 ? [] : [key];
508
+ }) : []);
509
+ const custom = rows.customRoles;
510
+ return {
511
+ principal: {
512
+ id: user,
513
+ roles: [...new Set(roles)].toSorted(),
514
+ memberships,
515
+ ...tenant === void 0 ? {} : { tenant },
516
+ ...attributes === void 0 ? {} : { attributes }
517
+ },
518
+ ...custom === void 0 ? {} : { customRoles: customRolesOf(rowsOf(tables, custom.permissions), rowsOf(tables, custom.includes)) }
519
+ };
520
+ }
521
+ //#endregion
219
522
  //#region src/react-native/powersync.ts
523
+ function planOf(options) {
524
+ if (!("user" in options)) return options;
525
+ const { rows } = options.manifest;
526
+ if (rows === void 0) throw new TypeError("PermDock: powerSyncSource needs queries and read, or a manifest with rows (run permdock powersync generate with powersync.manifest)");
527
+ const principal = compact({
528
+ id: options.user,
529
+ tenant: options.tenant,
530
+ attributes: options.attributes
531
+ });
532
+ return {
533
+ queries: Object.fromEntries(rowTables(rows).map((table) => [table, { sql: rowQuery(table) }])),
534
+ read: (tables) => readRows(rows, tables, principal)
535
+ };
536
+ }
220
537
  /**
221
538
  * A `localSnapshot` source over a PowerSync database: `get` runs every query
222
- * with `db.getAll`, and a `db.watch` per query reports changes. A watch
223
- * result with unchanged content re-renders nothing (`connectSource`). The source
224
- * takes the database as an argument; `permdock/react-native` never imports
225
- * `@powersync/*`.
539
+ * with `db.getAll`, and a `db.watch` per query reports changes. Without
540
+ * `queries` and `read`, it reads the tables `manifest.rows` names: the
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/*`.
226
545
  */
227
546
  function powerSyncSource(db, options) {
228
- const names = Object.keys(options.queries);
547
+ const plan = planOf(options);
229
548
  return localSnapshot({
230
549
  manifest: options.manifest,
231
550
  read: async () => {
232
- const results = await Promise.all(names.map(async (name) => {
233
- const query = options.queries[name];
551
+ const results = await Promise.all(Object.entries(plan.queries).map(async ([name, query]) => {
234
552
  return [name, await db.getAll(query.sql, [...query.parameters ?? []])];
235
553
  }));
236
- const rows = {};
237
- for (const [name, list] of results) rows[name] = list;
238
- return options.read(rows);
554
+ return plan.read(Object.fromEntries(results));
239
555
  },
240
556
  subscribe: (listener) => {
241
557
  const controller = new AbortController();
242
- for (const name of names) {
243
- const query = options.queries[name];
244
- db.watch(query.sql, [...query.parameters ?? []], { onResult: listener }, { signal: controller.signal });
245
- }
558
+ for (const query of Object.values(plan.queries)) db.watch(query.sql, [...query.parameters ?? []], { onResult: listener }, { signal: controller.signal });
246
559
  return () => {
247
560
  controller.abort();
248
561
  };
@@ -337,7 +650,10 @@ function guardStorage(storage) {
337
650
  fail
338
651
  };
339
652
  }
340
- /** `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
+ */
341
657
  function readStoredSync(storage, subjectId, signed) {
342
658
  if (subjectId === null) return NOTHING;
343
659
  const raw = storage.read(SNAPSHOT_KEY);
@@ -374,8 +690,8 @@ function contentKey(snapshot) {
374
690
  });
375
691
  }
376
692
  /**
377
- * Whether a source read changes nothing: same content as the snapshot the
378
- * 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.
379
695
  */
380
696
  function unchanged(store, next) {
381
697
  if (typeof next === "string" || store.get().status() === "stale") return false;
@@ -387,9 +703,9 @@ function unchanged(store, next) {
387
703
  }
388
704
  /**
389
705
  * Hydrates `store` from `source` now, on every change it reports and on each
390
- * return to the foreground. Only the latest read applies; a read with
391
- * unchanged content re-renders nothing, and a failed read keeps the current
392
- * 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.
393
709
  */
394
710
  function connectSource(store, source, subscribeForeground) {
395
711
  let active = true;
@@ -397,8 +713,8 @@ function connectSource(store, source, subscribeForeground) {
397
713
  const pull = () => {
398
714
  seq += 1;
399
715
  const mine = seq;
400
- Promise.resolve().then(() => source.get()).then((next) => {
401
- 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);
402
718
  }, () => void 0);
403
719
  };
404
720
  pull();
@@ -454,7 +770,8 @@ function nativeStore(options) {
454
770
  passCache: true,
455
771
  onSnapshot: options.onSnapshot,
456
772
  onClear: options.onClear,
457
- approvalInterval: options.approvalInterval
773
+ approvalInterval: options.approvalInterval,
774
+ refreshOn: options.refreshOn
458
775
  }), snapshot, {
459
776
  server: false,
460
777
  stale: revalidates && (fromStorage !== void 0 || waiting),
@@ -508,6 +825,7 @@ function PermDockProvider(props) {
508
825
  onSnapshot: live.onSnapshot,
509
826
  onClear: live.onClear,
510
827
  approvalInterval: props.approvalInterval,
828
+ refreshOn: props.refreshOn,
511
829
  previous: shown.current ?? void 0
512
830
  })), [
513
831
  props.storage,
@@ -549,9 +867,9 @@ function PermDockProvider(props) {
549
867
  const refresh = () => {
550
868
  if (inFlight || !online) return;
551
869
  inFlight = true;
552
- store.get().refresh().catch(() => void 0).finally(() => {
870
+ store.get().refresh().finally(() => {
553
871
  inFlight = false;
554
- });
872
+ }).catch(() => void 0);
555
873
  };
556
874
  const startTimer = () => {
557
875
  if (typeof mode === "number" && timer === void 0) timer = setInterval(refresh, mode * 1e3);
@@ -605,7 +923,10 @@ function PermDockProvider(props) {
605
923
  }
606
924
  //#endregion
607
925
  //#region src/react-native/storage-adapters.ts
608
- /** 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
+ */
609
930
  const SECURE_STORE_CHUNK_BYTES = 2048;
610
931
  const INDEX_PREFIX = "permdock-chunks:";
611
932
  function utf8Length(char) {
@@ -640,9 +961,9 @@ function chunkKey(key, index) {
640
961
  return `${key}.${index}`;
641
962
  }
642
963
  /**
643
- * A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks
644
- * of at most 2048 bytes under `<key>.<n>`; `<key>` holds the chunk count and
645
- * 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.
646
967
  */
647
968
  function secureStoreStorage(store, options) {
648
969
  const removeChunks = async (key, from, to) => {
@@ -675,7 +996,10 @@ function secureStoreStorage(store, options) {
675
996
  }
676
997
  };
677
998
  }
678
- /** 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
+ */
679
1003
  function mmkvStorage(mmkv) {
680
1004
  return {
681
1005
  getItem: (key) => mmkv.getString(key) ?? null,
@@ -691,8 +1015,8 @@ function mmkvStorage(mmkv) {
691
1015
  //#endregion
692
1016
  //#region src/react-native/subscriptions.ts
693
1017
  /**
694
- * `subscribeForeground` over `AppState`: `active` returns to the foreground
695
- * 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
696
1020
  * neither.
697
1021
  */
698
1022
  function appStateForeground(appState) {
@@ -706,11 +1030,14 @@ function appStateForeground(appState) {
706
1030
  };
707
1031
  };
708
1032
  }
709
- /** `subscribeOnline` over NetInfo. An unknown (`null`) connection counts as online. */
1033
+ /**
1034
+ * `subscribeOnline` over NetInfo. An unknown (`null`) connection counts as
1035
+ * online.
1036
+ */
710
1037
  function netInfoOnline(netInfo) {
711
1038
  return (listener) => netInfo.addEventListener((state) => {
712
1039
  listener(state.isConnected !== false && state.isInternetReachable !== false);
713
1040
  });
714
1041
  }
715
1042
  //#endregion
716
- 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 };