permdock 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,5 +1,5 @@
1
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
2
- import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-DXSHAMIa.js";
1
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
2
+ import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-CUvURzHp.js";
3
3
  //#region src/conditions/ast.ts
4
4
  function parentHop(parent) {
5
5
  return typeof parent === "string" ? { field: parent } : parent;
@@ -68,6 +68,20 @@ function createRef(path) {
68
68
  }
69
69
  const principal = createRef("principal");
70
70
  const context = createRef("context");
71
+ /**
72
+ * `principal.claims.<path>` for a dot path such as `team_ids` or
73
+ * `attrs.region`, typed `SubjectRef` under `noUncheckedIndexedAccess` and
74
+ * `noPropertyAccessFromIndexSignature`.
75
+ */
76
+ function claim(path) {
77
+ const segments = splitPath(path);
78
+ if (segments.length === 0) throw new Error("PermDock: claim() needs a claim path");
79
+ return createRef([
80
+ "principal",
81
+ "claims",
82
+ ...segments
83
+ ].join("."));
84
+ }
71
85
  function isSubjectRef(value) {
72
86
  if (value === null || typeof value !== "object" || !("ref" in value) || typeof value.ref !== "string") return false;
73
87
  const ref = value.ref;
@@ -88,4 +102,4 @@ function resolveConditionRef(ref, resolved) {
88
102
  }
89
103
  }
90
104
  //#endregion
91
- export { hasConditionOp as a, isConditionRef as c, resolveConditionRef as i, isSqlFunctionField as l, isSubjectRef as n, isCondition as o, principal as r, isConditionDate as s, context as t, parentHop as u };
105
+ export { resolveConditionRef as a, isConditionDate as c, parentHop as d, principal as i, isConditionRef as l, context as n, hasConditionOp as o, isSubjectRef as r, isCondition as s, claim as t, isSqlFunctionField as u };
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { r as ownGet } from "./paths-DXSHAMIa.js";
3
- import { n as relationId } from "./relations-BnCWnJGI.js";
2
+ import { r as ownGet } from "./paths-CUvURzHp.js";
3
+ import { n as relationId } from "./relations-BxvRvDHK.js";
4
4
  //#region src/core/relation-walk.ts
5
5
  /** Whether the holder's period covers `now`. */
6
6
  function activeNow(holder, now) {
@@ -53,7 +53,10 @@ function restrictedAbove(condition, row, reader) {
53
53
  if (new Set(ids).size !== ids.length || chain.truncated === true || chain.ancestors.length > above.depth - 1) return "relation-depth";
54
54
  return false;
55
55
  }
56
- /** The instances a graph relation reads: the start, then ancestors until a restricted one or `depth`. */
56
+ /**
57
+ * The instances a graph relation reads: the start, then ancestors until a
58
+ * restricted one or `depth`.
59
+ */
57
60
  function relationWalk(condition, row, reader) {
58
61
  if (!isRecord(row)) return;
59
62
  const first = relationId(ownGet(row, condition.field));
@@ -93,10 +96,10 @@ function relationWalk(condition, row, reader) {
93
96
  };
94
97
  }
95
98
  /**
96
- * Whether the subject holds the relation on the row's instance or an
97
- * ancestor within `depth`. A cycle is `relation-depth`; so is a chain that
98
- * goes on past `depth` with no holder below it. Any read the instance could
99
- * not answer is `relation-unavailable` unless a holder was found elsewhere.
99
+ * Whether the subject holds the relation on the row's instance or an ancestor
100
+ * within `depth`. A cycle is `relation-depth`; so is a chain that goes on past
101
+ * `depth` with no holder below it. Any read the instance could not answer is
102
+ * `relation-unavailable` unless a holder was found elsewhere.
100
103
  */
101
104
  function resolveRelated(condition, row, subject, now, reader, permitted) {
102
105
  if (condition.permission !== void 0) return resolveInherited(condition, condition.permission, row, reader, permitted);
@@ -148,8 +151,8 @@ function groupKey(group) {
148
151
  }
149
152
  /**
150
153
  * Whether the principal holds `at.relation` on one instance, directly or
151
- * through a group whose members hold it. Groups of `at`'s own resource nest
152
- * at most `budget` deep; a group of another resource gets a fresh budget
154
+ * through a group whose members hold it. Groups of `at`'s own resource nest at
155
+ * most `budget` deep; a group of another resource gets a fresh budget
153
156
  * (declarations rule out cycles across resources). A group met twice on one
154
157
  * path, or one past the budget, is `relation-depth`. `explored` holds the
155
158
  * budget each group was walked with across the whole walk: a group already
@@ -1,7 +1,7 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { i as idText } from "./expiry-D4_YKRKD.js";
3
- import { n as isThenable } from "./thenable-yD7SabqG.js";
4
- import { a as expandRelation } from "./resource-relations-D_jw0BFx.js";
2
+ import { i as idText } from "./expiry-6XByK0dm.js";
3
+ import { n as isThenable } from "./thenable-BNSM1U2R.js";
4
+ import { a as expandRelation } from "./resource-relations-8-pCScBO.js";
5
5
  //#region src/core/relations.ts
6
6
  function isInstant(value) {
7
7
  return value === void 0 || typeof value === "number" && Number.isFinite(value);
@@ -1,4 +1,4 @@
1
- import { o as epochSeconds } from "./time-DkWjdL98.js";
1
+ import { o as epochSeconds } from "./time-nR1JesoH.js";
2
2
  //#region src/ssf/replay.ts
3
3
  function memoryReplayStore() {
4
4
  const seen = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- import { l as ReplayStore } from "./types-C791HFu9.js";
1
+ import { l as ReplayStore } from "./types-DjuMBNF9.js";
2
2
  //#region src/ssf/replay.d.ts
3
3
  declare function memoryReplayStore(): ReplayStore;
4
4
  //#endregion
@@ -1,10 +1,10 @@
1
- import { t as assertAppData } from "./app-data-MuyzVqX8.js";
2
- import { n as wrapPermDock } from "./wrap-gX61EtpB.js";
3
- import { t as buildInstance } from "./build-instance-Bu_eDqYw.js";
1
+ import { t as assertAppData } from "./app-data-UNNm07jV.js";
2
+ import { n as wrapPermDock } from "./wrap-B2wziJI_.js";
3
+ import { t as buildInstance } from "./build-instance-CNWaYJyr.js";
4
4
  //#region src/core/request-context.ts
5
5
  /**
6
- * Errors an adapter raises around one instance (a `context` hook that threw,
7
- * an `onDenied` that failed), fed to the instance's `on('error')` handlers and
6
+ * Errors an adapter raises around one instance (a `context` hook that threw, an
7
+ * `onDenied` that failed), fed to the instance's `on('error')` handlers and
8
8
  * replayed to later ones, as core replays its own.
9
9
  */
10
10
  function deliver(handler, error) {
@@ -33,9 +33,9 @@ function errorChannel(queued) {
33
33
  };
34
34
  }
35
35
  /**
36
- * `buildInstance` with an error channel: the instance's `on('error')`
37
- * replays `errors` raised while resolving the request, and `report` adds
38
- * more. Kept beside `errorChannel`, so adapters without one do not bundle it.
36
+ * `buildInstance` with an error channel: the instance's `on('error')` replays
37
+ * `errors` raised while resolving the request, and `report` adds more. Kept
38
+ * beside `errorChannel`, so adapters without one do not bundle it.
39
39
  */
40
40
  async function buildReportingInstance(input) {
41
41
  const channel = errorChannel(input.errors);
@@ -1,5 +1,8 @@
1
1
  //#region src/approvals/request-schema.ts
2
- /** An RFC 3339 instant as `Temporal.Instant` prints it; pg_jsonschema asserts no `format`. */
2
+ /**
3
+ * An RFC 3339 instant as `Temporal.Instant` prints it; pg_jsonschema asserts no
4
+ * `format`.
5
+ */
3
6
  const INSTANT = String.raw`^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$`;
4
7
  const STRINGS = {
5
8
  type: "array",
@@ -1,20 +1,23 @@
1
- import { q as DecisionSink } from "../policy-types-n0uRTsW8.js";
2
- import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-DvSSPQJX.js";
3
- import { d as EmailTransport, o as DeliveryResult, u as EmailMessage } from "../types-BtHtcKMr.js";
4
- import { l as ReplayStore } from "../types-C791HFu9.js";
1
+ import { q as DecisionSink } from "../policy-types-CCiDRZBH.js";
2
+ import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-PYagyQUj.js";
3
+ import { d as EmailTransport, o as DeliveryResult, u as EmailMessage } from "../types-yUuPR5Hy.js";
4
+ import { l as ReplayStore } from "../types-DjuMBNF9.js";
5
5
  //#region src/resend/approval-email.d.ts
6
6
  type ApprovalEmailOptions = {
7
- /** The app's approval page: a base the request id is appended to, or a function of the prompt. Must be https. */
7
+ /**
8
+ * The app's approval page: a base the request id is appended to, or a
9
+ * function of the prompt. Must be https.
10
+ */
8
11
  readonly approvalUrl: ApprovalUrl;
9
12
  /** The product name in the footer line. */
10
13
  readonly product?: string;
11
14
  };
12
15
  /**
13
- * The default approval prompt email: an `approval`-category message whose
14
- * one link opens the app's approval page for the request. It carries no
15
- * approve or reject link; the signed-in approver decides on that page.
16
- * Throws a `TypeError` for an approval page that is not https. Replace it
17
- * with a React Email template by building the same `EmailMessage`.
16
+ * The default approval prompt email: an `approval`-category message whose one
17
+ * link opens the app's approval page for the request. It carries no approve or
18
+ * reject link; the signed-in approver decides on that page. Throws a
19
+ * `TypeError` for an approval page that is not https. Replace it with a React
20
+ * Email template by building the same `EmailMessage`.
18
21
  */
19
22
  export declare function approvalEmail(prompt: ApprovalPrompt, options: ApprovalEmailOptions): EmailMessage;
20
23
  //#endregion
@@ -48,16 +51,16 @@ type ResendResult<T> = {
48
51
  /** The part of a `Resend` client the transport calls; a `new Resend(key)` fits. */
49
52
  type ResendClient = {
50
53
  readonly emails: {
51
- send(payload: ResendEmailPayload, options?: {
54
+ send: (payload: ResendEmailPayload, options?: {
52
55
  readonly idempotencyKey?: string;
53
- }): Promise<ResendResult<{
56
+ }) => Promise<ResendResult<{
54
57
  readonly id: string;
55
58
  }>>;
56
59
  };
57
60
  readonly batch?: {
58
- send(payloads: ResendEmailPayload[], options?: {
61
+ send: (payloads: ResendEmailPayload[], options?: {
59
62
  readonly idempotencyKey?: string;
60
- }): Promise<ResendResult<{
63
+ }) => Promise<ResendResult<{
61
64
  readonly data: readonly {
62
65
  readonly id: string;
63
66
  }[];
@@ -69,22 +72,25 @@ type ResendTransportOptions = {
69
72
  readonly from?: string;
70
73
  /** The `replyTo` of an email whose message sets none. */
71
74
  readonly replyTo?: string;
72
- /** Tags added to every email; names and values are ASCII letters, digits, `_` and `-`. */
75
+ /**
76
+ * Tags added to every email; names and values are ASCII letters, digits, `_`
77
+ * and `-`.
78
+ */
73
79
  readonly tags?: Readonly<Record<string, string>>;
74
80
  };
75
81
  /**
76
- * The failure a Resend error name means. Rate limits, quotas and server
77
- * errors are retryable with the same idempotency key; a key, sender or
78
- * validation error is final. An unknown name is retryable only for a 5xx or
79
- * a missing status.
82
+ * The failure a Resend error name means. Rate limits, quotas and server errors
83
+ * are retryable with the same idempotency key; a key, sender or validation
84
+ * error is final. An unknown name is retryable only for a 5xx or a missing
85
+ * status.
80
86
  */
81
87
  export declare function resendFailure(error: ResendError): DeliveryResult;
82
88
  /**
83
89
  * Sends the email channel of `permdock/delivery` through Resend. The
84
90
  * idempotency key is Resend's `idempotencyKey`. The delivery id, key and
85
- * category travel as tags, so `resendWebhook` can join provider events to
86
- * the delivery. Two or more recipients go out through `batch.send`, up to
87
- * 100 per call. Throws a `TypeError` for a tag outside Resend's charset.
91
+ * category travel as tags, so `resendWebhook` can join provider events to the
92
+ * delivery. Two or more recipients go out through `batch.send`, up to 100 per
93
+ * call. Throws a `TypeError` for a tag outside Resend's charset.
88
94
  */
89
95
  export declare function resendTransport(resend: ResendClient, options?: ResendTransportOptions): EmailTransport;
90
96
  //#endregion
@@ -92,7 +98,7 @@ export declare function resendTransport(resend: ResendClient, options?: ResendTr
92
98
  /** The part of a `Resend` client the webhook calls; a `new Resend(key)` fits. */
93
99
  type ResendWebhookClient = {
94
100
  readonly webhooks: {
95
- verify(input: {
101
+ verify: (input: {
96
102
  readonly payload: string;
97
103
  readonly headers: {
98
104
  readonly id: string;
@@ -100,7 +106,7 @@ type ResendWebhookClient = {
100
106
  readonly signature: string;
101
107
  };
102
108
  readonly webhookSecret: string;
103
- }): unknown;
109
+ }) => unknown;
104
110
  };
105
111
  };
106
112
  type ResendWebhookOptions = {
@@ -116,10 +122,10 @@ type ResendWebhookOptions = {
116
122
  /**
117
123
  * A fetch handler for Resend webhooks. It verifies the Standard Webhooks
118
124
  * signature through `resend.webhooks.verify` (the `svix-*` and `webhook-*`
119
- * header names both work), claims the message id, and writes one delivery
120
- * event for `email.delivered`, `email.bounced`, `email.complained`,
121
- * `email.failed` and `email.suppressed`. A bad signature is a `401`; a sink
122
- * failure releases the claim and answers `503`, so Resend retries.
125
+ * header names both work), claims the message id, and writes one delivery event
126
+ * for `email.delivered`, `email.bounced`, `email.complained`, `email.failed`
127
+ * and `email.suppressed`. A bad signature is a `401`; a sink failure releases
128
+ * the claim and answers `503`, so Resend retries.
123
129
  */
124
130
  export declare function resendWebhook(options: ResendWebhookOptions): (request: Request) => Promise<Response>;
125
131
  //#endregion
@@ -1,14 +1,14 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { a as ownRecord } from "../paths-DXSHAMIa.js";
3
- import { o as statusProblem } from "../problem-details-cn5X30gZ.js";
4
- import { l as isRfc3339, p as nowSeconds } from "../time-DkWjdL98.js";
5
- import { n as sha256, t as bytesToBase64Url } from "../sha256-D9ihqmvd.js";
6
- import { t as deliveryEvent } from "../delivery-event-xX4obB8F.js";
7
- import { n as readBodyText } from "../body-text-QcXok_SI.js";
8
- import { a as methodNotAllowed, c as problemResponse } from "../problem-CTviyH5L.js";
9
- import { t as bodyTooLarge } from "../body-CH5of8Ne.js";
10
- import { n as approvalUrlFor } from "../approval-prompt-Dg5LeAcT.js";
11
- import { i as isDeliveryTarget } from "../target-Bw37TFNA.js";
2
+ import { a as ownRecord } from "../paths-CUvURzHp.js";
3
+ import { o as statusProblem } from "../problem-details-CLDgX1KV.js";
4
+ import { l as isRfc3339, p as nowSeconds } from "../time-nR1JesoH.js";
5
+ import { n as sha256, t as bytesToBase64Url } from "../sha256-C-4WXKIu.js";
6
+ import { t as deliveryEvent } from "../delivery-event-JioK5YbS.js";
7
+ import { n as readBodyText } from "../body-text-DQhcmqdY.js";
8
+ import { l as problemResponse, o as methodNotAllowed } from "../problem-BVLHFK33.js";
9
+ import { t as bodyTooLarge } from "../body-CJQwYVa8.js";
10
+ import { n as approvalUrlFor } from "../approval-prompt-B8hQY69x.js";
11
+ import { i as isDeliveryTarget } from "../target-qdEAnnhU.js";
12
12
  //#region src/resend/approval-email.ts
13
13
  const HTML_ESCAPES = {
14
14
  "&": "&amp;",
@@ -29,11 +29,11 @@ function requesterLine(prompt) {
29
29
  return actor === void 0 ? `Requested by ${principal}` : `Requested by ${principal} through ${actor.kind} ${actor.id}`;
30
30
  }
31
31
  /**
32
- * The default approval prompt email: an `approval`-category message whose
33
- * one link opens the app's approval page for the request. It carries no
34
- * approve or reject link; the signed-in approver decides on that page.
35
- * Throws a `TypeError` for an approval page that is not https. Replace it
36
- * with a React Email template by building the same `EmailMessage`.
32
+ * The default approval prompt email: an `approval`-category message whose one
33
+ * link opens the app's approval page for the request. It carries no approve or
34
+ * reject link; the signed-in approver decides on that page. Throws a
35
+ * `TypeError` for an approval page that is not https. Replace it with a React
36
+ * Email template by building the same `EmailMessage`.
37
37
  */
38
38
  function approvalEmail(prompt, options) {
39
39
  const url = approvalUrlFor(prompt, options.approvalUrl);
@@ -95,10 +95,10 @@ const FINAL = {
95
95
  validation_error: "rejected"
96
96
  };
97
97
  /**
98
- * The failure a Resend error name means. Rate limits, quotas and server
99
- * errors are retryable with the same idempotency key; a key, sender or
100
- * validation error is final. An unknown name is retryable only for a 5xx or
101
- * a missing status.
98
+ * The failure a Resend error name means. Rate limits, quotas and server errors
99
+ * are retryable with the same idempotency key; a key, sender or validation
100
+ * error is final. An unknown name is retryable only for a 5xx or a missing
101
+ * status.
102
102
  */
103
103
  function resendFailure(error) {
104
104
  const name = error.name;
@@ -183,9 +183,9 @@ async function sendBatch(resend, items, payloadOf) {
183
183
  /**
184
184
  * Sends the email channel of `permdock/delivery` through Resend. The
185
185
  * idempotency key is Resend's `idempotencyKey`. The delivery id, key and
186
- * category travel as tags, so `resendWebhook` can join provider events to
187
- * the delivery. Two or more recipients go out through `batch.send`, up to
188
- * 100 per call. Throws a `TypeError` for a tag outside Resend's charset.
186
+ * category travel as tags, so `resendWebhook` can join provider events to the
187
+ * delivery. Two or more recipients go out through `batch.send`, up to 100 per
188
+ * call. Throws a `TypeError` for a tag outside Resend's charset.
189
189
  */
190
190
  function resendTransport(resend, options = {}) {
191
191
  const tags = checkTags(options.tags ?? {});
@@ -285,9 +285,9 @@ function outcomeOf(type, data) {
285
285
  }
286
286
  }
287
287
  /**
288
- * The delivery event a verified Resend payload stands for, or `null` for
289
- * one that is not about a PermDock delivery: opens and clicks (tracking,
290
- * not delivery), sends, contact and domain events, and mail without the
288
+ * The delivery event a verified Resend payload stands for, or `null` for one
289
+ * that is not about a PermDock delivery: opens and clicks (tracking, not
290
+ * delivery), sends, contact and domain events, and mail without the
291
291
  * `permdock_delivery` and `permdock_key` tags.
292
292
  */
293
293
  function eventOf(payload, source) {
@@ -333,10 +333,10 @@ async function claim(replay, key) {
333
333
  /**
334
334
  * A fetch handler for Resend webhooks. It verifies the Standard Webhooks
335
335
  * signature through `resend.webhooks.verify` (the `svix-*` and `webhook-*`
336
- * header names both work), claims the message id, and writes one delivery
337
- * event for `email.delivered`, `email.bounced`, `email.complained`,
338
- * `email.failed` and `email.suppressed`. A bad signature is a `401`; a sink
339
- * failure releases the claim and answers `503`, so Resend retries.
336
+ * header names both work), claims the message id, and writes one delivery event
337
+ * for `email.delivered`, `email.bounced`, `email.complained`, `email.failed`
338
+ * and `email.suppressed`. A bad signature is a `401`; a sink failure releases
339
+ * the claim and answers `503`, so Resend retries.
340
340
  */
341
341
  function resendWebhook(options) {
342
342
  const source = options.source ?? "permdock";
@@ -0,0 +1,201 @@
1
+ import { n as freezeDeep } from "./freeze-jjan0lCv.js";
2
+ import { c as listPermissions } from "./permission-registry-B8tYxPIt.js";
3
+ import { f as scopeList } from "./scopes-0Up_UA2t.js";
4
+ import { i as configError } from "./errors-Vpu6rKHl.js";
5
+ import "./budget-BELja5A9.js";
6
+ import "./sources-CMAM-2A3.js";
7
+ import { A as quoteQualified, D as qualified, I as scopeTypeOf, O as quoteIdent } from "./shared-Afctg7B0.js";
8
+ import { F as globalRoleRows, Q as graphSqlName, Z as graphHelper, _ as PERMISSION_HELPERS, at as memberForHelper, c as holderSources, ct as memberIdsHelper, dt as permittedForHelper, ft as permittedIdsHelper, ht as scopeTable, lt as memberOfHelper, nt as inheritedRowsHelper, o as graphPlan, pt as restrictedHelper, r as tableNames, rt as isTeamScope, tt as hasPermittedUsers, v as checkName, x as permittedByPermissionHelper } from "./tables-DeMNEy6V.js";
9
+ import { t as FIELD_VIEWS } from "./fields-D0vUI6dq.js";
10
+ //#region src/cli/rls/permission-holders.ts
11
+ /**
12
+ * `permitted_<scope>_users(p_permission, p_id)`. Names are part of the SQL
13
+ * contract.
14
+ */
15
+ function permittedUsersHelper(scope) {
16
+ return checkName(`permitted_${scope}_users`);
17
+ }
18
+ /**
19
+ * The users with a membership row on the instance `p_id`, or `undefined` when
20
+ * the scope's memberships are not all in tables.
21
+ */
22
+ function candidatesSql(ctx, scope, user) {
23
+ const mapped = scopeTable(ctx, scope);
24
+ if (mapped !== void 0) return {
25
+ sql: ` select m.${quoteIdent(mapped.table.user)}::${user}
26
+ from ${quoteQualified(mapped.table.table)} m
27
+ where m.${quoteIdent(mapped.column)} = p_id`,
28
+ keys: []
29
+ };
30
+ const sources = holderSources(ctx, scope);
31
+ if (sources === void 0 || sources === "not-tables") return;
32
+ return {
33
+ sql: sources.map((source, index) => ` select h.user_id::${user}
34
+ from (
35
+ ${source.holders.rows(scope, { id: `v_key_${String(index)}` }).replaceAll(/^/gmu, " ")}
36
+ ) h`).join("\n union\n"),
37
+ keys: sources.map((source, index) => `v_key_${String(index)} ${source.holders.idType}`)
38
+ };
39
+ }
40
+ /**
41
+ * `language sql`, or PL/pgSQL when a source's id column needs `p_id` in a
42
+ * `%type` variable.
43
+ */
44
+ function functionBody(keys, query) {
45
+ if (keys.length === 0) return `language sql
46
+ stable
47
+ security definer
48
+ set search_path = ''
49
+ as $$
50
+ ${query}
51
+ $$;`;
52
+ return `language plpgsql
53
+ stable
54
+ security definer
55
+ set search_path = ''
56
+ as $$
57
+ declare
58
+ ${keys.map((key) => ` ${key} := p_id;`).join("\n")}
59
+ begin
60
+ return query
61
+ ${query.replaceAll(/^/gmu, " ")};
62
+ end
63
+ $$;`;
64
+ }
65
+ /**
66
+ * One `permitted_<scope>_users(p_permission, p_id)` per scope in `database`
67
+ * mode: the users who hold a permission key on one instance, read from the
68
+ * scope's membership rows and the global-roles table and kept when
69
+ * `permitted_<scope>_ids_by_permission_for` lists the instance or
70
+ * `permdock_has_permission_for` answers, so denies, custom roles, expiry and
71
+ * suspension apply as for the user. It names other users, so no client role may
72
+ * execute it, and a backend role needs its own grant.
73
+ */
74
+ function permissionHoldersSql(ctx) {
75
+ if (ctx.authorize !== "database") return "";
76
+ const user = ctx.dialect === "supabase" ? "uuid" : "text";
77
+ const global = globalRoleRows(ctx);
78
+ const hasFor = qualified(ctx, PERMISSION_HELPERS.hasFor);
79
+ return `${ctx.scopes.map(({ name }) => {
80
+ const candidates = hasPermittedUsers(ctx, name) ? candidatesSql(ctx, name, user) : void 0;
81
+ if (candidates === void 0) return `-- ${name}: no memberships table or table source, so permitted_${name}_users is not written`;
82
+ const fn = qualified(ctx, permittedUsersHelper(name));
83
+ const ids = qualified(ctx, checkName(`${permittedByPermissionHelper(name)}_for`));
84
+ const type = scopeTypeOf(ctx, name);
85
+ return `-- the users who hold a permission on one ${name}: its members and the global-role holders for whom the _for helpers answer; no client role may execute it
86
+ create or replace function ${fn}(p_permission text, p_id ${type})
87
+ returns setof ${user}
88
+ ${functionBody(candidates.keys, ` select c.user_id
89
+ from (
90
+ ${candidates.sql}
91
+ union
92
+ select ${global.userSql}::${user}
93
+ from ${global.from}
94
+ ) c(user_id)
95
+ where c.user_id is not null
96
+ and (
97
+ p_id in (select ${ids}(c.user_id, p_permission))
98
+ or ${hasFor}(c.user_id, p_permission)
99
+ )
100
+ order by 1`)}
101
+ revoke execute on function ${fn}(text, ${type}) from public, anon, authenticated;`;
102
+ }).join("\n\n")}\n`;
103
+ }
104
+ //#endregion
105
+ //#region src/cli/sql/resolve-names.ts
106
+ /** Postgres truncates a longer identifier, so two helpers could share one name. */
107
+ const MAX_IDENTIFIER_BYTES = 63;
108
+ const IDENTIFIER = /^[a-z_][a-z0-9_]*$/u;
109
+ function scopeNames(name) {
110
+ return {
111
+ permittedIds: permittedIdsHelper(name),
112
+ permittedIdsFor: permittedForHelper(name),
113
+ memberIds: memberIdsHelper(name),
114
+ memberIdsFor: memberForHelper(name),
115
+ ...isTeamScope(name) ? { memberIdsOf: memberOfHelper(name) } : {},
116
+ permittedUsers: permittedUsersHelper(name)
117
+ };
118
+ }
119
+ function rowHelperSet(setting, resources) {
120
+ if (setting === void 0) return /* @__PURE__ */ new Set();
121
+ return new Set(setting === true ? resources : setting);
122
+ }
123
+ function baseName(table) {
124
+ return table.startsWith("public.") ? table.slice(7) : table.replaceAll(".", "_");
125
+ }
126
+ function resourceNames(resource, input) {
127
+ const sql = graphSqlName(resource);
128
+ const { table } = input;
129
+ return {
130
+ ...table === void 0 ? {} : { table },
131
+ ...input.graph && sql !== void 0 ? {
132
+ permittedIds: graphHelper(resource),
133
+ restricted: restrictedHelper(resource)
134
+ } : {},
135
+ ...input.rows && sql !== void 0 ? {
136
+ rows: inheritedRowsHelper(resource),
137
+ row: `permitted_${sql}_row`
138
+ } : {},
139
+ ...input.fields && table !== void 0 ? {
140
+ visible: `${table}${FIELD_VIEWS.view}`,
141
+ visibleFields: `${baseName(table)}${FIELD_VIEWS.companion}`,
142
+ mask: `${baseName(table)}${FIELD_VIEWS.mask}`
143
+ } : {}
144
+ };
145
+ }
146
+ /**
147
+ * Rejects a helper that is not a lowercase SQL identifier or is longer than
148
+ * Postgres keeps, and two sources that resolve to the same helper.
149
+ */
150
+ function checkNames(names) {
151
+ const owners = /* @__PURE__ */ new Map();
152
+ const claim = (name, owner) => {
153
+ if (!IDENTIFIER.test(name)) throw configError(`PermDock CLI: ${owner} names the SQL helper '${name}', which is not a lowercase SQL identifier`);
154
+ if (new TextEncoder().encode(name).length > MAX_IDENTIFIER_BYTES) throw configError(`PermDock CLI: ${owner} names the SQL helper '${name}', longer than the ${String(MAX_IDENTIFIER_BYTES)} bytes Postgres keeps; shorten the name`);
155
+ const other = owners.get(name);
156
+ if (other !== void 0 && other !== owner) throw configError(`PermDock CLI: ${other} and ${owner} both name the SQL helper '${name}'; rename one of them`);
157
+ owners.set(name, owner);
158
+ };
159
+ for (const [scope, helpers] of Object.entries(names.scopes)) for (const name of Object.values(helpers)) claim(name, `scope '${scope}'`);
160
+ for (const [resource, helpers] of Object.entries(names.resources)) {
161
+ const { table: _table, visible: _visible, ...functions } = helpers;
162
+ for (const name of Object.values(functions)) claim(name, `resource '${resource}'`);
163
+ }
164
+ }
165
+ /**
166
+ * The SQL names `policy` and `config` give the generated RLS, frozen. Throws
167
+ * `config_invalid` for a helper name Postgres cannot hold or two sources
168
+ * sharing one.
169
+ */
170
+ function resolveNames(policy, config, options = {}) {
171
+ const rls = config.rls;
172
+ const scopes = scopeList(policy.scopes);
173
+ const resources = [.../* @__PURE__ */ new Set([...listPermissions(policy.vocabulary.permissions).map((leaf) => leaf.resource), ...policy.resources.keys()])];
174
+ const graph = graphPlan(policy);
175
+ const tables = tableNames(rls?.tables) ?? {};
176
+ const rows = rowHelperSet(rls?.rowHelpers, resources);
177
+ const team = scopes.find((scope) => isTeamScope(scope.name));
178
+ const names = {
179
+ schema: options.schema ?? rls?.schema ?? rls?.rbac?.schema ?? "permdock",
180
+ gucPrefix: options.gucPrefix ?? rls?.gucPrefix ?? "app",
181
+ claims: {
182
+ tenant: options.tenantClaim ?? rls?.tenantClaim ?? "tenant_id",
183
+ role: rls?.roleClaim ?? "user_role"
184
+ },
185
+ ...team === void 0 ? {} : { teamScope: team.name },
186
+ scopes: Object.fromEntries(scopes.map((scope) => [scope.name, scopeNames(scope.name)])),
187
+ resources: Object.fromEntries(resources.flatMap((resource) => {
188
+ const entry = resourceNames(resource, {
189
+ table: tables[resource],
190
+ graph: graph.has(resource),
191
+ rows: rows.has(resource),
192
+ fields: rls?.fields !== void 0
193
+ });
194
+ return Object.keys(entry).length === 0 ? [] : [[resource, entry]];
195
+ }))
196
+ };
197
+ checkNames(names);
198
+ return freezeDeep(names);
199
+ }
200
+ //#endregion
201
+ export { permissionHoldersSql as n, permittedUsersHelper as r, resolveNames as t };
@@ -1,4 +1,4 @@
1
- import { t as assertSafeKey } from "./paths-DXSHAMIa.js";
1
+ import { t as assertSafeKey } from "./paths-CUvURzHp.js";
2
2
  //#region src/core/resource-relations.ts
3
3
  /** The edge's group resources with their relation and id column. */
4
4
  function groupEntries(spec) {
@@ -35,8 +35,8 @@ function isComputedRelation(relation) {
35
35
  return relation !== void 0 && !("field" in relation) && !("edge" in relation) && !("principal" in relation);
36
36
  }
37
37
  /**
38
- * The relations whose holders hold `name` on `node`: `name` itself when it
39
- * has a source, then everything it includes, transitively, each once.
38
+ * The relations whose holders hold `name` on `node`: `name` itself when it has
39
+ * a source, then everything it includes, transitively, each once.
40
40
  * `definePermissions` rejects cycles and unknown names, so this terminates.
41
41
  */
42
42
  function expandRelation(node, name) {
@@ -53,12 +53,18 @@ function expandRelation(node, name) {
53
53
  visit(name);
54
54
  return out;
55
55
  }
56
- /** Whether `node` names itself as its parent (nested folders, sub-teams, reporting lines). */
56
+ /**
57
+ * Whether `node` names itself as its parent (nested folders, sub-teams,
58
+ * reporting lines).
59
+ */
57
60
  function isSelfParented(node) {
58
61
  return node?.parent !== void 0 && node.parent.resource === node.name;
59
62
  }
60
63
  const RESOURCE_NAME = /^[A-Za-z][A-Za-z0-9_-]*$/u;
61
- /** Level names ride claims and grant keys (`key@level`), so they stay SQL- and claim-safe. */
64
+ /**
65
+ * Level names ride claims and grant keys (`key@level`), so they stay SQL- and
66
+ * claim-safe.
67
+ */
62
68
  const LEVEL_NAME = /^[a-z][a-z0-9_]*$/u;
63
69
  const EDGE_TABLE = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/u;
64
70
  function restrictedStopsOf(name, option, parent, links) {
@@ -143,7 +149,7 @@ function normaliseMatch(label, match) {
143
149
  for (const column of columns) {
144
150
  assertSafeKey(column, "edge match column");
145
151
  const value = match[column];
146
- if (typeof value !== "string" && typeof value !== "boolean" && !(typeof value === "number" && Number.isFinite(value))) throw new Error(`PermDock: ${label} match '${column}' must be a string, a finite number or a boolean`);
152
+ if (typeof value !== "string" && typeof value !== "boolean" && !(typeof value === "number" && Number.isFinite(value))) throw new TypeError(`PermDock: ${label} match '${column}' must be a string, a finite number or a boolean`);
147
153
  out[column] = value;
148
154
  }
149
155
  return out;
@@ -183,7 +189,10 @@ function normaliseGroups(label, groups) {
183
189
  ...groups.direct === void 0 ? {} : { direct: groups.direct }
184
190
  };
185
191
  }
186
- /** An included relation must exist on the same resource, be tenancy-free and never include itself back. */
192
+ /**
193
+ * An included relation must exist on the same resource, be tenancy-free and
194
+ * never include itself back.
195
+ */
187
196
  function assertIncludes(node) {
188
197
  const state = /* @__PURE__ */ new Map();
189
198
  const visit = (name, path) => {
@@ -210,8 +219,8 @@ function assertGroupTarget(registry, node, relationName, spec, target, targetRel
210
219
  /**
211
220
  * Links and group targets name declared resources and relations. Groups may
212
221
  * nest within one resource (teams in teams) through the same relation, which
213
- * then includes nothing, so SQL can walk it with one bounded recursive query;
214
- * a group cycle across resources is rejected.
222
+ * then includes nothing, so SQL can walk it with one bounded recursive query; a
223
+ * group cycle across resources is rejected.
215
224
  */
216
225
  function assertGraphTargets(registry) {
217
226
  const edges = /* @__PURE__ */ new Map();