permdock 0.7.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 (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-CL-QCITA.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-BLs67P1l.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  14. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-3RhGfkAK.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-BAkBDMqn.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  35. package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
  45. package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
  46. package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-BFpz2EmT.js} +20 -19
  52. package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
  53. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  54. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  55. package/dist/catalog-mRQQQhNK.js +1 -0
  56. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-BFlGMaak.js} +4 -5
  77. package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
  78. package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
  79. package/dist/collect-B5BL3klN.js +1 -0
  80. package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
  81. package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BFzysW3o.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
  98. package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
  99. package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
  100. package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
  101. package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
  102. package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
  103. package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  127. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  128. package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
  130. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  131. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-B5kvbAoZ.js +58 -0
  150. package/dist/gen-DWCYcMQM.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
  164. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  169. package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
  170. package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
  171. package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
  172. package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
  173. package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
  174. package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
  175. package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +33 -33
  178. package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
  179. package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-C-fYydV2.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-D-8tMqzo.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-BNWCJtmP.js} +14 -8
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +72 -26
  212. package/dist/next/index.js +110 -6
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  223. package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
  224. package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/output-files-BHOIlrfD.js +1 -0
  232. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  233. package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
  234. package/dist/ownership-B4L59T9u.js +1054 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
  245. package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-mDcTWoBs.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-CCiDRZBH.d.ts} +738 -349
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
  262. package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
  263. package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
  264. package/dist/powersync-Djf-zCpB.js +1 -0
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/pull-B65ndFNZ.js +1 -0
  282. package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
  283. package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
  284. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  285. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-DNftIb_R.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-CF7xXLSG.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
  306. package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-fNqAIqQk.js} +8 -5
  310. package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
  311. package/dist/run-D-JE8QWb.js +1 -0
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-iWnUdwCt.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  333. package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  334. package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
  335. package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
  344. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-DZ0l9UAg.js} +190 -100
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  351. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  357. package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-BL1qJzzY.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
  368. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
  369. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  370. package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-DeMNEy6V.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +224 -141
  394. package/dist/testing/index.js +299 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  407. package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
  408. package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
  409. package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
  410. package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
  411. package/dist/types-B_d_g7T3.d.ts +262 -0
  412. package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
  413. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  414. package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
  415. package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
  416. package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
  417. package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  418. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  419. package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
  420. package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
  421. package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-CYeXek0p.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DZeqoWu5.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
  441. package/dist/watch-DB42U1ib.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-rI7dCR9Q.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  452. package/package.json +7 -7
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +14 -22
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -1,295 +0,0 @@
1
- import { a as sole } from "./compact-CAf557ZB.js";
2
- import { i as configError, n as CliError } from "./errors-DpP_U6Bf.js";
3
- import { i as requirePeer } from "./peer-12Q5I_RH.js";
4
- import { D as qualified, _ as subjectClaimJsonSql } from "./shared-fMKOv8hP.js";
5
- //#region src/cli/pg.ts
6
- const CONNECT_TIMEOUT_MS = 1e4;
7
- const STATEMENT_TIMEOUT_MS = 6e4;
8
- function loadPg(command, cwd) {
9
- return requirePeer(() => import("pg"), "pg", command, cwd);
10
- }
11
- function options(db) {
12
- return {
13
- connectionString: db,
14
- connectionTimeoutMillis: CONNECT_TIMEOUT_MS,
15
- statement_timeout: STATEMENT_TIMEOUT_MS
16
- };
17
- }
18
- function unreachable(command, cause) {
19
- return new CliError("unavailable", `PermDock CLI: ${command.replace(/^permdock /u, "")} could not connect`, {
20
- cause,
21
- code: "database_unreachable"
22
- });
23
- }
24
- /** The default `connect` of a command: one connection, failing with a message that names `command`. */
25
- function pgConnector(command, cwd = process.cwd()) {
26
- return (db) => connectPg(db, command, cwd);
27
- }
28
- /** One connection, for commands that run a transaction. */
29
- async function connectPg(db, command, cwd) {
30
- const client = new (await (loadPg(command, cwd))).Client(options(db));
31
- try {
32
- await client.connect();
33
- } catch (cause) {
34
- throw unreachable(command, cause);
35
- }
36
- return {
37
- query: (sql, values) => client.query(sql, values),
38
- end: () => client.end()
39
- };
40
- }
41
- /** A small pool, for independent catalog reads that can run in parallel. */
42
- async function connectPgPool(db, command, cwd = process.cwd()) {
43
- const pool = new (await (loadPg(command, cwd))).Pool({
44
- ...options(db),
45
- max: 4
46
- });
47
- try {
48
- (await pool.connect()).release();
49
- } catch (cause) {
50
- await pool.end();
51
- throw unreachable(command, cause);
52
- }
53
- return {
54
- query: (sql, values) => pool.query(sql, values),
55
- end: () => pool.end()
56
- };
57
- }
58
- //#endregion
59
- //#region src/cli/sql/clauses.ts
60
- /** True when `sql` is one parenthesised expression, so AND / OR need not wrap it again. */
61
- function isWrapped(sql) {
62
- if (!sql.startsWith("(") || !sql.endsWith(")")) return false;
63
- let depth = 0;
64
- let quoted = false;
65
- for (let index = 0; index < sql.length; index += 1) {
66
- const ch = sql[index];
67
- if (ch === "'") quoted = !quoted;
68
- else if (!quoted && ch === "(") depth += 1;
69
- else if (!quoted && ch === ")") {
70
- depth -= 1;
71
- if (depth === 0 && index < sql.length - 1) return false;
72
- }
73
- }
74
- return depth === 0;
75
- }
76
- function wrapSql(sql) {
77
- return isWrapped(sql) ? sql : `(${sql})`;
78
- }
79
- /**
80
- * The grant's `validFrom` / `validUntil` as a clock check: `from` inclusive,
81
- * `until` exclusive, matching the in-process evaluator.
82
- */
83
- function validitySql(validity) {
84
- if (validity === void 0) return;
85
- return andSql(validity.from === void 0 ? void 0 : `now() >= to_timestamp(${validity.from})`, validity.until === void 0 ? void 0 : `now() < to_timestamp(${validity.until})`);
86
- }
87
- function andSql(...parts) {
88
- const present = parts.filter((part) => part !== void 0 && part !== "true");
89
- if (present.length === 0) return;
90
- return present.length === 1 ? present[0] : present.map(wrapSql).join(" and ");
91
- }
92
- /** `USING` and `WITH CHECK` for a branch: its access check ANDed with its row conditions. */
93
- function branchClauses(branch) {
94
- const using = branch.command === "insert" ? void 0 : andSql(branch.access, branch.using) ?? "true";
95
- const check = branch.command === "insert" || branch.command === "update" ? andSql(branch.access, branch.check) ?? "true" : void 0;
96
- return {
97
- ...using === void 0 ? {} : { using },
98
- ...check === void 0 ? {} : { check }
99
- };
100
- }
101
- //#endregion
102
- //#region src/cli/rls/policies.ts
103
- /** Each database role gets its own policy, so no role sees two permissive policies for one command. */
104
- const AUDIENCES = ["authenticated", "anon"];
105
- const DEFAULT_POLICY_NAME = "{table}_{op}";
106
- const DEFAULT_PER_ROLE_NAME = "{role}_{permission}";
107
- const PLACEHOLDER = /\{(table|op|role|permission)\}/gu;
108
- function sanitize(name) {
109
- return name.replaceAll(/[^A-Za-z0-9_]/g, "_");
110
- }
111
- function render(template, values) {
112
- return sanitize(template.replaceAll(PLACEHOLDER, (_match, key) => values[key]));
113
- }
114
- /** Rejects a template that cannot name every policy of the chosen shape uniquely. */
115
- function assertPolicyName(template, perRole) {
116
- if (!perRole && /\{(role|permission)\}/u.test(template)) throw configError("PermDock CLI: --policy-name {role} and {permission} need --policy-per-role; a collapsed policy covers several roles");
117
- if (!perRole && !(template.includes("{table}") && template.includes("{op}"))) throw configError("PermDock CLI: --policy-name needs {table} and {op} so each table and command gets its own policy");
118
- }
119
- function orSql(parts) {
120
- const distinct = [...new Set(parts)];
121
- if (distinct.includes("true")) return "true";
122
- return sole(distinct) ?? distinct.map(wrapSql).join(" or ");
123
- }
124
- function negate(sql) {
125
- return sql === void 0 ? void 0 : `(${sql}) is not true`;
126
- }
127
- function policyOf(name, branch, using, check) {
128
- const deny = branch.effect === "deny";
129
- const policy = {
130
- name,
131
- table: branch.table,
132
- command: branch.command,
133
- effect: branch.effect,
134
- roles: branch.roles
135
- };
136
- const finalUsing = deny ? negate(using) : using;
137
- const finalCheck = deny ? negate(check) : check;
138
- if (finalUsing !== void 0) policy.using = finalUsing;
139
- if (finalCheck !== void 0) policy.check = finalCheck;
140
- return policy;
141
- }
142
- function uniqueName(names, name) {
143
- const seen = names.get(name) ?? 0;
144
- names.set(name, seen + 1);
145
- return seen === 0 ? name : `${name}_${seen + 1}`;
146
- }
147
- function perRolePolicies(branches, template) {
148
- const names = /* @__PURE__ */ new Map();
149
- return branches.map((branch) => {
150
- const clauses = branchClauses(branch);
151
- const deny = branch.effect === "deny";
152
- const base = render(template, {
153
- table: branch.table,
154
- op: branch.command,
155
- role: branch.label,
156
- permission: branch.permissionKey
157
- });
158
- const name = `${deny ? "deny_" : ""}${base}${branch.coverage === true ? "_select_coverage" : ""}`;
159
- return policyOf(uniqueName(names, name), branch, clauses.using, clauses.check);
160
- });
161
- }
162
- /**
163
- * Branches of one grant-key group share their row condition, so the group
164
- * becomes one OR branch whose access ORs the helper calls of each scope.
165
- */
166
- function mergeGroups(branches) {
167
- const merged = [];
168
- const byKey = /* @__PURE__ */ new Map();
169
- for (const branch of branches) {
170
- const id = branch.grantKey === void 0 ? void 0 : `${branch.table}\u0000${branch.command}\u0000${branch.grantKey}\u0000${branch.coverage === true}`;
171
- const entry = id === void 0 ? void 0 : byKey.get(id);
172
- if (entry === void 0) {
173
- const created = {
174
- branch,
175
- accesses: branch.access === void 0 ? [] : [branch.access]
176
- };
177
- if (id !== void 0) byKey.set(id, created);
178
- merged.push(created);
179
- continue;
180
- }
181
- if (branch.access !== void 0 && !entry.accesses.includes(branch.access)) entry.accesses.push(branch.access);
182
- }
183
- return merged.map(({ branch, accesses }) => accesses.length <= 1 ? branch : withAccess(branch, orSql(accesses)));
184
- }
185
- function withAccess(branch, access) {
186
- return {
187
- ...branch,
188
- access
189
- };
190
- }
191
- function collapsedPolicies(branches, template) {
192
- const groups = /* @__PURE__ */ new Map();
193
- for (const branch of mergeGroups(branches)) {
194
- const id = `${branch.table}\u0000${branch.command}\u0000${branch.effect}`;
195
- groups.set(id, [...groups.get(id) ?? [], branch]);
196
- }
197
- const names = /* @__PURE__ */ new Map();
198
- return [...groups.values()].flatMap((group) => AUDIENCES.flatMap((audience) => {
199
- const members = group.filter((branch) => branch.roles.includes(audience));
200
- const [first] = members;
201
- if (first === void 0) return [];
202
- const deny = first.effect === "deny";
203
- const clauses = members.map(branchClauses);
204
- const usings = clauses.flatMap((item) => item.using === void 0 ? [] : [item.using]);
205
- const checks = clauses.flatMap((item) => item.check === void 0 ? [] : [item.check]);
206
- const base = render(template, {
207
- table: first.table,
208
- op: first.command,
209
- role: first.label,
210
- permission: first.permissionKey
211
- });
212
- return [policyOf(uniqueName(names, `${deny ? "deny_" : ""}${base}${audience === "anon" ? "_anon" : ""}`), {
213
- ...first,
214
- roles: [audience]
215
- }, usings.length === 0 ? void 0 : orSql(usings), checks.length === 0 ? void 0 : orSql(checks))];
216
- }));
217
- }
218
- /**
219
- * Assembles policies. The default is one PERMISSIVE policy per table,
220
- * command and database role (Splinter `multiple_permissive_policies` stays
221
- * quiet), with denies in one RESTRICTIVE policy per table, command and role.
222
- */
223
- function assemblePolicies(branches, shape) {
224
- const template = shape.name ?? (shape.perRole ? DEFAULT_PER_ROLE_NAME : DEFAULT_POLICY_NAME);
225
- assertPolicyName(template, shape.perRole);
226
- return shape.perRole ? perRolePolicies(branches, template) : collapsedPolicies(branches, template);
227
- }
228
- const DEFAULT_READ_ONLY_ACTORS = ["support", "impersonation"];
229
- const ACTOR_KIND = /^[a-z][a-z0-9_-]*$/u;
230
- /** The actor kinds `rls.readOnlyActors` names, or `undefined` when it is off. */
231
- function readOnlyActorKinds(setting) {
232
- if (setting === void 0 || setting === false) return;
233
- const kinds = setting === true ? DEFAULT_READ_ONLY_ACTORS : setting;
234
- if (kinds.length === 0 || kinds.some((kind) => !ACTOR_KIND.test(kind))) throw configError("PermDock CLI: rls.readOnlyActors must be true or a non-empty list of actor kinds such as 'support'");
235
- return [...new Set(kinds)];
236
- }
237
- /** `permdock_actor_may_write()`, for hand-written write policies. Names are part of the SQL contract. */
238
- const ACTOR_MAY_WRITE = "permdock_actor_may_write";
239
- /**
240
- * True unless the token's `act` claim (`act`, as SQL `jsonb`) is a session
241
- * of one of `kinds` that is not `read_only: false`, or an agent with
242
- * `read_only: true` (agents default to writable, as better-supabase reads them).
243
- */
244
- function readOnlyActorPasses(act, kinds) {
245
- const list = `array[${kinds.map((kind) => `'${kind}'`).join(", ")}]::text[]`;
246
- const passes = `(not coalesce(${kinds.includes("support") ? `(${act} ->> 'kind') = any(${list}) or ((${act} ->> 'kind') is null and ${act} ? 'session_id')` : `(${act} ->> 'kind') = any(${list})`}, false) or coalesce((${act} ->> 'read_only') = 'false', false))`;
247
- return kinds.includes("agent") ? passes : `${passes} and not coalesce((${act} ->> 'kind') = 'agent' and (${act} ->> 'read_only') = 'true', false)`;
248
- }
249
- /**
250
- * `permdock_actor_may_write()`: {@link readOnlyActorPasses} as a function, so
251
- * hand-written write policies apply the same read-only default.
252
- */
253
- function actorMayWriteSql(ctx, kinds) {
254
- const fn = qualified(ctx, ACTOR_MAY_WRITE);
255
- return `-- rls.readOnlyActors: false for a token whose act claim is a read-only ${kinds.join(" or ")} session; hand-written write policies call it
256
- create or replace function ${fn}()
257
- returns boolean
258
- language sql
259
- stable
260
- set search_path = ''
261
- as $$
262
- select ${readOnlyActorPasses(subjectClaimJsonSql(ctx, "act"), kinds)}
263
- $$;
264
- revoke execute on function ${fn}() from public, anon;
265
- grant execute on function ${fn}() to authenticated;
266
- `;
267
- }
268
- /**
269
- * One restrictive policy per table and write command the allow policies
270
- * grant to `authenticated`: the write passes unless the token's `act` claim
271
- * (`act`, as SQL `jsonb`) is a session of one of `kinds` that is not
272
- * `read_only: false`. Reads are never touched.
273
- */
274
- function readOnlyActorPolicies(policies, act, kinds) {
275
- const passes = readOnlyActorPasses(act, kinds);
276
- const seen = /* @__PURE__ */ new Set();
277
- const out = [];
278
- for (const policy of policies) {
279
- const key = `${policy.table}\u0000${policy.command}`;
280
- if (policy.effect !== "allow" || policy.command === "select" || !policy.roles.includes("authenticated") || seen.has(key)) continue;
281
- seen.add(key);
282
- out.push({
283
- name: sanitize(`${policy.table}_${policy.command}_read_only_actors`),
284
- table: policy.table,
285
- command: policy.command,
286
- effect: "deny",
287
- roles: ["authenticated"],
288
- ...policy.command === "insert" ? {} : { using: passes },
289
- ...policy.command === "delete" ? {} : { check: passes }
290
- });
291
- }
292
- return out;
293
- }
294
- //#endregion
295
- export { readOnlyActorKinds as a, branchClauses as c, connectPgPool as d, pgConnector as f, orSql as i, validitySql as l, actorMayWriteSql as n, readOnlyActorPolicies as o, assemblePolicies as r, andSql as s, ACTOR_MAY_WRITE as t, wrapSql as u };
@@ -1 +0,0 @@
1
- export { n as runPowerSync } from "./powersync-53ryOZip.js";
@@ -1,7 +0,0 @@
1
- import { Ln as Decision } from "./policy-types-B-F-qAZk.js";
2
- //#region src/core/problem-details.d.ts
3
- type Disclosure = "hide" | "reveal";
4
- /** The plans a `not-entitled` denial asks for; empty unless every denial is `not-entitled`. */
5
- declare function requiredPlans(decision: Decision): readonly string[];
6
- //#endregion
7
- export { requiredPlans as n, Disclosure as t };
@@ -1,39 +0,0 @@
1
- import { Ln as Decision, j as PolicyVocabulary, or as Membership } from "./policy-types-B-F-qAZk.js";
2
- import { u as Permission } from "./permission-types-DhNEmoRG.js";
3
- import { r as Role } from "./vocabulary-Bg3eeT2H.js";
4
- import { r as DescribeOptions, t as DecisionDescription } from "./describe-O0SwYIK8.js";
5
- import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, l as PermissionState, o as GateMode, p as TenantView, r as ClientPermDock, s as GateView, t as ApprovalHandle } from "./types-CKV71kKh.js";
6
- import { r as ProtectedProps } from "./types-CQVEQawv.js";
7
- import { ReactNode } from "react";
8
- //#region src/react/hooks.d.ts
9
- declare function usePermDock<V extends PolicyVocabulary = PolicyVocabulary>(): ClientPermDock<V>;
10
- declare function usePermission(permission: Permission, data?: unknown): PermissionState;
11
- declare function usePermissions(permissions: readonly Permission[], data?: unknown): PermissionSet;
12
- declare function useFilter<T>(permission: Permission<string, T, "instance">, rows: readonly T[]): FilterResult<T>;
13
- declare function useTenant(): TenantView;
14
- declare function useMemberships(): readonly Membership[];
15
- declare function useRoles(options?: RolesOptions): {
16
- readonly roles: readonly Role[];
17
- };
18
- declare function useAssignableRoles(): readonly Role[];
19
- declare function useAssignablePermissions(options?: {
20
- readonly tenant?: string;
21
- }): readonly Permission[];
22
- declare function useSubject(): SubjectView;
23
- /** `describe` with the provider's `messages`; a call's own `messages` win. */
24
- declare function useDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
25
- declare function useApproval(decision: Decision): ApprovalHandle;
26
- /**
27
- * What a permission-gated control renders: `hidden`, `disabled`,
28
- * `needsApproval`, `upgrade` and a localised `reason`, from the same
29
- * snapshot as `usePermission`. React and React Native share it; a recipe
30
- * renders the fields and decides nothing.
31
- */
32
- declare function useGate(permission: Permission, data?: unknown, options?: {
33
- readonly mode?: GateMode;
34
- }): GateView;
35
- //#endregion
36
- //#region src/react/protected.d.ts
37
- declare function Protected(props: ProtectedProps): ReactNode;
38
- //#endregion
39
- export { useDescribe as a, useMemberships as c, usePermissions as d, useRoles as f, useAssignableRoles as i, usePermDock as l, useTenant as m, useApproval as n, useFilter as o, useSubject as p, useAssignablePermissions as r, useGate as s, Protected as t, usePermission as u };
@@ -1 +0,0 @@
1
- export { n as runCloudPull } from "./pull-CN5OLxrF.js";
@@ -1 +0,0 @@
1
- export { t as run } from "./run-uLD2aWuO.js";
@@ -1,31 +0,0 @@
1
- import { Ln as Decision, or as Membership } from "./policy-types-B-F-qAZk.js";
2
- import { u as Permission } from "./permission-types-DhNEmoRG.js";
3
- import { r as Role } from "./vocabulary-Bg3eeT2H.js";
4
- import { r as DescribeOptions, t as DecisionDescription } from "./describe-O0SwYIK8.js";
5
- import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, l as PermissionState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "./types-CKV71kKh.js";
6
- import { n as SveltePermDockOptions } from "./types-DXmwu78Z.js";
7
- import { Readable } from "svelte/store";
8
- //#region src/svelte/stores.d.ts
9
- declare function setPermDock(options: SveltePermDockOptions): ClientPermDock;
10
- declare function getPermDock(): ClientPermDock;
11
- /** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
12
- declare function getDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
13
- declare function permission(reference: Permission, data?: () => unknown): Readable<PermissionState>;
14
- declare function permissions(references: () => readonly Permission[], data?: () => unknown): Readable<PermissionSet>;
15
- declare function filtered<T>(reference: Permission<string, T, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
16
- declare function tenant(): Readable<TenantView>;
17
- declare function memberships(): Readable<readonly Membership[]>;
18
- declare function roles(options?: () => RolesOptions): Readable<{
19
- readonly roles: readonly Role[];
20
- }>;
21
- declare function assignable(): Readable<readonly Role[]>;
22
- type AssignableOptions = {
23
- readonly tenant?: string;
24
- } | (() => {
25
- readonly tenant?: string;
26
- });
27
- declare function assignablePermissions(options?: AssignableOptions): Readable<readonly Permission[]>;
28
- declare function subject(): Readable<SubjectView>;
29
- declare function approval(decision: () => Decision): Readable<ApprovalHandle>;
30
- //#endregion
31
- 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 };
@@ -1 +0,0 @@
1
- export { i as runSupabase } from "./supabase-hook-Dg0SrQWR.js";
@@ -1,172 +0,0 @@
1
- import { Gt as Snapshot, Ln as Decision, Zn as Actor, dt as TokenVerifier, j as PolicyVocabulary, rr as Delegation, sr as Principal } from "./policy-types-B-F-qAZk.js";
2
- import { u as Permission } from "./permission-types-DhNEmoRG.js";
3
- import { a as PermDock } from "./permdock-Dco6dyCK.js";
4
- import { n as DescribeMessages, t as DecisionDescription } from "./describe-O0SwYIK8.js";
5
- //#region src/client/request.d.ts
6
- type StoreHeaders = Readonly<Record<string, string>>;
7
- //#endregion
8
- //#region src/client/store.d.ts
9
- type ClientStoreOptions = {
10
- readonly snapshot: Snapshot | string;
11
- readonly endpoint?: string;
12
- readonly snapshotUrl?: string;
13
- readonly approvals?: string;
14
- readonly tenant?: string;
15
- readonly fetch?: typeof fetch;
16
- /** Request headers, or a getter read on every request so a rotated token needs no new store. */
17
- readonly headers?: StoreHeaders | (() => StoreHeaders | undefined);
18
- readonly maxAge?: number;
19
- readonly verifier?: TokenVerifier;
20
- /** `raw` is the compact JWS the snapshot was verified from, so a signed snapshot can be persisted signed. */
21
- readonly onSnapshot?: (snapshot: Snapshot, tenant: string | undefined, raw: string | undefined) => void;
22
- readonly onClear?: () => void;
23
- /** Called once per key the snapshot cannot answer when there is no `endpoint` to ask. */
24
- readonly onServerOnly?: (permission: Permission) => void;
25
- /**
26
- * `true` while rendering on the server: endpoint checks answer `pending`
27
- * without a request. Defaults to `typeof window === 'undefined'`.
28
- */
29
- readonly server?: boolean;
30
- /** Milliseconds between approval status polls. Defaults to 2000. */
31
- readonly approvalInterval?: number;
32
- /** Start `pending`: the snapshot arrives later through `track()`. */
33
- readonly awaiting?: boolean;
34
- /**
35
- * The first snapshot that hydrates with a principal is a persisted copy:
36
- * `stale` until a refresh or a `replace()` lands.
37
- */
38
- readonly stale?: boolean;
39
- /**
40
- * Reuse decisions for the same row object until the next microtask. Only for
41
- * renderers that do not track the fields a check reads (React): Vue, Svelte
42
- * and Solid would stop re-running when a reactive row changes in place.
43
- */
44
- readonly passCache?: boolean;
45
- };
46
- type ClientStore = {
47
- get(): ClientPermDock;
48
- subscribe(listener: () => void): () => void;
49
- permissionState(permission: Permission, data?: unknown): PermissionState;
50
- requestApproval(decision: Decision, note?: string): Promise<void>;
51
- /** Hydrate from a pushed snapshot; a compact JWS goes through the verifier. */
52
- replace(value: unknown): void;
53
- /** Stay `pending` until `value` settles, then hydrate; a rejection fails closed. */
54
- follow(value: PromiseLike<Snapshot | string>): void;
55
- /**
56
- * `follow()` once per `value`, without suspending. A thenable React already
57
- * settled (`status: 'fulfilled'`) hydrates at once.
58
- */
59
- track(value: PromiseLike<Snapshot | string>): void;
60
- /**
61
- * The approval state for a decision. While something subscribes, an
62
- * `approval-required` decision is polled at `<approvals>/<token>`.
63
- */
64
- approvalState(decision: Decision): ApprovalState;
65
- /**
66
- * Hydrate from a resolved `snapshotPromise` during render. Idempotent per `source`;
67
- * subscribers are notified in a microtask, never synchronously inside render.
68
- */
69
- adopt(value: Snapshot | string, source: object): void;
70
- snapshot(): Snapshot;
71
- /** The tenant the store currently answers for. */
72
- tenant(): string | undefined;
73
- /** Stops polls, drops in-flight results and persistence; the store keeps answering from its last snapshot. */
74
- dispose(): void;
75
- };
76
- //#endregion
77
- //#region src/client/types.d.ts
78
- type ClientStatus = "ready" | "pending" | "stale" | "server-only";
79
- type PermissionState = {
80
- readonly allowed: boolean;
81
- readonly status: ClientStatus;
82
- readonly decision: Decision;
83
- };
84
- type PermissionSet = {
85
- readonly granted: readonly Permission[];
86
- get(permission: Permission): PermissionState | undefined;
87
- };
88
- type ClientPermDock<V extends PolicyVocabulary = PolicyVocabulary> = PermDock<V> & {
89
- status(permission?: Permission, data?: unknown): ClientStatus;
90
- invalidate(ref: Permission | {
91
- readonly [key: string]: unknown;
92
- }): void;
93
- refresh(options?: {
94
- readonly tenant?: string;
95
- }): Promise<void>;
96
- clear(): void;
97
- subscribe(listener: () => void): () => void;
98
- };
99
- type ApprovalState = "not-needed" | "required" | "pending" | "approved" | "rejected" | "expired";
100
- type ApprovalHandle = {
101
- readonly state: ApprovalState;
102
- readonly token: string | undefined;
103
- readonly request: (note?: string) => Promise<void>;
104
- };
105
- type SubjectView = {
106
- readonly principal: Principal | null;
107
- readonly actor: Actor | undefined;
108
- readonly delegation: Delegation | undefined;
109
- readonly expiresAt: number | undefined;
110
- readonly simulated: boolean;
111
- };
112
- type TenantView = {
113
- readonly tenant: string | null;
114
- readonly tenants: readonly string[];
115
- readonly switchTo: (id: string) => Promise<void>;
116
- readonly status: ClientStatus;
117
- };
118
- type FilterResult<T> = readonly T[] & {
119
- readonly partial: boolean;
120
- };
121
- type RolesOptions = {
122
- readonly tenant?: string;
123
- readonly team?: string;
124
- };
125
- /** The provider options Vue, Svelte and Solid share; each adds its own reactive `snapshot`, `tenant`, `headers`, `verifier` and `defaults`. */
126
- type ProviderOptionsBase = {
127
- /**
128
- * The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
129
- * `false` never calls one: such a check is denied with reason `server-only`.
130
- */
131
- readonly endpoint?: string | false;
132
- /** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
133
- readonly snapshotUrl?: string;
134
- readonly approvals?: string;
135
- /** Read on every request, so a new `fetch` applies without a new store. */
136
- readonly fetch?: typeof fetch;
137
- readonly maxAge?: number;
138
- /** Localised text for the describe helper. */
139
- readonly messages?: DescribeMessages;
140
- /** Called with each snapshot the store accepts. */
141
- readonly onSnapshot?: NonNullable<ClientStoreOptions["onSnapshot"]>;
142
- /** Called when the store drops its snapshot. */
143
- readonly onClear?: () => void;
144
- /** Milliseconds between approval status polls. Defaults to 2000. */
145
- readonly approvalInterval?: number;
146
- };
147
- /** How a control shows a permission it cannot use: hidden, or disabled with a reason. */
148
- type GateMode = "hide" | "disable";
149
- /**
150
- * Everything a permission-gated control renders from, in one value: a
151
- * button, a menu item or a link reads these fields and decides nothing
152
- * itself. The client is a hint; the server checks again.
153
- */
154
- type GateView = {
155
- /** The decision granted the action. */
156
- readonly allowed: boolean;
157
- /** The snapshot is loading; render the control disabled, not hidden. */
158
- readonly pending: boolean;
159
- /** `mode: "hide"` and the action is not available: render nothing. */
160
- readonly hidden: boolean;
161
- /** The control cannot run the action now (denied, pending or awaiting approval). */
162
- readonly disabled: boolean;
163
- /** The decision needs a person's approval first; offer to request it. */
164
- readonly needsApproval: boolean;
165
- /** The plans that would grant the action, for an upgrade prompt; empty otherwise. */
166
- readonly upgrade: readonly string[];
167
- /** Title and detail for a tooltip or an accessible description. */
168
- readonly reason: DecisionDescription;
169
- readonly decision: Decision;
170
- };
171
- //#endregion
172
- export { FilterResult as a, PermissionSet as c, RolesOptions as d, SubjectView as f, ClientStoreOptions as h, ClientStatus as i, PermissionState as l, ClientStore as m, ApprovalState as n, GateMode as o, TenantView as p, ClientPermDock as r, GateView as s, ApprovalHandle as t, ProviderOptionsBase as u };
@@ -1 +0,0 @@
1
- export { t as runUsage } from "./usage-Bybmck7f.js";
@@ -1,18 +0,0 @@
1
- import { t as packageRoot } from "./package-root-Dk_ETdkp.js";
2
- import { readFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- //#region src/cli/core/version.ts
5
- function cliVersion() {
6
- return JSON.parse(readFileSync(join(packageRoot(), "package.json"), "utf8")).version;
7
- }
8
- function generatorBanner() {
9
- return `permdock@${cliVersion()}`;
10
- }
11
- const CATALOG_SCHEMA = "https://permdock.com/schemas/catalog-v1.json";
12
- const SUPABASE_MANIFEST_SCHEMA = "https://permdock.com/schemas/supabase-manifest-v1.json";
13
- const USAGE_REPORT_SCHEMA = "https://permdock.com/schemas/usage-report-v1.json";
14
- const DOCTOR_REPORT_SCHEMA = "https://permdock.com/schemas/doctor-report-v1.json";
15
- const CONFIG_REPORT_SCHEMA = "https://permdock.com/schemas/config-report-v1.json";
16
- const ARAZZO_REPORT_SCHEMA = "https://permdock.com/schemas/arazzo-report-v1.json";
17
- //#endregion
18
- export { SUPABASE_MANIFEST_SCHEMA as a, generatorBanner as c, DOCTOR_REPORT_SCHEMA as i, CATALOG_SCHEMA as n, USAGE_REPORT_SCHEMA as o, CONFIG_REPORT_SCHEMA as r, cliVersion as s, ARAZZO_REPORT_SCHEMA as t };
@@ -1 +0,0 @@
1
- export { s as cliVersion } from "./version-CEbQ5UeM.js";
@@ -1 +0,0 @@
1
- export { i as watchCollect } from "./watch-C-4VmFlL.js";