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,11 +1,11 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { i as configError, u as usageResult } from "./errors-CWTY6uih.js";
3
- import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
4
- import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
5
- import { C as parseMembershipsFlag, r as HELPERS } from "./shared-BAK8t4Uo.js";
6
- import { f as pgConnector } from "./policies-DP2nqRoF.js";
7
- import { t as FIELD_VIEWS } from "./fields-OYG_JR78.js";
8
- import { n as emptySchema, r as isSchemaKind, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
2
+ import { i as configError, u as usageResult } from "./errors-Vpu6rKHl.js";
3
+ import { s as writeFileEnsuringDir } from "./files-BSjrtIHw.js";
4
+ import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-0WjxIp9g.js";
5
+ import { C as parseMembershipsFlag, r as HELPERS } from "./shared-Afctg7B0.js";
6
+ import { n as pgConnector } from "./pg-DQTqRrou.js";
7
+ import { t as FIELD_VIEWS } from "./fields-D0vUI6dq.js";
8
+ import { n as emptySchema, r as isSchemaKind, t as emitPermissionsModule } from "./generate-CezbCaTI.js";
9
9
  import { existsSync, readFileSync } from "node:fs";
10
10
  import { resolve } from "node:path";
11
11
  import { createHash } from "node:crypto";
@@ -42,7 +42,10 @@ function funcName(value) {
42
42
  if (!Array.isArray(names) || names.length === 0) return;
43
43
  return names.map((item) => stringVal(item) ?? "").join(".");
44
44
  }
45
- /** The expression of a scalar `(select <expr>)`, the InitPlan form generate writes. */
45
+ /**
46
+ * The expression of a scalar `(select <expr>)`, the InitPlan form generate
47
+ * writes.
48
+ */
46
49
  function scalarSubselect(value) {
47
50
  const targets = asNode$1(asNode$1(asNode$1(asNode$1(unwrap(value))?.["SubLink"])?.["subselect"])?.["SelectStmt"])?.["targetList"];
48
51
  if (!Array.isArray(targets) || targets[0] === void 0) return;
@@ -175,7 +178,7 @@ async function fingerprintSql(sql) {
175
178
  const deparsed = await deparse(parsed);
176
179
  return createHash("sha256").update(deparsed).digest("hex").slice(0, 16);
177
180
  } catch {
178
- return createHash("sha256").update(sql.replaceAll(/\s+/g, " ").trim().toLowerCase()).digest("hex").slice(0, 16);
181
+ return createHash("sha256").update(sql.replaceAll(/\s+/gu, " ").trim().toLowerCase()).digest("hex").slice(0, 16);
179
182
  }
180
183
  }
181
184
  function nodeStmt(first) {
@@ -192,7 +195,10 @@ function jwtClaim(value) {
192
195
  const claim = constValue(expr["rexpr"]);
193
196
  return typeof claim === "string" ? claim : void 0;
194
197
  }
195
- /** `auth.jwt()` / `auth.session()`, bare or as a scalar `(select …)`; a column's `->>` is row data, not a claim. */
198
+ /**
199
+ * `auth.jwt()` / `auth.session()`, bare or as a scalar `(select …)`; a column's
200
+ * `->>` is row data, not a claim.
201
+ */
196
202
  function isJwtCall(value) {
197
203
  const inner = scalarSubselect(value);
198
204
  if (inner !== void 0) return isJwtCall(inner);
@@ -203,20 +209,15 @@ function isJwtCall(value) {
203
209
  //#region src/cli/rls/import-membership.ts
204
210
  /**
205
211
  * What the `where` of a membership subquery on `table` says, or `undefined`
206
- * when any part of it cannot be read as one. A subquery imports as
207
- * `memberOf` only when it binds the membership row to the signed-in user
208
- * and to the policy row, and filters roles with string literals at most:
209
- * a predicate left unread would widen the imported condition.
212
+ * when any part of it cannot be read as one. A subquery imports as `memberOf`
213
+ * only when it binds the membership row to the signed-in user and to the policy
214
+ * row, and filters roles with string literals at most: a predicate left unread
215
+ * would widen the imported condition.
210
216
  */
211
217
  function membershipRoles(subquery, table) {
212
218
  const where = selectWhere(subquery.select);
213
219
  if (where === void 0) return;
214
- const scopeColumns = new Set([
215
- ...Object.values(table.columns ?? {}),
216
- table.tenant,
217
- table.team,
218
- table.id
219
- ].filter((column) => column !== void 0));
220
+ const scopeColumns = new Set([...Object.values(table.columns ?? {}), table.id].filter((column) => column !== void 0));
220
221
  if (subquery.field !== void 0 && !scopeColumns.has(selectTarget(subquery.select) ?? "")) return;
221
222
  const roleColumn = typeof table.role === "string" ? table.role : void 0;
222
223
  const roles = [];
@@ -393,7 +394,10 @@ function helperCall(value) {
393
394
  } : void 0;
394
395
  }
395
396
  const MEMBER = /^member_([a-z][a-z0-9_]*)_ids$/u;
396
- /** `col in (select member_<scope>_ids())`: any live membership of the row's instance. */
397
+ /**
398
+ * `col in (select member_<scope>_ids())`: any live membership of the row's
399
+ * instance.
400
+ */
397
401
  function memberCall(value) {
398
402
  const sub = asNode$1(asNode$1(unwrap(value))?.["SubLink"]);
399
403
  const kind = sub?.["subLinkType"];
@@ -442,8 +446,8 @@ function helperCalls(conjunct) {
442
446
  /**
443
447
  * The role structure of a policy that calls the helpers: each OR branch's
444
448
  * helper calls become grants (roles from the `role_permissions` seeds), the
445
- * branch's other conjuncts become their `where`. Restrictive policies are
446
- * read through their outer `not`.
449
+ * branch's other conjuncts become their `where`. Restrictive policies are read
450
+ * through their outer `not`.
447
451
  */
448
452
  async function helperGrants(sql, memberships, functions, seeds) {
449
453
  if (sql === void 0) return [];
@@ -480,10 +484,10 @@ async function helperGrants(sql, memberships, functions, seeds) {
480
484
  else rest.push(mapped);
481
485
  }
482
486
  if (calls.length === 0) continue;
483
- const condition = !portable ? unportable : rest.length === 0 ? void 0 : rest.length === 1 ? rest[0] : {
487
+ const condition = portable ? rest.length === 0 ? void 0 : rest.length === 1 ? rest[0] : {
484
488
  op: "and",
485
489
  conditions: rest
486
- };
490
+ } : unportable;
487
491
  for (const call of calls) {
488
492
  const permission = seeds.find((seed) => seed.grantKey === call.key)?.permission ?? call.key.replace(/#[a-z0-9][a-z0-9_-]*$/u, "");
489
493
  grants.push({
@@ -543,10 +547,7 @@ function mapNode(value, ctx) {
543
547
  const subquery = membershipSubquery(node);
544
548
  if (subquery !== void 0) {
545
549
  const { table } = subquery;
546
- const mappedScopes = Object.entries(memberships?.scopes ?? {});
547
- if (memberships?.tenant !== void 0) mappedScopes.push(["tenant", memberships.tenant]);
548
- if (memberships?.team !== void 0) mappedScopes.push(["team", memberships.team]);
549
- const matches = mappedScopes.filter(([, mapped]) => mapped.table === table);
550
+ const matches = Object.entries(memberships?.scopes ?? {}).filter(([, mapped]) => mapped.table === table);
550
551
  if (matches.length > 0) {
551
552
  for (const [scope, mapped] of matches) {
552
553
  const read = membershipRoles(subquery, mapped);
@@ -631,7 +632,10 @@ function seedFromRow(row) {
631
632
  effect: row["effect"] === "deny" ? "deny" : "allow"
632
633
  };
633
634
  }
634
- /** `role_permissions` rows from the `insert ... values` statements of a SQL dump. */
635
+ /**
636
+ * `role_permissions` rows from the `insert ... values` statements of a SQL
637
+ * dump.
638
+ */
635
639
  async function seedsFromSql(sql) {
636
640
  let parsed;
637
641
  try {
@@ -754,7 +758,10 @@ function sourceOf(select) {
754
758
  companion: right
755
759
  };
756
760
  }
757
- /** A mask is `allow`, `not deny` or `allow and not deny`; the generator puts the deny last. */
761
+ /**
762
+ * A mask is `allow`, `not deny` or `allow and not deny`; the generator puts the
763
+ * deny last.
764
+ */
758
765
  function splitMask(mask) {
759
766
  const bool = asNode(asNode(mask)?.["BoolExpr"]);
760
767
  if (bool?.["boolop"] === "NOT_EXPR") return { deny: list(bool["args"])[0] };
@@ -778,9 +785,9 @@ async function grantsOf(node, memberships, functions, seeds) {
778
785
  }
779
786
  /**
780
787
  * Reads back the field views `rls generate --fields views` writes: a
781
- * `security_invoker` `<table>_visible` whose restricted columns are
782
- * `case when <mask> then col end`, either inline or through the
783
- * `<table>_visible_fields` companion it joins. Other views are ignored.
788
+ * `security_invoker` `<table>_visible` whose restricted columns are `case when
789
+ * <mask> then col end`, either inline or through the `<table>_visible_fields`
790
+ * companion it joins. Other views are ignored.
784
791
  */
785
792
  async function fieldViewsFromSql(sql, memberships, functions, seeds) {
786
793
  let stmts;
@@ -830,7 +837,10 @@ async function fieldViewsFromSql(sql, memberships, functions, seeds) {
830
837
  return out;
831
838
  }
832
839
  const quote = escapeSqlIdent;
833
- /** `create view` statements for every view in the database, from `pg_get_viewdef` and the view's options. */
840
+ /**
841
+ * `create view` statements for every view in the database, from
842
+ * `pg_get_viewdef` and the view's options.
843
+ */
834
844
  async function viewsSqlFromDb(query) {
835
845
  return (await query(`select n.nspname as schema, c.relname as name, c.reloptions as options, pg_get_viewdef(c.oid) as definition
836
846
  from pg_class c join pg_namespace n on n.oid = c.relnamespace
@@ -845,9 +855,9 @@ async function viewsSqlFromDb(query) {
845
855
  }
846
856
  //#endregion
847
857
  //#region src/cli/rls/import.ts
848
- const POLICY_RE = /create\s+policy\s+"?([A-Za-z0-9_]+)"?\s+on\s+"?([A-Za-z0-9_]+)"?([\s\S]*?);/gi;
858
+ const POLICY_RE = /create\s+policy\s+"?([A-Za-z0-9_]+)"?\s+on\s+"?([A-Za-z0-9_]+)"?([\s\S]*?);/giu;
849
859
  function extractParenClause(sql, keyword) {
850
- const match = new RegExp(`\\b${keyword}\\s*\\(`, "i").exec(sql);
860
+ const match = new RegExp(`\\b${keyword}\\s*\\(`, "iu").exec(sql);
851
861
  if (match?.index === void 0) return;
852
862
  const start = match.index + match[0].length;
853
863
  let depth = 1;
@@ -866,11 +876,11 @@ function splitPolicies(sql) {
866
876
  const name = match[1] ?? "policy";
867
877
  const table = match[2] ?? "table";
868
878
  const body = match[3] ?? "";
869
- const clauses = body.search(/\b(?:using|with\s+check)\s*\(/i);
879
+ const clauses = body.search(/\b(?:using|with\s+check)\s*\(/iu);
870
880
  const header = clauses === -1 ? body : body.slice(0, clauses);
871
- const asRestrictive = /\bas\s+restrictive\b/i.test(header);
872
- const cmdMatch = /\bfor\s+(all|select|insert|update|delete)\b/i.exec(header);
873
- const toMatch = /\bto\s+([^\n]+)/i.exec(header);
881
+ const asRestrictive = /\bas\s+restrictive\b/iu.test(header);
882
+ const cmdMatch = /\bfor\s+(all|select|insert|update|delete)\b/iu.exec(header);
883
+ const toMatch = /\bto\s+([^\n]+)/iu.exec(header);
874
884
  const using = extractParenClause(body, "using");
875
885
  const check = extractParenClause(body, "with\\s+check");
876
886
  const roles = (toMatch?.[1] ?? "authenticated").split(",").map((item) => item.trim()).filter((item) => item !== "");
@@ -922,7 +932,7 @@ function emitGenerated(catalog, fieldViews, schema) {
922
932
  resources: tables.map((table) => {
923
933
  const { actions, collection } = actionsFor(catalog.filter((item) => item.table === table).map((item) => item.cmd));
924
934
  return {
925
- path: [table.replaceAll(/[^A-Za-z0-9_]/g, "_")],
935
+ path: [table.replaceAll(/[^A-Za-z0-9_]/gu, "_")],
926
936
  schema: emptySchema(kind),
927
937
  actions,
928
938
  collection
@@ -931,7 +941,7 @@ function emitGenerated(catalog, fieldViews, schema) {
931
941
  });
932
942
  }
933
943
  function assertNoServiceRole(sql) {
934
- if (/\bto\s+service_role\b|\bfrom\s+service_role\b/i.test(sql)) throw configError("PermDock CLI: imported SQL must never target service_role");
944
+ if (/\bto\s+service_role\b|\bfrom\s+service_role\b/iu.test(sql)) throw configError("PermDock CLI: imported SQL must never target service_role");
935
945
  }
936
946
  async function seedsFromDb(query) {
937
947
  const schema = (await query(`select table_schema from information_schema.tables where table_name = 'role_permissions' order by table_schema = 'permdock' desc, table_schema = 'public' desc, table_schema limit 1`)).rows[0]?.["table_schema"];
@@ -945,10 +955,13 @@ async function seedsFromDb(query) {
945
955
  return [];
946
956
  }
947
957
  }
948
- /** `pg_policies.roles` is a `name[]`, which `pg` returns as an array or, untyped, as `{a,b}`. */
958
+ /**
959
+ * `pg_policies.roles` is a `name[]`, which `pg` returns as an array or,
960
+ * untyped, as `{a,b}`.
961
+ */
949
962
  function policyRoles(value) {
950
963
  if (Array.isArray(value)) return value.map(String);
951
- return typeof value === "string" ? value.replaceAll(/[{}]/g, "").split(",").map((item) => item.trim()).filter((item) => item !== "") : [];
964
+ return typeof value === "string" ? value.replaceAll(/[{}]/gu, "").split(",").map((item) => item.trim()).filter((item) => item !== "") : [];
952
965
  }
953
966
  async function policiesFromDb(db, connect) {
954
967
  const client = await connect(db);
@@ -1011,7 +1024,11 @@ async function runRlsImport(input) {
1011
1024
  seeds = await seedsFromSql(sql);
1012
1025
  policies = splitPolicies(await canonicalDump(sql) ?? sql);
1013
1026
  if (policies.length === 0) policies = splitPolicies(sql);
1014
- } else if (input.db !== void 0) try {
1027
+ } else if (input.db === void 0) return {
1028
+ code: 2,
1029
+ output: "PermDock CLI: rls import needs --sql <file> or a database: --db-url-stdin, DATABASE_URL or SUPABASE_DB_URL"
1030
+ };
1031
+ else try {
1015
1032
  const fromDb = await policiesFromDb(input.db, input.connect ?? pgConnector("permdock rls import --db-url-stdin", input.cwd));
1016
1033
  policies = fromDb.policies;
1017
1034
  bodies = fromDb.bodies;
@@ -1020,10 +1037,6 @@ async function runRlsImport(input) {
1020
1037
  } catch (cause) {
1021
1038
  return usageResult(cause);
1022
1039
  }
1023
- else return {
1024
- code: 2,
1025
- output: "PermDock CLI: rls import needs --sql <file> or a database: --db-url-stdin, DATABASE_URL or SUPABASE_DB_URL"
1026
- };
1027
1040
  const memberships = parseMembershipsFlag(input.memberships) ?? input.config.rls?.memberships;
1028
1041
  const roleValues = input.config.rls?.roleValues;
1029
1042
  if (roleValues !== void 0) seeds = seeds.map((row) => {
@@ -1070,7 +1083,7 @@ function fieldViewHint(view) {
1070
1083
  return `field view ${view.view} over ${view.table}: ${view.restricted.map((item) => item.column).join(", ")} are field-limited; set fields on the read grants that list them (fieldViews export)`;
1071
1084
  }
1072
1085
  function membershipHint(table) {
1073
- return [`exists over ${table} stayed opaque; if it holds memberships, map it in permdock.config.ts:`, `// rls: { memberships: { tenant: { table: '${table}', user: 'user_id', tenant: 'tenant_id', role: 'role' } } }`].join("\n");
1086
+ return [`exists over ${table} stayed opaque; if it holds memberships, map it in permdock.config.ts:`, `// rls: { memberships: { scopes: { tenant: { table: '${table}', user: 'user_id', columns: { tenant: 'tenant_id' }, role: 'role' } } } }`].join("\n");
1074
1087
  }
1075
1088
  function uniqueHints(names, bodies) {
1076
1089
  const lines = [];
@@ -1,10 +1,10 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { t as byCodePoint } from "./compare-pfyVnBjE.js";
3
- import { i as readJsonFile } from "./files-D_JIzUrP.js";
4
- import { t as applyFiles } from "./files-C5ZI27eV.js";
5
- import { n as httpRequest } from "./http-DXJ37RDA.js";
6
- import { i as schemaExpression, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
7
- import { t as validateOpenapi } from "./schema-yLuBWWsh.js";
2
+ import { t as byCodePoint } from "./compare-DTfyUunF.js";
3
+ import { i as readJsonFile } from "./files-BSjrtIHw.js";
4
+ import { t as applyFiles } from "./files-B3AA05f1.js";
5
+ import { n as httpRequest } from "./http-DOL33cO0.js";
6
+ import { i as schemaExpression, t as emitPermissionsModule } from "./generate-CezbCaTI.js";
7
+ import { t as validateOpenapi } from "./schema-Dst9I9Gs.js";
8
8
  import { existsSync, readFileSync } from "node:fs";
9
9
  import { resolve } from "node:path";
10
10
  //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/browser/dist/nodes/identity.js
@@ -1,9 +1,8 @@
1
- import { Ct as Credential, Nn as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, ar as Subject, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, j as PolicyVocabulary, lt as TokenFailureCause, q as DecisionSink, qt as AuthEvent, rr as Principal, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
2
- import { E as PermissionTree, w as Permission } from "./vocabulary-CN8H_9UF.js";
3
- import { p as PrincipalSource } from "./permdock-SV8ZINYT.js";
4
- import { t as Disclosure } from "./problem-details-B45V5d2b.js";
5
- import { a as ProblemDetails, t as ApprovalHint } from "./errors-DH5QEGXh.js";
6
- import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-CKQiCnON.js";
1
+ import { Ct as Credential, Ln as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, Zt as AuthEvent, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, j as PolicyVocabulary, lr as Subject, lt as TokenFailureCause, q as DecisionSink, sr as Principal, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
2
+ import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
3
+ import { _ as PrincipalSource } from "./permdock-B6Sf4T_S.js";
4
+ import { a as ProblemDetails, s as Disclosure, t as ApprovalHint } from "./errors-zi_4T-rx.js";
5
+ import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-CIlpSA2G.js";
7
6
  //#region src/server/create.d.ts
8
7
  /**
9
8
  * The Fetch factory behind every HTTP adapter. The subject and actor are
@@ -21,9 +20,9 @@ type ProblemFromErrorOptions = {
21
20
  };
22
21
  /**
23
22
  * Turns a thrown PermDock error into its Problem Details response, with the
24
- * status, `WWW-Authenticate` and rate-limit fields `protect` sends for the
25
- * same decision. Returns `undefined` for anything else so the framework's own
26
- * error path takes over.
23
+ * status, `WWW-Authenticate` and rate-limit fields `protect` sends for the same
24
+ * decision. Returns `undefined` for anything else so the framework's own error
25
+ * path takes over.
27
26
  */
28
27
  declare function problemFromError(error: unknown, options?: ProblemFromErrorOptions): Response | undefined;
29
28
  //#endregion
@@ -35,7 +34,10 @@ type ApiKeyParts = {
35
34
  readonly id: string;
36
35
  readonly secret: string;
37
36
  };
38
- /** What an application stores per key: the credential and the key's hash, never the key. */
37
+ /**
38
+ * What an application stores per key: the credential and the key's hash, never
39
+ * the key.
40
+ */
39
41
  type StoredCredential = {
40
42
  readonly credential: Credential;
41
43
  readonly hash: string;
@@ -43,19 +45,19 @@ type StoredCredential = {
43
45
  /**
44
46
  * Splits `pdk_<id>_<secret><checksum>`: `id` is 1 to 128 of `A-Z a-z 0-9 _ -`,
45
47
  * the secret 43 base62 characters and the checksum the 6 base62 characters of
46
- * the CRC-32 of everything before it. Anything else, including a checksum
47
- * that does not match, is `undefined`.
48
+ * the CRC-32 of everything before it. Anything else, including a checksum that
49
+ * does not match, is `undefined`.
48
50
  */
49
51
  declare function parseApiKey(key: unknown): ApiKeyParts | undefined;
50
52
  /**
51
- * Splits `pdfeed_<id>_<secret><checksum>`. `id` is `isFeedId`, the secret is
52
- * 26 lowercase base32 characters and the checksum is 6 more. A checksum that
53
- * does not match is `undefined`.
53
+ * Splits `pdfeed_<id>_<secret><checksum>`. `id` is `isFeedId`, the secret is 26
54
+ * lowercase base32 characters and the checksum is 6 more. A checksum that does
55
+ * not match is `undefined`.
54
56
  */
55
57
  declare function parseFeedKey(key: unknown): ApiKeyParts | undefined;
56
58
  /**
57
- * A fresh `pdfeed_<id>_<secret><checksum>`: 26 lowercase base32 characters
58
- * (130 bits) and a 6-character CRC-32 checksum. The whole key is lowercase.
59
+ * A fresh `pdfeed_<id>_<secret><checksum>`: 26 lowercase base32 characters (130
60
+ * bits) and a 6-character CRC-32 checksum. The whole key is lowercase.
59
61
  */
60
62
  declare function generateFeedKey(id: string): string;
61
63
  /**
@@ -67,11 +69,11 @@ declare function generateApiKey(id: string): string;
67
69
  /** base64url SHA-256 of the whole key, the value to store and compare. */
68
70
  declare function hashApiKey(key: string): Promise<string>;
69
71
  /**
70
- * A `CredentialVerifier` over the application's own table: `find` looks a
71
- * key up by the id in it, and the key's hash is compared in constant time.
72
- * A record that is not a valid v1 credential, or whose id is not the key's,
73
- * verifies to `null`. A throwing `find` propagates, so the resolver denies
74
- * with `source-threw`.
72
+ * A `CredentialVerifier` over the application's own table: `find` looks a key
73
+ * up by the id in it, and the key's hash is compared in constant time. A record
74
+ * that is not a valid v1 credential, or whose id is not the key's, verifies to
75
+ * `null`. A throwing `find` propagates, so the resolver denies with
76
+ * `source-threw`.
75
77
  */
76
78
  declare function apiKeyVerifier(options: {
77
79
  readonly find: (id: string) => StoredCredential | null | undefined | Promise<StoredCredential | null | undefined>;
@@ -80,14 +82,14 @@ declare function apiKeyVerifier(options: {
80
82
  }): CredentialVerifier;
81
83
  type MemoryCredentialStore = CredentialVerifier & {
82
84
  /** Stores `credential` and returns its key; the key is never stored. */
83
- issue(credential: Credential): Promise<string>;
85
+ issue: (credential: Credential) => Promise<string>;
84
86
  /** A new secret for the same id; the old key stops verifying at once. */
85
- rotate(id: string): Promise<string | undefined>;
87
+ rotate: (id: string) => Promise<string | undefined>;
86
88
  /** `true` when a credential was removed. */
87
- revoke(id: string): boolean;
88
- list(): readonly Credential[];
89
+ revoke: (id: string) => boolean;
90
+ list: () => readonly Credential[];
89
91
  /** When `touch` last recorded a use of `id`, as RFC 3339. */
90
- lastUsedAt(id: string): string | undefined;
92
+ lastUsedAt: (id: string) => string | undefined;
91
93
  };
92
94
  /**
93
95
  * In-process credentials for tests and single-replica apps. `issue`, `rotate`
@@ -99,24 +101,30 @@ declare function memoryCredentialStore(options?: {
99
101
  }): MemoryCredentialStore;
100
102
  type ApiKeySubjectOptions = {
101
103
  readonly verifier: CredentialVerifier;
102
- /** The definitions, to turn the credential's permission keys into its delegation. */
104
+ /**
105
+ * The definitions, to turn the credential's permission keys into its
106
+ * delegation.
107
+ */
103
108
  readonly permissions: PermissionTree;
104
109
  /**
105
- * Loads the live owner of a user-bound key: roles and memberships as of
106
- * this request, asked with the key's tenant. `null` (a deleted or
107
- * suspended user) is anonymous with `owner-unavailable`, and a throw is
108
- * `source-threw`. Without it the owner is `{ id, kind: 'user' }` and its
109
- * rights come from the `memberships` source passed to `createPermDock`.
110
+ * Loads the live owner of a user-bound key: roles and memberships as of this
111
+ * request, asked with the key's tenant. `null` (a deleted or suspended user)
112
+ * is anonymous with `owner-unavailable`, and a throw is `source-threw`.
113
+ * Without it the owner is `{ id, kind: 'user' }` and its rights come from the
114
+ * `memberships` source passed to `createPermDock`.
110
115
  */
111
116
  readonly principals?: PrincipalSource;
112
- /** The tenant the request acts in: a user key is held to its owner's memberships there. */
117
+ /**
118
+ * The tenant the request acts in: a user key is held to its owner's
119
+ * memberships there.
120
+ */
113
121
  readonly tenant?: string;
114
122
  /** `true` when the application revoked the credential id; a throw denies. */
115
123
  readonly revoked?: (id: string) => boolean | Promise<boolean>;
116
124
  /**
117
- * The tenant `credentials` policy, checked on every use so a tightened
118
- * policy reaches existing keys: a service key's own tenant, a user key's
119
- * the `tenant` the resolver is called with. A throw denies.
125
+ * The tenant `credentials` policy, checked on every use so a tightened policy
126
+ * reaches existing keys: a service key's own tenant, a user key's the
127
+ * `tenant` the resolver is called with. A throw denies.
120
128
  */
121
129
  readonly settings?: SettingsSource;
122
130
  /** Receives a `credential` event with operation `used` for sampled uses. */
@@ -132,10 +140,10 @@ type ApiKeySubjectOptions = {
132
140
  };
133
141
  /**
134
142
  * Resolves an opaque API key (`pdk_<id>_<secret>`) into the subject its
135
- * credential acts as. Every failure (a malformed or unknown key, a record
136
- * that is not a valid credential, expiry, a tenant policy the key breaks, a
137
- * revoked id, a missing owner, a throwing verifier, source or callback) is
138
- * the anonymous subject, never a throw.
143
+ * credential acts as. Every failure (a malformed or unknown key, a record that
144
+ * is not a valid credential, expiry, a tenant policy the key breaks, a revoked
145
+ * id, a missing owner, a throwing verifier, source or callback) is the
146
+ * anonymous subject, never a throw.
139
147
  */
140
148
  declare function subjectFromApiKey(key: string | undefined | null, options: ApiKeySubjectOptions): Promise<Subject<ApiKeyPrincipal>>;
141
149
  //#endregion
@@ -145,7 +153,7 @@ type SupportSessionFailureCause = TokenFailureCause | "invalid-claims" | "sessio
145
153
  /** The live state of each support session, so one can end before it expires. */
146
154
  type SupportSessionSource = {
147
155
  /** The session as of now, or `null` for an unknown one. A throw ends it. */
148
- session(id: string): {
156
+ session: (id: string) => {
149
157
  readonly id: string;
150
158
  readonly ended?: boolean;
151
159
  } | null | Promise<{
@@ -176,19 +184,19 @@ type SupportSessionContext = {
176
184
  };
177
185
  /**
178
186
  * Signs a granted `SupportSession` as a `vnd.permdock.support-session+jwt`
179
- * (`sub` the viewed principal, `act` the support actor, `jti` the session
180
- * id) that expires with the session. Throws a `TypeError` for a record
187
+ * (`sub` the viewed principal, `act` the support actor, `jti` the session id)
188
+ * that expires with the session. Throws a `TypeError` for a record
181
189
  * `parseSupportSession` refuses.
182
190
  */
183
191
  declare function signSupportSession(session: SupportSession, signer: TokenSigner, options?: {
184
192
  readonly audience?: string | readonly string[];
185
193
  }): Promise<string>;
186
194
  /**
187
- * Resolves a `vnd.permdock.support-session+jwt` into the subject each
188
- * request of the session acts as: the viewed principal loaded live, a
189
- * `support` actor, the session's permissions as the delegation and
190
- * `context.supportSession`. The actor must still exist. Every failure is the
191
- * anonymous subject, never a throw.
195
+ * Resolves a `vnd.permdock.support-session+jwt` into the subject each request
196
+ * of the session acts as: the viewed principal loaded live, a `support` actor,
197
+ * the session's permissions as the delegation and `context.supportSession`. The
198
+ * actor must still exist. Every failure is the anonymous subject, never a
199
+ * throw.
192
200
  */
193
201
  declare function subjectFromSupportSession(token: string | undefined | null, options: SupportSessionSubjectOptions): Promise<Subject>;
194
202
  //#endregion
@@ -196,15 +204,19 @@ declare function subjectFromSupportSession(token: string | undefined | null, opt
196
204
  declare function wwwAuthenticate(decision: Decision, permission: Permission | undefined, credentials?: boolean): string | undefined;
197
205
  declare function problemResponse(details: ProblemDetails, permission?: Permission, decision?: Decision, extra?: Readonly<Record<string, string>>, credentials?: boolean): Response;
198
206
  declare function validationProblem(detail: string): Response;
199
- declare function problemFromDecision(decision: Decision, permission: Permission, subject: Subject | undefined, options?: {
207
+ type DecisionProblemOptions = {
200
208
  readonly instance?: string;
201
209
  readonly approval?: ApprovalHint;
202
210
  /** `'hide'` on a loaded row: a denial answers as `404` `/not-found`. */
203
211
  readonly disclosure?: Disclosure;
204
212
  /** Whether the request carried credentials, which picks the `401` challenge. */
205
213
  readonly credentials?: boolean;
206
- /** The scope an `insufficient_scope` challenge names; the permission's own scope when absent. */
214
+ /**
215
+ * The scope an `insufficient_scope` challenge names; the permission's own
216
+ * scope when absent.
217
+ */
207
218
  readonly scope?: string;
208
- }): Response;
219
+ };
220
+ declare function problemFromDecision(decision: Decision, permission: Permission, subject: Subject | undefined, options?: DecisionProblemOptions): Response;
209
221
  //#endregion
210
222
  export { subjectFromApiKey as C, createPermDock as E, parseFeedKey as S, problemFromError as T, generateApiKey as _, SupportSessionContext as a, memoryCredentialStore as b, SupportSessionSubjectOptions as c, ApiKeyFailureCause as d, ApiKeyParts as f, apiKeyVerifier as g, StoredCredential as h, wwwAuthenticate as i, signSupportSession as l, MemoryCredentialStore as m, problemResponse as n, SupportSessionFailureCause as o, ApiKeySubjectOptions as p, validationProblem as r, SupportSessionSource as s, problemFromDecision as t, subjectFromSupportSession as u, generateFeedKey as v, ProblemFromErrorOptions as w, parseApiKey as x, hashApiKey as y };