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,5 +1,5 @@
1
- import { Rt as Instant, tr as JsonWebKeyLike } from "./policy-types-n0uRTsW8.js";
2
- import { l as ReplayStore } from "./types-C791HFu9.js";
1
+ import { Rt as Instant, ar as JsonWebKeyLike } from "./policy-types-CCiDRZBH.js";
2
+ import { l as ReplayStore } from "./types-DjuMBNF9.js";
3
3
  //#region src/server/standard-webhooks.d.ts
4
4
  /** The three Standard Webhooks headers a delivery carries. */
5
5
  type WebhookHeaders = {
@@ -34,7 +34,7 @@ type WebhookMessage = {
34
34
  readonly now?: Instant;
35
35
  };
36
36
  type WebhookSigner = {
37
- sign(message: WebhookMessage): Promise<WebhookHeaders>;
37
+ sign: (message: WebhookMessage) => Promise<WebhookHeaders>;
38
38
  };
39
39
  /** An Ed25519 public JWK set for `v1a`, or the URL that serves one. */
40
40
  type WebhookJwks = {
@@ -70,12 +70,12 @@ type VerifiedWebhookMessage = {
70
70
  };
71
71
  type WebhookVerifier = {
72
72
  /** Never throws; claims the `webhook-id` only after a signature verifies. */
73
- verify(input: WebhookInput): Promise<VerifiedWebhookMessage>;
73
+ verify: (input: WebhookInput) => Promise<VerifiedWebhookMessage>;
74
74
  };
75
75
  /**
76
- * Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_`
77
- * secret, `v1a` Ed25519 with a private JWK. Throws on an invalid key or id,
78
- * because both come from the sender's own configuration.
76
+ * Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_` secret,
77
+ * `v1a` Ed25519 with a private JWK. Throws on an invalid key or id, because
78
+ * both come from the sender's own configuration.
79
79
  */
80
80
  declare function webhookSigner(options: WebhookSignerOptions): WebhookSigner;
81
81
  /**
@@ -1,5 +1,5 @@
1
- import { m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
2
- import { n as readBodyText } from "./body-text-QcXok_SI.js";
1
+ import { m as rfc3339, p as nowSeconds } from "./time-nR1JesoH.js";
2
+ import { n as readBodyText } from "./body-text-DQhcmqdY.js";
3
3
  //#region src/server/standard-webhooks.ts
4
4
  const DEFAULT_TOLERANCE = 300;
5
5
  const JWKS_TTL_SECONDS = 300;
@@ -41,9 +41,9 @@ function validId(id) {
41
41
  return id.length > 0 && id.length <= 256 && !/\s/u.test(id);
42
42
  }
43
43
  /**
44
- * Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_`
45
- * secret, `v1a` Ed25519 with a private JWK. Throws on an invalid key or id,
46
- * because both come from the sender's own configuration.
44
+ * Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_` secret,
45
+ * `v1a` Ed25519 with a private JWK. Throws on an invalid key or id, because
46
+ * both come from the sender's own configuration.
47
47
  */
48
48
  function webhookSigner(options) {
49
49
  if (options.keys.length === 0) throw new TypeError("PermDock: webhookSigner() needs at least one key");
@@ -1,10 +1,10 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { i as flattenApprovers } from "./approvers-CqPOLD-o.js";
4
- import { a as durationOf, i as dateAt } from "./time-DkWjdL98.js";
5
- import { s as rootMembershipId } from "./scopes-CUPSjo9q.js";
6
- import { n as matchGrantee } from "./grantee-match-DbENBHLB.js";
7
- import { a as escalationOpenAt, i as approverRelationKey, o as stageEscalationOpenAt, r as approvalQuorum, s as ApprovalError } from "./types-DqzsnlSA.js";
2
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
3
+ import { i as flattenApprovers } from "./approvers-B4r0N_Uz.js";
4
+ import { a as durationOf, i as dateAt } from "./time-nR1JesoH.js";
5
+ import { c as rootMembershipId } from "./scopes-0Up_UA2t.js";
6
+ import { n as matchGrantee } from "./grantee-match-7RZZvoT_.js";
7
+ import { a as escalationOpenAt, i as approverRelationKey, o as stageEscalationOpenAt, r as approvalQuorum, s as ApprovalError } from "./types-CcUXciSj.js";
8
8
  //#region src/approvals/page.ts
9
9
  const DEFAULT_PAGE_SIZE = 50;
10
10
  const MAX_PAGE_SIZE = 200;
@@ -26,7 +26,10 @@ function compare(a, b) {
26
26
  function encodeApprovalCursor(request) {
27
27
  return JSON.stringify(positionOf(request));
28
28
  }
29
- /** The `(createdAt, token)` position a `next` cursor names, or `null` for one that does not parse. */
29
+ /**
30
+ * The `(createdAt, token)` position a `next` cursor names, or `null` for one
31
+ * that does not parse.
32
+ */
30
33
  function decodeApprovalCursor(cursor) {
31
34
  try {
32
35
  const parsed = JSON.parse(cursor);
@@ -38,8 +41,8 @@ function decodeApprovalCursor(cursor) {
38
41
  /**
39
42
  * Pages already-filtered requests in `(createdAt, token)` order, as the
40
43
  * built-in stores do: `limit` within 1 to 200 (50 when absent), `cursor` from
41
- * the previous page's `next`, and no items for a cursor that does not parse.
42
- * A custom `ApprovalStore` that filters in memory returns it from `list`.
44
+ * the previous page's `next`, and no items for a cursor that does not parse. A
45
+ * custom `ApprovalStore` that filters in memory returns it from `list`.
43
46
  */
44
47
  function pageApprovals(matching, query) {
45
48
  const after = query.cursor === void 0 ? void 0 : decodeApprovalCursor(query.cursor);
@@ -53,7 +56,10 @@ function pageApprovals(matching, query) {
53
56
  next: encodeApprovalCursor(last)
54
57
  } : { items };
55
58
  }
56
- /** Every matching request of `store`, following `next` until the last page (at most 1000 pages of 200). */
59
+ /**
60
+ * Every matching request of `store`, following `next` until the last page (at
61
+ * most 1000 pages of 200).
62
+ */
57
63
  function listAllApprovals(store, filter) {
58
64
  const collect = async (cursor, pages, items) => {
59
65
  const page = await store.list(cursor === void 0 ? {
@@ -70,10 +76,13 @@ function listAllApprovals(store, filter) {
70
76
  return collect(void 0, 0, []);
71
77
  }
72
78
  //#endregion
73
- //#region src/approvals/store.ts
74
- function tenantOf(request) {
75
- return request.subject.principal?.tenant;
76
- }
79
+ //#region src/approvals/tenancy.ts
80
+ /**
81
+ * The tenants a subject acts in for approvals: `principal.tenant` and the
82
+ * instance of every membership at the first scope. A membership at a nested
83
+ * scope (a team, or one with `within`) names no tenant, even when its parent is
84
+ * the request's tenant.
85
+ */
77
86
  function membershipTenants(subject) {
78
87
  const principal = subject.principal;
79
88
  if (principal === null) return [];
@@ -88,6 +97,11 @@ function membershipTenants(subject) {
88
97
  function belongsToTenant(subject, tenant) {
89
98
  return membershipTenants(subject).includes(tenant);
90
99
  }
100
+ //#endregion
101
+ //#region src/approvals/store.ts
102
+ function tenantOf(request) {
103
+ return request.subject.principal?.tenant;
104
+ }
91
105
  function holdsRole(subject, role, tenant) {
92
106
  const principal = subject.principal;
93
107
  if (principal === null) return false;
@@ -164,14 +178,14 @@ function vouchedRule(verdict) {
164
178
  return typeof verdict.vouched === "string" && verdict.vouched !== "" ? verdict.vouched : void 0;
165
179
  }
166
180
  /**
167
- * Refuses `by` as an approver of `request`, or returns the index of the
168
- * stage the approval counts for (`undefined` without `stages`). Eligibility
169
- * is `approvers.by` or, under `stages`, the first incomplete stage
170
- * (`sequential`) or any incomplete stage (`all`); `approvers.escalation.to`
171
- * is eligible too once the request has waited `escalation.after`. A
172
- * principal who already approved is refused, so one person never completes
173
- * two stages. `relations` are the relation approvers `by` holds on the
174
- * request's resource (see `ApprovalVerdict.relations`).
181
+ * Refuses `by` as an approver of `request`, or returns the index of the stage
182
+ * the approval counts for (`undefined` without `stages`). Eligibility is
183
+ * `approvers.by` or, under `stages`, the first incomplete stage (`sequential`)
184
+ * or any incomplete stage (`all`); `approvers.escalation.to` is eligible too
185
+ * once the request has waited `escalation.after`. A principal who already
186
+ * approved is refused, so one person never completes two stages. `relations`
187
+ * are the relation approvers `by` holds on the request's resource (see
188
+ * `ApprovalVerdict.relations`).
175
189
  */
176
190
  function assertApprover(request, by, requireDistinctApprover, at, relations = [], permissions = []) {
177
191
  const now = dateAt(at);
@@ -211,12 +225,12 @@ function isSystemSubject(by) {
211
225
  return by.actor?.kind === "system";
212
226
  }
213
227
  /**
214
- * The request after `verdict`, for a store to persist: a rejection resolves
215
- * it; an approval is appended to `approvals` and resolves it once there are
216
- * `approvers.quorum` (default 1). Throws an `ApprovalError` when the request
217
- * is not pending, has expired or `verdict.by` may not approve it. Stores
218
- * should write the result only when the stored row is still pending with the
219
- * same number of approvals, so two approvers racing both count.
228
+ * The request after `verdict`, for a store to persist: a rejection resolves it;
229
+ * an approval is appended to `approvals` and resolves it once there are
230
+ * `approvers.quorum` (default 1). Throws an `ApprovalError` when the request is
231
+ * not pending, has expired or `verdict.by` may not approve it. Stores should
232
+ * write the result only when the stored row is still pending with the same
233
+ * number of approvals, so two approvers racing both count.
220
234
  */
221
235
  function applyApprovalVerdict(request, verdict, at) {
222
236
  const now = dateAt(at);
@@ -355,4 +369,4 @@ function memoryApprovalStore(options = {}) {
355
369
  };
356
370
  }
357
371
  //#endregion
358
- export { approvalPageSize as a, listAllApprovals as c, memoryApprovalStore as i, pageApprovals as l, assertApprover as n, decodeApprovalCursor as o, matchesApprovers as r, encodeApprovalCursor as s, applyApprovalVerdict as t };
372
+ export { belongsToTenant as a, decodeApprovalCursor as c, pageApprovals as d, memoryApprovalStore as i, encodeApprovalCursor as l, assertApprover as n, membershipTenants as o, matchesApprovers as r, approvalPageSize as s, applyApprovalVerdict as t, listAllApprovals as u };
@@ -1,11 +1,11 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { g as secondsOf } from "./time-DkWjdL98.js";
3
- import { c as rowIdOf } from "./delegation-j6-rc37o.js";
4
- import { c as nowSeconds } from "./tenancy-DN2QAx9z.js";
5
- import { n as payloadDigest } from "./token-BLZcjQgt.js";
6
- import { n as parseSnapshot } from "./snapshot-B7DkYg6g.js";
7
- import { s as snapshotClaim } from "./where-scope-C9vfEphl.js";
8
- import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-CTCMsFZk.js";
2
+ import { g as secondsOf } from "./time-nR1JesoH.js";
3
+ import { c as rowIdOf } from "./delegation-CDB6_keF.js";
4
+ import { c as nowSeconds } from "./tenancy-5d1zVBvK.js";
5
+ import { n as payloadDigest } from "./token-DC9EQiet.js";
6
+ import { n as parseSnapshot } from "./snapshot-CXlzi69u.js";
7
+ import { c as snapshotClaim } from "./where-scope-DlCdCM_8.js";
8
+ import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-DCakWRsr.js";
9
9
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
10
10
  //#region src/client/source.ts
11
11
  /** A compact JWS: three non-empty dot-separated parts. */
@@ -131,7 +131,10 @@ const NO_ENDPOINT = {
131
131
  }],
132
132
  alternatives: []
133
133
  };
134
- /** The row's id under the snapshot's id field, or `undefined` for a row without one. */
134
+ /**
135
+ * The row's id under the snapshot's id field, or `undefined` for a row without
136
+ * one.
137
+ */
135
138
  function rowId(snapshot, permission, data) {
136
139
  const id = rowIdOf(data, snapshot.ids?.[permission.resource]);
137
140
  return id === "*" ? void 0 : id;
@@ -140,7 +143,10 @@ function cacheKey(snapshot, permission, data) {
140
143
  if (data === void 0) return `${permission.key}:*`;
141
144
  return `${permission.key}:${rowId(snapshot, permission, data) ?? `#${payloadDigest(data)}`}`;
142
145
  }
143
- /** Collects the checks the snapshot cannot answer and posts them as one AuthZEN batch per microtask. */
146
+ /**
147
+ * Collects the checks the snapshot cannot answer and posts them as one AuthZEN
148
+ * batch per microtask.
149
+ */
144
150
  function createBatch(options) {
145
151
  const { answers, endpoint } = options;
146
152
  let queued = [];
@@ -230,8 +236,75 @@ function createBatch(options) {
230
236
  };
231
237
  }
232
238
  //#endregion
239
+ //#region src/client/refresh-on.ts
240
+ const DEFAULT_TYPES = ["com.permdock.membership.*", "com.permdock.catalog.*"];
241
+ const REFRESH_DELAY = 250;
242
+ function matches(type, patterns) {
243
+ return patterns.some((pattern) => pattern.endsWith("*") ? type.startsWith(pattern.slice(0, -1)) : type === pattern);
244
+ }
245
+ function eventType(data) {
246
+ if (typeof data !== "string") return;
247
+ try {
248
+ const parsed = JSON.parse(data);
249
+ if (typeof parsed === "object" && parsed !== null && "type" in parsed && typeof parsed.type === "string") return parsed.type;
250
+ } catch {
251
+ return;
252
+ }
253
+ }
254
+ /**
255
+ * A `refreshOn` trigger over Server-Sent Events: each `message` whose data is a
256
+ * structured CloudEvent with a matching `type` refreshes the snapshot. Without
257
+ * a global `EventSource` it never fires.
258
+ */
259
+ function eventSourceRefresh(url, options = {}) {
260
+ const types = options.types ?? DEFAULT_TYPES;
261
+ return (refresh) => {
262
+ if (typeof globalThis.EventSource !== "function") return () => void 0;
263
+ const source = new globalThis.EventSource(url, { withCredentials: options.withCredentials === true });
264
+ source.addEventListener("message", (event) => {
265
+ const type = eventType(event.data);
266
+ if (type !== void 0 && matches(type, types)) refresh();
267
+ });
268
+ return () => {
269
+ source.close();
270
+ };
271
+ };
272
+ }
273
+ /**
274
+ * Runs `triggers` while `start()` holds, folding calls within 250 ms into one
275
+ * `refresh`. `skip()` answering `true` drops a call: after `clear()` or
276
+ * `dispose()` nothing refetches.
277
+ */
278
+ function refreshTriggers(triggers, refresh, skip) {
279
+ let offs = [];
280
+ let timer;
281
+ const fire = () => {
282
+ if (skip() || timer !== void 0) return;
283
+ timer = setTimeout(() => {
284
+ timer = void 0;
285
+ if (!skip()) refresh();
286
+ }, REFRESH_DELAY);
287
+ };
288
+ return {
289
+ start() {
290
+ if (offs.length === 0) offs = triggers.map((trigger) => trigger(fire));
291
+ },
292
+ stop() {
293
+ for (const off of offs) off();
294
+ offs = [];
295
+ if (timer !== void 0) {
296
+ clearTimeout(timer);
297
+ timer = void 0;
298
+ }
299
+ }
300
+ };
301
+ }
302
+ //#endregion
233
303
  //#region src/client/request.ts
234
- /** Milliseconds a decision, refresh or approval request may take; a slower one is an error like a failed request. */
304
+ /**
305
+ * Milliseconds a decision, refresh or approval request may take; a slower one
306
+ * is an error like a failed request.
307
+ */
235
308
  const STORE_TIMEOUT_MS = 1e4;
236
309
  function storeRequest(fetchImpl, headers) {
237
310
  return (url, body) => fetchImpl(url, {
@@ -313,6 +386,7 @@ function createClientStore(options) {
313
386
  let generation = 0;
314
387
  let disposed = false;
315
388
  let staleNext = options.stale === true;
389
+ let cleared = false;
316
390
  let rawJws;
317
391
  const request = storeRequest(fetchImpl, () => typeof options.headers === "function" ? options.headers() : options.headers);
318
392
  const emit = () => {
@@ -364,6 +438,7 @@ function createClientStore(options) {
364
438
  reset();
365
439
  if ((snapshot.subject.principal?.id ?? null) !== (next.subject.principal?.id ?? null)) approvals.forget();
366
440
  snapshot = next;
441
+ cleared = false;
367
442
  instance = fromSnapshot(snapshot, compact({ tenant }));
368
443
  base = "ready";
369
444
  if (staleNext && next.subject.principal !== null) {
@@ -511,12 +586,21 @@ function createClientStore(options) {
511
586
  decision
512
587
  };
513
588
  };
589
+ const triggers = refreshTriggers(server ? [] : options.refreshOn ?? [], () => {
590
+ cached.refresh().catch(() => void 0);
591
+ }, () => disposed || cleared);
514
592
  const subscribe = (listener) => {
515
593
  listeners.add(listener);
516
- if (listeners.size === 1) approvals.resume();
594
+ if (listeners.size === 1) {
595
+ approvals.resume();
596
+ triggers.start();
597
+ }
517
598
  return () => {
518
599
  listeners.delete(listener);
519
- if (listeners.size === 0) approvals.stop();
600
+ if (listeners.size === 0) {
601
+ approvals.stop();
602
+ triggers.stop();
603
+ }
520
604
  };
521
605
  };
522
606
  const wrap = (permdock) => {
@@ -596,6 +680,7 @@ function createClientStore(options) {
596
680
  reset();
597
681
  tenant = options.tenant;
598
682
  snapshot = emptySnapshot();
683
+ cleared = true;
599
684
  instance = fromSnapshot(snapshot, compact({ tenant }));
600
685
  base = "server-only";
601
686
  approvals.forget();
@@ -679,6 +764,7 @@ function createClientStore(options) {
679
764
  generation += 1;
680
765
  batch.clear();
681
766
  approvals.forget();
767
+ triggers.stop();
682
768
  listeners.clear();
683
769
  },
684
770
  requestApproval: approvals.request
@@ -688,7 +774,10 @@ function createClientStore(options) {
688
774
  }
689
775
  //#endregion
690
776
  //#region src/client/store-options.ts
691
- /** One hint per store: the first check `endpoint: false` turns into a `server-only` denial. */
777
+ /**
778
+ * One hint per store: the first check `endpoint: false` turns into a
779
+ * `server-only` denial.
780
+ */
692
781
  function hintOnce() {
693
782
  let shown = false;
694
783
  return (permission) => {
@@ -723,8 +812,9 @@ function adapterStore(options, snapshot, native) {
723
812
  stale: native?.stale,
724
813
  onSnapshot: both(native?.onSnapshot, options.onSnapshot),
725
814
  onClear: both(native?.onClear, options.onClear),
726
- approvalInterval: options.approvalInterval
815
+ approvalInterval: options.approvalInterval,
816
+ refreshOn: options.refreshOn
727
817
  }));
728
818
  }
729
819
  //#endregion
730
- export { isPromiseLike as i, storeOf as n, isJws as r, adapterStore as t };
820
+ export { isPromiseLike as a, isJws as i, storeOf as n, eventSourceRefresh as r, adapterStore as t };
@@ -0,0 +1,59 @@
1
+ import { Ln as Decision, j as PolicyVocabulary, or as Membership } from "./policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "./permission-types-CAY-GU7e.js";
3
+ import { r as Role } from "./vocabulary-DEJ5j4mR.js";
4
+ import { d as UncheckedData, s as RowData } from "./permdock-B6Sf4T_S.js";
5
+ import { r as DescribeOptions, t as DecisionDescription } from "./describe-ByS9LgHK.js";
6
+ import { n as ProtectedAction } from "./action-result-CL-QCITA.js";
7
+ import { a as FilterResult, c as PermissionSet, h as TenantView, l as PermissionState, m as SubjectView, o as GateMode, p as RolesOptions, r as ClientPermDock, s as GateView, t as ApprovalHandle } from "./types-B_d_g7T3.js";
8
+ import { n as ProtectedActionReadable, r as SveltePermDockOptions } from "./types-djVzLlIV.js";
9
+ import { Readable } from "svelte/store";
10
+ //#region src/svelte/stores.d.ts
11
+ declare function setPermDock(options: SveltePermDockOptions): ClientPermDock;
12
+ declare function getPermDock<V extends PolicyVocabulary = PolicyVocabulary>(): ClientPermDock<V>;
13
+ /**
14
+ * `describe` with the provider's `messages`; a call's own `messages` win. Call
15
+ * it during component init.
16
+ */
17
+ declare function getDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
18
+ declare function permission<D>(reference: Permission, data?: () => UncheckedData<D>): Readable<PermissionState>;
19
+ declare function permission<P extends Permission>(reference: P, data?: () => RowData<P>): Readable<PermissionState>;
20
+ /**
21
+ * What a permission-gated control renders, as `useGate` in React: `hidden`,
22
+ * `disabled`, `needsApproval`, `upgrade` and a `reason` in the provider's
23
+ * `messages`. Call it during component initialisation.
24
+ */
25
+ declare function gate<D>(reference: Permission, data?: () => UncheckedData<D>, options?: {
26
+ readonly mode?: GateMode;
27
+ }): Readable<GateView>;
28
+ declare function gate<P extends Permission>(reference: P, data?: () => RowData<P>, options?: {
29
+ readonly mode?: GateMode;
30
+ }): Readable<GateView>;
31
+ declare function permissions(references: () => readonly Permission[], data?: () => unknown): Readable<PermissionSet>;
32
+ declare function filtered<T>(reference: Permission<string, NoInfer<T>, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
33
+ declare function tenant(): Readable<TenantView>;
34
+ declare function memberships(): Readable<readonly Membership[]>;
35
+ declare function roles(options?: () => RolesOptions): Readable<{
36
+ readonly roles: readonly Role[];
37
+ }>;
38
+ declare function assignable(): Readable<readonly Role[]>;
39
+ type AssignableOptions = {
40
+ readonly tenant?: string;
41
+ } | (() => {
42
+ readonly tenant?: string;
43
+ });
44
+ declare function assignablePermissions(options?: AssignableOptions): Readable<readonly Permission[]>;
45
+ declare function subject(): Readable<SubjectView>;
46
+ declare function approval(decision: () => Decision): Readable<ApprovalHandle>;
47
+ /**
48
+ * A `protectAction` server action wired to a control, as `useProtectedAction`
49
+ * in React: a readable store of `gate`, `result`, `pending` and `approval`,
50
+ * with `run` and `retry`. Call it during component initialisation.
51
+ */
52
+ declare function protectedAction<T, D>(action: ProtectedAction<T>, reference: Permission, data?: () => UncheckedData<D>, options?: {
53
+ readonly mode?: GateMode;
54
+ }): ProtectedActionReadable<T>;
55
+ declare function protectedAction<T, P extends Permission>(action: ProtectedAction<T>, reference: P, data?: () => RowData<P>, options?: {
56
+ readonly mode?: GateMode;
57
+ }): ProtectedActionReadable<T>;
58
+ //#endregion
59
+ export { gate as a, memberships as c, protectedAction as d, roles as f, tenant as h, filtered as i, permission as l, subject as m, assignable as n, getDescribe as o, setPermDock as p, assignablePermissions as r, getPermDock as s, approval as t, permissions as u };
@@ -1,6 +1,7 @@
1
- import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, n as describeWith, o as permissionSet, r as filterResult, t as approvalHandle } from "./views-DTIIO-oQ.js";
2
- import { n as getUi, r as providePermDock, t as getStore } from "./context-B_u3_bDJ.js";
3
- import { readable, toStore } from "svelte/store";
1
+ import { n as actionRunner, t as actionApproval } from "./protected-action-DUYqb-Ma.js";
2
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, i as gateView, n as describeWith, o as permissionSet, r as filterResult, t as approvalHandle } from "./views-CD8wuL4Z.js";
3
+ import { n as getUi, r as providePermDock, t as getStore } from "./context-BnIzxTNE.js";
4
+ import { derived, readable, toStore, writable } from "svelte/store";
4
5
  //#region src/svelte/stores.ts
5
6
  function fromStore(store, compute) {
6
7
  return readable(compute(), (set) => {
@@ -23,7 +24,10 @@ function setPermDock(options) {
23
24
  function getPermDock() {
24
25
  return sveltePermDock(getStore());
25
26
  }
26
- /** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
27
+ /**
28
+ * `describe` with the provider's `messages`; a call's own `messages` win. Call
29
+ * it during component init.
30
+ */
27
31
  function getDescribe() {
28
32
  return describeWith(getUi().messages);
29
33
  }
@@ -33,6 +37,16 @@ function permission(reference, data) {
33
37
  function permissionFor(store, reference, data) {
34
38
  return fromStore(store, () => store.permissionState(reference, data?.()));
35
39
  }
40
+ function gate(reference, data, options = {}) {
41
+ return gateFor(getStore(), reference, data, {
42
+ ...options,
43
+ describe: getDescribe()
44
+ });
45
+ }
46
+ function gateFor(store, reference, data, options = {}) {
47
+ const describeDecision = options.describe ?? describeWith(void 0);
48
+ return fromStore(store, () => gateView(store.permissionState(reference, data?.()), (decision) => describeDecision(decision, { permission: reference }), options.mode));
49
+ }
36
50
  function permissions(references, data) {
37
51
  return permissionsFor(getStore(), references, data);
38
52
  }
@@ -87,5 +101,28 @@ function approval(decision) {
87
101
  function approvalFor(store, decision) {
88
102
  return fromStore(store, () => approvalHandle(store, decision()));
89
103
  }
104
+ function protectedAction(action, reference, data, options = {}) {
105
+ return protectedActionFor(getStore(), action, reference, data, {
106
+ ...options,
107
+ describe: getDescribe()
108
+ });
109
+ }
110
+ function protectedActionFor(store, action, reference, data, options = {}) {
111
+ const state = writable({
112
+ result: void 0,
113
+ pending: false
114
+ });
115
+ const runner = actionRunner(() => action, state.set);
116
+ return {
117
+ subscribe: derived([gateFor(store, reference, data, options), state], ([gated, current]) => ({
118
+ gate: gated,
119
+ result: current.result,
120
+ pending: current.pending,
121
+ approval: actionApproval(store, current.result)
122
+ })).subscribe,
123
+ run: runner.run,
124
+ retry: runner.retry
125
+ };
126
+ }
90
127
  //#endregion
91
- export { getDescribe as a, permission as c, setPermDock as d, subject as f, filtered as i, permissions as l, assignable as n, getPermDock as o, tenant as p, assignablePermissions as r, memberships as s, approval as t, roles as u };
128
+ export { gate as a, memberships as c, protectedAction as d, roles as f, tenant as h, filtered as i, permission as l, subject as m, assignable as n, getDescribe as o, setPermDock as p, assignablePermissions as r, getPermDock as s, approval as t, permissions as u };
@@ -1,4 +1,4 @@
1
- import { r as PermDockRevokedError } from "./errors-BKy0EfhN.js";
1
+ import { r as PermDockRevokedError } from "./errors-B6R_lg2a.js";
2
2
  //#region src/server/stream.ts
3
3
  function isAsyncIterable(value) {
4
4
  return value !== null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function";
@@ -35,8 +35,8 @@ async function* guardIterable(source, connection, options) {
35
35
  }
36
36
  }
37
37
  /**
38
- * The connection loader for a stream `protect` already admitted: the first
39
- * read returns the row `protect` loaded, and each revalidation reloads it.
38
+ * The connection loader for a stream `protect` already admitted: the first read
39
+ * returns the row `protect` loaded, and each revalidation reloads it.
40
40
  */
41
41
  function reloadAfter(loaded, load) {
42
42
  let first = true;
@@ -51,8 +51,8 @@ function reloadAfter(loaded, load) {
51
51
  /** WebSocket close code for a policy violation (RFC 6455 section 7.4.1). */
52
52
  const POLICY_VIOLATION = 1008;
53
53
  /**
54
- * The close reason for a problem: its PermDock type URI, or its `detail`
55
- * code for an `about:blank` one. RFC 6455 caps a reason at 123 bytes.
54
+ * The close reason for a problem: its PermDock type URI, or its `detail` code
55
+ * for an `about:blank` one. RFC 6455 caps a reason at 123 bytes.
56
56
  */
57
57
  function closeReason(problem) {
58
58
  return problem.type === "about:blank" ? problem.detail : problem.type;
@@ -1,10 +1,11 @@
1
- import { w as Permission } from "./vocabulary-CN8H_9UF.js";
2
- import { o as ProtectOptions } from "./server-types-CKQiCnON.js";
1
+ import { u as Permission } from "./permission-types-CAY-GU7e.js";
2
+ import { o as ProtectOptions } from "./server-types-CIlpSA2G.js";
3
3
  //#region src/server/stream.d.ts
4
4
  type StreamProtectOptions = ProtectOptions & {
5
5
  /**
6
6
  * For a procedure that returns an async iterable: each outbound item is
7
- * checked against this permission and dropped when the subscriber cannot read it.
7
+ * checked against this permission and dropped when the subscriber cannot read
8
+ * it.
8
9
  */
9
10
  readonly items?: Permission<string, unknown, "instance">;
10
11
  };
@@ -1 +1 @@
1
- export { t as createStyle, n as streamHasColors } from "./style-Uao76wO7.js";
1
+ export { t as createStyle, n as streamHasColors } from "./style-Ds11Hmk4.js";
@@ -7,12 +7,14 @@ function createStyle(color) {
7
7
  paint,
8
8
  errorMark: color ? paint("red", "✖") : "error",
9
9
  warnMark: color ? paint("yellow", "⚠") : "warn",
10
+ infoMark: color ? paint("cyan", "ℹ") : "info",
10
11
  okMark: color ? paint("green", "✔") : "ok"
11
12
  };
12
13
  }
13
14
  /**
14
15
  * Whether a stream takes colour. On a TTY `hasColors()` honours `NO_COLOR`,
15
- * `FORCE_COLOR` and `TERM`; a pipe colours only under a non-zero `FORCE_COLOR`.
16
+ * `FORCE_COLOR` and `TERM`; a pipe colours only under a non-zero
17
+ * `FORCE_COLOR`.
16
18
  */
17
19
  function streamHasColors(stream, env = process.env) {
18
20
  if (stream.isTTY === true) return stream.hasColors(env);
@@ -28,7 +28,10 @@ const DENIED = Object.freeze({
28
28
  function rowCheckOf(found, granted) {
29
29
  return found ? granted ? GRANTED : DENIED : MISSING;
30
30
  }
31
- /** Reads `select <filter> as granted ... where <key> limit 2`; only a boolean `true` or `1` grants. */
31
+ /**
32
+ * Reads `select <filter> as granted ... where <key> limit 2`; only a boolean
33
+ * `true` or `1` grants.
34
+ */
32
35
  function rowCheckFrom(rows) {
33
36
  if (rows.length > 1) throw new Error("PermDock: checkRow key matches more than one row");
34
37
  const [row] = rows;
@@ -88,9 +91,10 @@ function setConfigs(settings) {
88
91
  }];
89
92
  }
90
93
  /**
91
- * The transaction preamble that makes Postgres see `permdock.subject`: one `select set_config(…)`
92
- * that sets the role, then the claims the generated policies read. Runs inside the caller's
93
- * transaction, so every setting is local to it.
94
+ * The transaction preamble that makes Postgres see `permdock.subject`: one
95
+ * `select set_config(…)` that sets the role, then the claims the generated
96
+ * policies read. Runs inside the caller's transaction, so every setting is
97
+ * local to it.
94
98
  */
95
99
  function subjectStatements(permdock, options = {}) {
96
100
  const principal = permdock.subject.principal;