permdock 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-BcudBQOF.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
  35. package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
  45. package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
  46. package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
  52. package/dist/catalog-D3oS2GH3.js +1 -0
  53. package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
  54. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  55. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  56. package/dist/catalog-operations-DeHTrJSV.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
  77. package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
  78. package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
  79. package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
  80. package/dist/collect-D-eroIfV.js +1 -0
  81. package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
  98. package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
  99. package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
  100. package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
  101. package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
  102. package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
  103. package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-DHldhVUv.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
  127. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  128. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
  130. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
  131. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-BFfzZSLH.js +58 -0
  150. package/dist/gen-BtfFWGbz.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  164. package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
  169. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  170. package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
  171. package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
  172. package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
  173. package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
  174. package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
  175. package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +34 -34
  178. package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
  179. package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +79 -26
  212. package/dist/next/index.js +121 -10
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
  223. package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
  224. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
  232. package/dist/output-files-BHOIlrfD.js +1 -0
  233. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  234. package/dist/ownership-DA5YdYTm.js +1059 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
  245. package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
  262. package/dist/powersync-B701tvhE.js +1 -0
  263. package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
  264. package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-D8x73IGm.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
  282. package/dist/pull-C3EEGzSw.js +1 -0
  283. package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
  284. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
  285. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-ConCSj1y.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
  306. package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
  310. package/dist/run-Ck22anC2.js +1 -0
  311. package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
  333. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  334. package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
  335. package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  344. package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  351. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-DZJvxFIZ.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
  357. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
  368. package/dist/supabase-hook-C0FyEACZ.js +1 -0
  369. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
  370. package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +225 -141
  394. package/dist/testing/index.js +352 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
  407. package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
  408. package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
  409. package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
  410. package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
  411. package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
  412. package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
  413. package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
  414. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  415. package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
  416. package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
  417. package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
  418. package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
  419. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  420. package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
  421. package/dist/types-tQB2CEnY.d.ts +262 -0
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-0hjZPIRX.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
  441. package/dist/watch-ClLuO2TL.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
  452. package/package.json +8 -8
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +16 -23
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -0,0 +1,108 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { i as configError, n as CliError } from "./errors-Vpu6rKHl.js";
3
+ import { a as isSection, i as isModuleKey, n as MODULE_KEYS, o as kindOf, r as describeKinds, t as CONFIG_SHAPE } from "./config-shape-ykV0Vm2n.js";
4
+ import { existsSync } from "node:fs";
5
+ import { relative, resolve } from "node:path";
6
+ //#region src/cli/project/config-schema.ts
7
+ const TOP_LEVEL = /* @__PURE__ */ new Set([...Object.keys(MODULE_KEYS), ...Object.keys(CONFIG_SHAPE)]);
8
+ function invalid(file, message) {
9
+ return new CliError("usage", `PermDock CLI: ${file}: ${message}`);
10
+ }
11
+ /**
12
+ * Checks the shape a command relies on before it reads the config: module paths
13
+ * are strings, each section is an object, and each key PermDock reads holds a
14
+ * value of a kind it accepts. A key PermDock does not read is a warning, so a
15
+ * config written for a newer version still loads.
16
+ */
17
+ function parseConfig(value, file) {
18
+ if (value === void 0) return {
19
+ config: {},
20
+ warnings: []
21
+ };
22
+ if (!isRecord(value)) throw new CliError("usage", `PermDock CLI: ${file} must export a config object as default (use defineConfig)`);
23
+ const warnings = [];
24
+ const unknown = (path, known) => `${file}: unknown key ${path}; PermDock reads ${[...known].join(", ")}`;
25
+ for (const [key, entry] of Object.entries(value)) {
26
+ if (isModuleKey(key)) {
27
+ if (entry !== void 0 && typeof entry !== "string") throw invalid(file, `${key} must be a module path string or the value imported from it`);
28
+ continue;
29
+ }
30
+ if (!isSection(key)) {
31
+ warnings.push(unknown(key, TOP_LEVEL));
32
+ continue;
33
+ }
34
+ if (entry === void 0) continue;
35
+ if (!isRecord(entry)) throw invalid(file, `${key} must be an object`);
36
+ const known = CONFIG_SHAPE[key];
37
+ for (const [child, childValue] of Object.entries(entry)) {
38
+ const kinds = Object.hasOwn(known, child) ? known[child] : void 0;
39
+ if (kinds === void 0) {
40
+ warnings.push(unknown(`${key}.${child}`, Object.keys(known)));
41
+ continue;
42
+ }
43
+ const kind = kindOf(childValue);
44
+ if (childValue !== void 0 && (kind === void 0 || !kinds.includes(kind))) throw configError(`PermDock CLI: ${file}: ${key}.${child} must be ${describeKinds(kinds)}, not ${kind === void 0 ? "null" : describeKinds([kind])}`);
45
+ }
46
+ }
47
+ return {
48
+ config: value,
49
+ warnings
50
+ };
51
+ }
52
+ //#endregion
53
+ //#region src/cli/project/config.ts
54
+ const CONFIG_FILES = [
55
+ "permdock.config.ts",
56
+ "permdock.config.mts",
57
+ "permdock.config.js",
58
+ "permdock.config.mjs"
59
+ ];
60
+ /**
61
+ * Types a `permdock.config.ts`. Pass the `policy` value rather than its path,
62
+ * and resource, scope, action and permission names in the config are checked
63
+ * against it.
64
+ */
65
+ function defineConfig(config) {
66
+ return config;
67
+ }
68
+ function isConfigFile(name) {
69
+ return CONFIG_FILES.some((file) => file === name);
70
+ }
71
+ async function readConfig(cwd, fromFlag, options) {
72
+ const path = fromFlag !== void 0 && fromFlag !== "" ? resolve(cwd, fromFlag) : CONFIG_FILES.map((name) => resolve(cwd, name)).find((file) => existsSync(file));
73
+ if (path === void 0) return {
74
+ config: {},
75
+ warnings: [],
76
+ file: void 0
77
+ };
78
+ if (!existsSync(path)) throw new CliError("usage", `PermDock CLI: config file not found: ${path}`, { code: "config_not_found" });
79
+ const { loadModule, pickNamed } = await import("./load-Dm0pSYH3.js");
80
+ const mod = await loadModule(path, options);
81
+ const display = relative(cwd, path).replaceAll("\\", "/");
82
+ const raw = pickNamed(mod, ["default"]);
83
+ return {
84
+ ...parseConfig(hasModuleValue(raw) ? await traceValues(cwd, path, display, raw, options) : raw, display),
85
+ file: path
86
+ };
87
+ }
88
+ function hasModuleValue(raw) {
89
+ return isRecord(raw) && Object.keys(MODULE_KEYS).some((key) => isRecord(raw[key]));
90
+ }
91
+ async function traceValues(cwd, file, display, config, options) {
92
+ const { traceModuleValues } = await import("./module-values-BJTBdo6y.js");
93
+ return traceModuleValues({
94
+ cwd,
95
+ file,
96
+ display,
97
+ config,
98
+ ...options === void 0 ? {} : { options }
99
+ });
100
+ }
101
+ async function loadConfig(cwd, fromFlag, options) {
102
+ return (await readConfig(cwd, fromFlag, options)).config;
103
+ }
104
+ function resolveCwd(cwd, fallback) {
105
+ return cwd === void 0 ? fallback : resolve(fallback, cwd);
106
+ }
107
+ //#endregion
108
+ export { resolveCwd as a, readConfig as i, isConfigFile as n, loadConfig as r, defineConfig as t };
@@ -1,5 +1,5 @@
1
1
  import { t as defineLeaf } from "./command-L8EstFNm.js";
2
- import { a as failOnFlag } from "./flags-aaeRAdiD.js";
2
+ import { a as failOnFlag } from "./flags-DXjoTVbS.js";
3
3
  //#region src/cli/commands/config.ts
4
4
  const config = defineLeaf({
5
5
  flags: {
@@ -10,7 +10,7 @@ const config = defineLeaf({
10
10
  ...failOnFlag
11
11
  },
12
12
  async run(ctx, { flags }) {
13
- const { runConfig } = await import("./config-report-Cm7UITNA.js");
13
+ const { runConfig } = await import("./config-report-BmWIskD7.js");
14
14
  return runConfig({
15
15
  cwd: ctx.cwd,
16
16
  config: ctx.config,
@@ -1,9 +1,9 @@
1
- import { a as rel, t as defaultSrcPath } from "./files-D_JIzUrP.js";
2
- import { r as CONFIG_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
3
- import { n as guessPermissions, t as barrelFile } from "./collect-BaWeMjwV.js";
1
+ import { a as rel, t as defaultSrcPath } from "./files-BSjrtIHw.js";
2
+ import { r as CONFIG_REPORT_SCHEMA } from "./version-DMQ0dnN5.js";
4
3
  import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
5
- import "./sources-B-zYB4GS.js";
6
- import { t as DOCS_BASE } from "./manifest-Dv6q4i5s.js";
4
+ import { n as guessPermissions, t as barrelFile } from "./collect-WCl8cJQV.js";
5
+ import "./sources-CMAM-2A3.js";
6
+ import { t as DOCS_BASE } from "./manifest-B2QPh19C.js";
7
7
  import { n as MIGRATION_DIRS, t as DEFAULT_SENSITIVE_ACTIONS } from "./constants-DcJABbLW.js";
8
8
  //#region src/cli/config-report.ts
9
9
  function configReport(input) {
@@ -27,7 +27,10 @@ function configReport(input) {
27
27
  warnings: input.warnings
28
28
  };
29
29
  }
30
- /** `permdock config`: the config's warnings, or with `--print` or `--json` the effective config. */
30
+ /**
31
+ * `permdock config`: the config's warnings, or with `--print` or `--json` the
32
+ * effective config.
33
+ */
31
34
  function runConfig(input) {
32
35
  const report = configReport(input);
33
36
  const code = input.strict && report.warnings.length > 0 ? 1 : 0;
@@ -0,0 +1,134 @@
1
+ //#region src/cli/project/config-shape.ts
2
+ const STRING = ["string"];
3
+ const BOOLEAN = ["boolean"];
4
+ const ARRAY = ["array"];
5
+ const OBJECT = ["object"];
6
+ const BOOLEAN_OR_OBJECT = ["boolean", "object"];
7
+ const BOOLEAN_OR_ARRAY = ["boolean", "array"];
8
+ const BOOLEAN_OR_STRING = ["boolean", "string"];
9
+ const MODULE = ["string", "object"];
10
+ /**
11
+ * Every key PermDock reads, per section, with the kinds its value may take.
12
+ * `satisfies` ties each list to `keyof` its section type, so a new option
13
+ * cannot ship without the validator knowing it.
14
+ */
15
+ const CONFIG_SHAPE = {
16
+ collect: {
17
+ srcPath: ARRAY,
18
+ out: STRING,
19
+ barrel: BOOLEAN_OR_STRING
20
+ },
21
+ catalog: { out: STRING },
22
+ openapi: { doc: ARRAY },
23
+ rls: {
24
+ tables: OBJECT,
25
+ dialect: STRING,
26
+ memberships: OBJECT,
27
+ membershipSources: ARRAY,
28
+ suspension: OBJECT,
29
+ functions: OBJECT,
30
+ inlineFunctions: BOOLEAN,
31
+ force: BOOLEAN,
32
+ fixtures: STRING,
33
+ verify: OBJECT,
34
+ tenantClaim: STRING,
35
+ scopeTypes: OBJECT,
36
+ roleClaim: STRING,
37
+ roleValues: OBJECT,
38
+ gucPrefix: STRING,
39
+ out: STRING,
40
+ drizzle: OBJECT,
41
+ prisma: OBJECT,
42
+ schema: STRING,
43
+ authorize: STRING,
44
+ policyPerRole: BOOLEAN,
45
+ customRoles: BOOLEAN_OR_OBJECT,
46
+ triggers: OBJECT,
47
+ audit: OBJECT,
48
+ capabilities: BOOLEAN,
49
+ anonymousSignIns: STRING,
50
+ fields: STRING,
51
+ revokeColumns: BOOLEAN,
52
+ policyName: STRING,
53
+ rbac: OBJECT,
54
+ roles: OBJECT,
55
+ actions: OBJECT,
56
+ helpersOnly: BOOLEAN,
57
+ rowHelpers: BOOLEAN_OR_ARRAY,
58
+ seeds: STRING,
59
+ treeValues: OBJECT,
60
+ trustedReaders: ARRAY,
61
+ migrate: OBJECT,
62
+ shims: BOOLEAN_OR_OBJECT,
63
+ tenants: STRING,
64
+ customRoleWrites: OBJECT,
65
+ anonExecute: BOOLEAN,
66
+ assignments: BOOLEAN_OR_OBJECT,
67
+ approvals: BOOLEAN_OR_OBJECT,
68
+ jsonSchema: BOOLEAN_OR_STRING,
69
+ ownershipTriggers: BOOLEAN_OR_OBJECT,
70
+ readOnlyActors: BOOLEAN_OR_ARRAY,
71
+ apiKeys: BOOLEAN_OR_OBJECT,
72
+ tokenScopes: BOOLEAN,
73
+ realtime: OBJECT,
74
+ storage: OBJECT
75
+ },
76
+ supabase: {
77
+ hook: OBJECT,
78
+ schemas: STRING
79
+ },
80
+ powersync: {
81
+ out: STRING,
82
+ resources: ARRAY,
83
+ action: STRING,
84
+ manifest: STRING
85
+ },
86
+ doctor: {
87
+ sensitiveActions: ARRAY,
88
+ memberships: STRING,
89
+ credentials: STRING,
90
+ clientEntries: ARRAY,
91
+ migrations: ARRAY,
92
+ claims: STRING,
93
+ srcPath: ARRAY,
94
+ sharedTables: ARRAY
95
+ },
96
+ gen: {
97
+ out: STRING,
98
+ kinds: ARRAY,
99
+ fieldMeta: BOOLEAN
100
+ }
101
+ };
102
+ const MODULE_KEYS = {
103
+ permissions: MODULE,
104
+ policy: MODULE,
105
+ operations: MODULE
106
+ };
107
+ function isSection(key) {
108
+ return Object.hasOwn(CONFIG_SHAPE, key);
109
+ }
110
+ function isModuleKey(key) {
111
+ return Object.hasOwn(MODULE_KEYS, key);
112
+ }
113
+ function kindOf(value) {
114
+ if (Array.isArray(value)) return "array";
115
+ const type = typeof value;
116
+ switch (type) {
117
+ case "string": return "string";
118
+ case "boolean": return "boolean";
119
+ case "number": return "number";
120
+ case "function": return "function";
121
+ case "object": return value === null ? void 0 : "object";
122
+ case "bigint":
123
+ case "symbol":
124
+ case "undefined": return;
125
+ default: return type;
126
+ }
127
+ }
128
+ function describeKinds(kinds) {
129
+ const names = kinds.map((kind) => kind === "array" ? "an array" : kind === "object" ? "an object" : `a ${kind}`);
130
+ const last = names.splice(-1, 1).join("");
131
+ return names.length === 0 ? last : `${names.join(", ")} or ${last}`;
132
+ }
133
+ //#endregion
134
+ export { isSection as a, isModuleKey as i, MODULE_KEYS as n, kindOf as o, describeKinds as r, CONFIG_SHAPE as t };
@@ -1,6 +1,6 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { r as PermDockRevokedError } from "./errors-BKy0EfhN.js";
3
- import { a as durationOf, o as epochSeconds } from "./time-DkWjdL98.js";
2
+ import { r as PermDockRevokedError } from "./errors-B6R_lg2a.js";
3
+ import { a as durationOf, o as epochSeconds } from "./time-nR1JesoH.js";
4
4
  //#region src/server/connection.ts
5
5
  /** `setTimeout` stores delays in a signed 32-bit integer. */
6
6
  const MAX_DELAY = 2147483647;
@@ -99,27 +99,28 @@ async function openConnection(input) {
99
99
  return true;
100
100
  };
101
101
  let schedule;
102
+ const step = async () => {
103
+ if (controller.signal.aborted || closed) return;
104
+ let rebuilt;
105
+ try {
106
+ rebuilt = await input.rebuild();
107
+ } catch {
108
+ abort("subject-changed");
109
+ return;
110
+ }
111
+ const id = principalId(rebuilt);
112
+ if (id === void 0 || current === void 0 || id !== principalId(current)) {
113
+ abort("subject-changed");
114
+ return;
115
+ }
116
+ if (!await admits(rebuilt)) return;
117
+ current = rebuilt;
118
+ for (const timer of timers) clearTimeout(timer);
119
+ timers.clear();
120
+ schedule?.(rebuilt);
121
+ };
102
122
  const revalidate = () => {
103
- chain = chain.then(async () => {
104
- if (controller.signal.aborted || closed) return;
105
- let next;
106
- try {
107
- next = await input.rebuild();
108
- } catch {
109
- abort("subject-changed");
110
- return;
111
- }
112
- const id = principalId(next);
113
- if (id === void 0 || current === void 0 || id !== principalId(current)) {
114
- abort("subject-changed");
115
- return;
116
- }
117
- if (!await admits(next)) return;
118
- current = next;
119
- for (const timer of timers) clearTimeout(timer);
120
- timers.clear();
121
- schedule?.(next);
122
- }).catch(() => {
123
+ chain = chain.then(step).catch(() => {
123
124
  abort("subject-changed");
124
125
  });
125
126
  };
@@ -1,9 +1,10 @@
1
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
1
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
2
2
  //#region src/delivery/connector-schema.ts
3
3
  /**
4
4
  * `schemas/connector-v1.json`: the body of a PermDock Cloud connector, one
5
5
  * `oneOf` branch per kind with a closed `config`. Only the `otlp` and `siem`
6
- * `headers` maps hold a secret; a store seals their values and lists names only.
6
+ * `headers` maps hold a secret; a store seals their values and lists names
7
+ * only.
7
8
  */
8
9
  const CONNECTOR_SCHEMA = freezeDeep({
9
10
  $schema: "https://json-schema.org/draft/2020-12/schema",
@@ -1,6 +1,6 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { i as isPromiseLike } from "./store-options-B_poyYvg.js";
3
- import { n as switchTenant, t as providerStore } from "./provider-store-IgqQipCO.js";
2
+ import { a as isPromiseLike } from "./store-options-Dil3lraY.js";
3
+ import { n as switchTenant, t as providerStore } from "./provider-store-CaTv00tr.js";
4
4
  import { getContext, onDestroy, setContext } from "svelte";
5
5
  import { toStore } from "svelte/store";
6
6
  //#region src/svelte/context.ts
@@ -36,7 +36,8 @@ function connectSvelteStore(options) {
36
36
  maxAge: options.maxAge,
37
37
  onSnapshot: options.onSnapshot,
38
38
  onClear: options.onClear,
39
- approvalInterval: options.approvalInterval
39
+ approvalInterval: options.approvalInterval,
40
+ refreshOn: options.refreshOn
40
41
  }), () => ({
41
42
  headers: typeof headers === "function" ? headers() : headers,
42
43
  fetch: options.fetch,
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, 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 { a as ProblemDetails, r as PermDockDeniedError } from "../errors-B_Qg9D3e.js";
5
- import { t as InstanceOptions } from "../instance-options-CU0YQCLH.js";
1
+ import { T as Policy, j as PolicyVocabulary, pr as Principal } from "../policy-types-DGIO_gxq.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock } from "../permdock-CprAPN3w.js";
4
+ import { a as ProblemDetails, r as PermDockDeniedError } from "../errors-BIM4MFsJ.js";
5
+ import { t as InstanceOptions } from "../instance-options-CoHn-0e8.js";
6
6
  //#region src/convex/types.d.ts
7
7
  type ConvexContextLike = {
8
8
  readonly auth?: {
@@ -20,9 +20,15 @@ type ConvexQueryBuilder = (definition: {
20
20
  }) => unknown;
21
21
  type ConvexPermDockOptions<TCtx, TUser = unknown> = InstanceOptions & {
22
22
  readonly subject: ConvexSubject<TCtx, TUser>;
23
- /** The active tenant: a fixed id or a function of the Convex context; a throw is no tenant. */
23
+ /**
24
+ * The active tenant: a fixed id or a function of the Convex context; a throw
25
+ * is no tenant.
26
+ */
24
27
  readonly tenant?: string | ((ctx: TCtx) => string | undefined | Promise<string | undefined>);
25
- /** The agent or service acting for the subject; anything but an `Actor` is ignored. */
28
+ /**
29
+ * The agent or service acting for the subject; anything but an `Actor` is
30
+ * ignored.
31
+ */
26
32
  readonly actor?: (ctx: TCtx) => unknown;
27
33
  readonly query?: ConvexQueryBuilder;
28
34
  };
@@ -1,11 +1,14 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as PermDockValidationError } from "../validation-error-ZfUHbKvf.js";
3
- import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-BKy0EfhN.js";
4
- import { l as withApp } from "../permdock-BfWEeMqk.js";
5
- import { n as resolveOrNull, t as buildInstance } from "../build-instance-DxE7czo9.js";
6
- import { n as tenantScope, t as actorFrom } from "../adapter-context-CRhqyzCk.js";
2
+ import { n as PermDockValidationError } from "../validation-error-CYg2kJEw.js";
3
+ import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-B6R_lg2a.js";
4
+ import { l as withApp } from "../permdock-BvjivVb9.js";
5
+ import { n as resolveOrNull, t as buildInstance } from "../build-instance-BWXqwQYU.js";
6
+ import { n as tenantScope, t as actorFrom } from "../adapter-context-CIQpQxbE.js";
7
7
  //#region src/convex/create.ts
8
- /** Convex's runtime sends `data` to the client only for an error carrying this symbol. */
8
+ /**
9
+ * Convex's runtime sends `data` to the client only for an error carrying this
10
+ * symbol.
11
+ */
9
12
  const CONVEX_ERROR = Symbol.for("ConvexError");
10
13
  var ConvexError = class extends Error {
11
14
  name = "ConvexError";
@@ -1,6 +1,6 @@
1
- import { Ln as Decision, T as Policy, or as Membership, tr as CustomRole } from "./policy-types-B-F-qAZk.js";
2
- import { u as Permission } from "./permission-types-DhNEmoRG.js";
3
- import { o as PermDockOptions, u as WhereResult } from "./permdock-Dco6dyCK.js";
1
+ import { T as Policy, Un as Decision, fr as Membership, sr as CustomRole } from "./policy-types-DGIO_gxq.js";
2
+ import { u as Permission } from "./permission-types-CAY-GU7e.js";
3
+ import { f as WhereResult, o as PermDockOptions } from "./permdock-CprAPN3w.js";
4
4
  //#region src/testing/policy-matrix.d.ts
5
5
  type MatrixOutcome = "granted" | "denied" | "approval-required";
6
6
  type MatrixCell = MatrixOutcome | {
@@ -10,7 +10,10 @@ type MatrixCell = MatrixOutcome | {
10
10
  readonly reason: string;
11
11
  }[];
12
12
  readonly alternatives?: readonly string[];
13
- /** Obligation kinds a granted decision carries, in order; `[]` asserts none. */
13
+ /**
14
+ * Obligation kinds a granted decision carries, in order; `[]` asserts
15
+ * none.
16
+ */
14
17
  readonly obligations?: readonly string[];
15
18
  /** The `name` of the deny grant `explain` reports as the one that won. */
16
19
  readonly deniedBy?: string;
@@ -22,14 +25,18 @@ type DescribePolicyConfig<TSubject> = {
22
25
  readonly exhaustive?: boolean;
23
26
  readonly options?: PermDockOptions;
24
27
  /**
25
- * Also assert every granted or denied cell against `fromSnapshot(permdock.snapshot())`,
26
- * the client a Server Component hands down. Closures cannot cross a snapshot and deny on the client.
28
+ * Also assert every granted or denied cell against
29
+ * `fromSnapshot(permdock.snapshot())`, the client a Server Component hands
30
+ * down. Closures cannot cross a snapshot and deny on the client.
27
31
  */
28
32
  readonly snapshot?: boolean;
29
33
  };
30
34
  /** One cell of the matrix, decided. */
31
35
  type PolicyMatrixCell = {
32
- /** `<permission> / <subject>`, or `<permission> / <fixture> / <subject>` for a nested row. */
36
+ /**
37
+ * `<permission> / <subject>`, or `<permission> / <fixture> / <subject>` for a
38
+ * nested row.
39
+ */
33
40
  readonly name: string;
34
41
  readonly permission: string;
35
42
  readonly subject: string;
@@ -84,21 +91,29 @@ type RlsParityOptions = {
84
91
  readonly fixtures: readonly RlsParityFixture[];
85
92
  /**
86
93
  * `supabase` and `neon` set `request.jwt.claims`; a test database stubs
87
- * `auth.jwt()` / `auth.uid()` or `auth.session()` / `auth.user_id()` over it.
94
+ * `auth.jwt()` / `auth.uid()` or `auth.session()` / `auth.user_id()` over
95
+ * it.
88
96
  */
89
97
  readonly dialect?: "supabase" | "neon" | "guc";
90
98
  readonly gucPrefix?: string;
91
99
  readonly tenantClaim?: string;
92
- /** Claim (or `guc` setting) the RLS helpers read global roles from. Default `user_role`. */
100
+ /**
101
+ * Claim (or `guc` setting) the RLS helpers read global roles from. Default
102
+ * `user_role`.
103
+ */
93
104
  readonly roleClaim?: string;
94
105
  readonly role?: "authenticated" | "anon";
95
106
  /**
96
- * Tenant-defined roles the subjects' memberships may hold. `decide` resolves them through a
97
- * `CustomRoleSource`; each membership's claim carries them as the compact `grants` map, which the
98
- * helpers read in `jwt` mode. Seeding the `database`-mode tables is the caller's job.
107
+ * Tenant-defined roles the subjects' memberships may hold. `decide` resolves
108
+ * them through a `CustomRoleSource`; each membership's claim carries them as
109
+ * the compact `grants` map, which the helpers read in `jwt` mode. Seeding the
110
+ * `database`-mode tables is the caller's job.
99
111
  */
100
112
  readonly customRoles?: readonly CustomRole[];
101
- /** Also decide each case from the subject's serialized snapshot (`fromSnapshot`); it must agree. */
113
+ /**
114
+ * Also decide each case from the subject's serialized snapshot
115
+ * (`fromSnapshot`); it must agree.
116
+ */
102
117
  readonly snapshot?: boolean;
103
118
  /**
104
119
  * With `rls generate --fields views`: for each instance read, the row of
@@ -118,7 +133,10 @@ type RlsParityCase = {
118
133
  readonly database: RlsDbOutcome;
119
134
  /** The snapshot's decision, with `snapshot: true`. */
120
135
  readonly snapshot?: boolean;
121
- /** The field view check, with `fieldViews: true`; `database` is an error code when the read failed. */
136
+ /**
137
+ * The field view check, with `fieldViews: true`; `database` is an error code
138
+ * when the read failed.
139
+ */
122
140
  readonly fields?: RlsFieldsOutcome;
123
141
  readonly ok: boolean;
124
142
  };
@@ -131,9 +149,15 @@ declare function testRlsParity<TUser>(policy: Policy<TUser>, options: RlsParityO
131
149
  //#region src/testing/orm-parity.d.ts
132
150
  type OrmParityScenario<TUser = unknown> = {
133
151
  readonly name: string;
134
- /** What the policy's `subject` mapper receives, as in `createPermDock(policy, user)`. */
152
+ /**
153
+ * What the policy's `subject` mapper receives, as in `createPermDock(policy,
154
+ * user)`.
155
+ */
135
156
  readonly user: TUser;
136
- /** The active tenant and role sources, as in `createPermDock(policy, user, options)`. */
157
+ /**
158
+ * The active tenant and role sources, as in `createPermDock(policy, user,
159
+ * options)`.
160
+ */
137
161
  readonly options?: PermDockOptions;
138
162
  /** An instance permission; its `where()` filters the table. */
139
163
  readonly permission: Permission<string, unknown, "instance">;
@@ -145,7 +169,10 @@ type OrmParityRunInput<TUser = unknown> = {
145
169
  readonly where: WhereResult;
146
170
  };
147
171
  type OrmParityOptions<TUser = unknown> = {
148
- /** Runs `toWhere(where)` against the database and returns the matching row ids. */
172
+ /**
173
+ * Runs `toWhere(where)` against the database and returns the matching row
174
+ * ids.
175
+ */
149
176
  readonly run: (input: OrmParityRunInput<TUser>) => Promise<readonly unknown[]>;
150
177
  /** The row id field; default `id`. */
151
178
  readonly id?: string;
@@ -168,11 +195,11 @@ type OrmParityReport = {
168
195
  };
169
196
  /**
170
197
  * ORM parity: for each scenario, the rows `permdock.filter()` keeps in memory
171
- * must be exactly the rows the database returns for `toWhere(permdock.where())`.
172
- * With a `relations` option, the graph is loaded for the rows first, so the
173
- * in-memory side walks the same graph the database query does.
174
- * A partial `where()` (a closure grant it cannot compile) may be refused or
175
- * return fewer rows, never more.
198
+ * must be exactly the rows the database returns for
199
+ * `toWhere(permdock.where())`. With a `relations` option, the graph is loaded
200
+ * for the rows first, so the in-memory side walks the same graph the database
201
+ * query does. A partial `where()` (a closure grant it cannot compile) may be
202
+ * refused or return fewer rows, never more.
176
203
  */
177
204
  declare function testOrmParity<TUser>(policy: Policy<TUser>, scenarios: readonly OrmParityScenario<TUser>[], options: OrmParityOptions<TUser>): Promise<OrmParityReport>;
178
205
  //#endregion
@@ -1,12 +1,12 @@
1
- import { A as memoryCustomRoleSource } from "./src-DLFrtrrC.js";
2
- import { c as listPermissions } from "./permission-registry-DpPtSKNZ.js";
3
- import { f as scopeList } from "./scopes-BHsc-wp-.js";
4
- import { y as membershipsClaim } from "./evaluate-B_oqFbWC.js";
5
- import { n as parseSnapshot } from "./snapshot-CbGmYiJx.js";
6
- import { n as fromSnapshot } from "./from-snapshot-Bz469dIh.js";
7
- import { t as getPermDock } from "./permdock-BfWEeMqk.js";
8
- import { c as quoteSqlTable, n as defaultSqlCommand, o as quoteSqlIdent, t as SQL_IDENT } from "./sql-B96movIM.js";
9
- import "./budget-NbEtbJC_.js";
1
+ import { j as memoryCustomRoleSource } from "./src-C_pi2Rnh.js";
2
+ import { c as listPermissions } from "./permission-registry-B8tYxPIt.js";
3
+ import { f as scopeList } from "./scopes-0Up_UA2t.js";
4
+ import { y as membershipsClaim } from "./evaluate-BAmf_AQd.js";
5
+ import { n as parseSnapshot } from "./snapshot-CXlzi69u.js";
6
+ import { n as fromSnapshot } from "./from-snapshot-DCakWRsr.js";
7
+ import { t as getPermDock } from "./permdock-BvjivVb9.js";
8
+ import { c as quoteSqlTable, n as defaultSqlCommand, o as quoteSqlIdent, t as SQL_IDENT } from "./sql-0WjxIp9g.js";
9
+ import "./budget-BELja5A9.js";
10
10
  //#region src/testing/policy-matrix.ts
11
11
  function isOutcomeCell(value) {
12
12
  return value === "granted" || value === "denied" || value === "approval-required" || value !== null && typeof value === "object" && ("denials" in value || "outcome" in value || "alternatives" in value || "obligations" in value || "deniedBy" in value);
@@ -38,7 +38,10 @@ function decisionFailures(decision, cell) {
38
38
  }
39
39
  return failures;
40
40
  }
41
- /** `deniedBy`, against the trace of a fresh `explain` call for the same arguments. */
41
+ /**
42
+ * `deniedBy`, against the trace of a fresh `explain` call for the same
43
+ * arguments.
44
+ */
42
45
  function deniedByFailures(instance, permission, data, cell) {
43
46
  if (typeof cell !== "object" || cell.deniedBy === void 0) return [];
44
47
  const explained = instance.explain(permission, data);
@@ -82,7 +85,10 @@ function pendingCells(policy, config) {
82
85
  }
83
86
  return cells;
84
87
  }
85
- /** Where each cell sits, without deciding it: a test runner registers one test per cell. */
88
+ /**
89
+ * Where each cell sits, without deciding it: a test runner registers one test
90
+ * per cell.
91
+ */
86
92
  function policyMatrixLayout(policy, config) {
87
93
  return pendingCells(policy, config).map((cell) => cell.fixture === void 0 ? {
88
94
  name: cell.name,
@@ -152,8 +158,8 @@ function setting(name, value) {
152
158
  };
153
159
  }
154
160
  /**
155
- * The session state the generated helpers read: JWT claims for `supabase`,
156
- * GUCs for `guc` (roles as a comma list, memberships as JSON).
161
+ * The session state the generated helpers read: JWT claims for `supabase`, GUCs
162
+ * for `guc` (roles as a comma list, memberships as JSON).
157
163
  */
158
164
  function subjectSettings(dialect, subject, gucPrefix, tenantClaim, roleClaim, customRoles, scopes) {
159
165
  const roles = subject.roles ?? [];
@@ -181,8 +187,8 @@ function subjectSettings(dialect, subject, gucPrefix, tenantClaim, roleClaim, cu
181
187
  return subject.tenant === void 0 ? settings : [...settings, setting(`${gucPrefix}.${tenantClaim}`, subject.tenant)];
182
188
  }
183
189
  /**
184
- * The statement a case runs. With field views it reads back only the key, so
185
- * a base table whose restricted columns are revoked does not reject it.
190
+ * The statement a case runs. With field views it reads back only the key, so a
191
+ * base table whose restricted columns are revoked does not reject it.
186
192
  */
187
193
  function statementSql(action, table, keyOnly) {
188
194
  const quoted = quoteSqlTable(table);
@@ -287,11 +293,11 @@ function subsetOf(small, large) {
287
293
  }
288
294
  /**
289
295
  * ORM parity: for each scenario, the rows `permdock.filter()` keeps in memory
290
- * must be exactly the rows the database returns for `toWhere(permdock.where())`.
291
- * With a `relations` option, the graph is loaded for the rows first, so the
292
- * in-memory side walks the same graph the database query does.
293
- * A partial `where()` (a closure grant it cannot compile) may be refused or
294
- * return fewer rows, never more.
296
+ * must be exactly the rows the database returns for
297
+ * `toWhere(permdock.where())`. With a `relations` option, the graph is loaded
298
+ * for the rows first, so the in-memory side walks the same graph the database
299
+ * query does. A partial `where()` (a closure grant it cannot compile) may be
300
+ * refused or return fewer rows, never more.
295
301
  */
296
302
  async function testOrmParity(policy, scenarios, options) {
297
303
  const idField = options.id ?? "id";