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
@@ -0,0 +1,107 @@
1
+ import { c as listPermissions } from "./permission-registry-B8tYxPIt.js";
2
+ import { i as configError } from "./errors-Vpu6rKHl.js";
3
+ import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
4
+ import { i as isModuleKey, n as MODULE_KEYS } from "./config-shape-ykV0Vm2n.js";
5
+ import { existsSync, readFileSync, statSync } from "node:fs";
6
+ import { dirname, relative, resolve } from "node:path";
7
+ import { parseSync } from "oxc-parser";
8
+ //#region src/cli/project/module-values.ts
9
+ /** The export each module key is read from, as `load.ts` reads it. */
10
+ const EXPORT_OF = {
11
+ policy: "policy",
12
+ permissions: "permissions",
13
+ operations: "operations"
14
+ };
15
+ const EXTENSIONS = [
16
+ ".ts",
17
+ ".tsx",
18
+ ".mts",
19
+ ".js",
20
+ ".mjs",
21
+ ".jsx"
22
+ ];
23
+ function isFile(path) {
24
+ return existsSync(path) && statSync(path).isFile();
25
+ }
26
+ /** A relative specifier resolved the way a TypeScript bundler resolves it. */
27
+ function resolveRelative(from, specifier) {
28
+ const base = resolve(dirname(from), specifier);
29
+ return [
30
+ base,
31
+ base.replace(/\.js$/u, ".ts").replace(/\.mjs$/u, ".mts"),
32
+ ...EXTENSIONS.map((extension) => `${base}${extension}`),
33
+ ...EXTENSIONS.map((extension) => resolve(base, `index${extension}`))
34
+ ].find(isFile);
35
+ }
36
+ function relativeImports(file) {
37
+ const parsed = parseSync(file, readFileSync(file, "utf8"));
38
+ return [...new Set(parsed.module.staticImports.map((entry) => entry.moduleRequest.value).filter((specifier) => specifier.startsWith(".")))];
39
+ }
40
+ function fieldOf(value, key) {
41
+ return Reflect.get(value, key);
42
+ }
43
+ function leafKeys(value) {
44
+ try {
45
+ return listPermissions(asPermissionTree(value)).map((leaf) => leaf.key).toSorted().join(",");
46
+ } catch {
47
+ return "";
48
+ }
49
+ }
50
+ /**
51
+ * Whether `exported` is the value the config passed. A module evaluated twice
52
+ * (once natively, once through jiti, or fresh under `--watch`) yields a second
53
+ * object, so a policy compares by fingerprint and a tree by its leaf keys.
54
+ */
55
+ function sameValue(key, value, exported) {
56
+ if (exported === value) return true;
57
+ if (exported === null || typeof exported !== "object") return false;
58
+ switch (key) {
59
+ case "policy": {
60
+ const fingerprint = fieldOf(value, "fingerprint");
61
+ return typeof fingerprint === "string" && fingerprint === fieldOf(exported, "fingerprint");
62
+ }
63
+ case "permissions": return leafKeys(value) !== "" && leafKeys(value) === leafKeys(exported);
64
+ case "operations": {
65
+ const names = Object.keys(value).toSorted().join(",");
66
+ return names !== "" && names === Object.keys(exported).toSorted().join(",");
67
+ }
68
+ default: return key;
69
+ }
70
+ }
71
+ /**
72
+ * The module path, relative to `cwd`, of the module the config file imports
73
+ * `value` from as its `policy`, `permissions` or `operations` export.
74
+ */
75
+ async function traceModuleValue(input) {
76
+ const name = EXPORT_OF[input.key];
77
+ for (const specifier of relativeImports(input.file)) {
78
+ const abs = resolveRelative(input.file, specifier);
79
+ if (abs === void 0) continue;
80
+ const mod = await loadModule(abs, input.options).catch(() => void 0);
81
+ if (mod !== void 0 && sameValue(input.key, input.value, pickNamed(mod, [name]))) {
82
+ const path = relative(input.cwd, abs).replaceAll("\\", "/");
83
+ return path.startsWith(".") ? path : `./${path}`;
84
+ }
85
+ }
86
+ throw configError(`PermDock CLI: ${input.display}: ${input.key} is a value no relative import of the config exports as '${name}' or default; import it from its module, or set ${input.key} to the module path`);
87
+ }
88
+ /**
89
+ * `config` with each `policy`, `permissions` or `operations` value replaced by
90
+ * the path of the module the config file imports it from, so every command
91
+ * reads one form.
92
+ */
93
+ async function traceModuleValues(input) {
94
+ const traced = { ...input.config };
95
+ for (const key of Object.keys(MODULE_KEYS)) {
96
+ const value = input.config[key];
97
+ if (!isModuleKey(key) || value === null || typeof value !== "object") continue;
98
+ traced[key] = await traceModuleValue({
99
+ ...input,
100
+ key,
101
+ value
102
+ });
103
+ }
104
+ return traced;
105
+ }
106
+ //#endregion
107
+ export { traceModuleValues };
@@ -1,15 +1,16 @@
1
- import { T as Policy, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
5
- import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
6
- import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
1
+ import { T as Policy, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
4
+ import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CIlpSA2G.js";
6
+ import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
7
7
  import { r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
8
8
  import { CanActivate, DynamicModule, ExceptionFilter, ExecutionContext, Type } from "@nestjs/common";
9
9
  //#region src/nest/http.d.ts
10
10
  /**
11
11
  * `@nestjs/platform-express` hands the guard an `IncomingMessage`;
12
- * `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is `raw`.
12
+ * `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is
13
+ * `raw`.
13
14
  */
14
15
  export declare function toRequest(req: NodeRequest): Request;
15
16
  //#endregion
@@ -30,18 +31,27 @@ type NestPermDockOptions<TUser = unknown> = ServerAdapterOptions<NestRequest, TU
30
31
  };
31
32
  /** A gateway client: Socket.IO (`emit`, `disconnect`) or `ws` (`close`). */
32
33
  type NestSocket = {
33
- emit?(event: string, payload: unknown): unknown;
34
- disconnect?(close?: boolean): unknown;
35
- close?(code?: number, reason?: string): unknown;
34
+ emit?: (event: string, payload: unknown) => unknown;
35
+ disconnect?: (close?: boolean) => unknown;
36
+ close?: (code?: number, reason?: string) => unknown;
36
37
  };
37
- /** `Protect(null, data?, { oauthScopes })` needs a principal and one of the OAuth scopes, but no permission. */
38
+ /**
39
+ * `Protect(null, data?, { oauthScopes })` needs a principal and one of the
40
+ * OAuth scopes, but no permission.
41
+ */
38
42
  type NestProtect = (permission: Permission | null, data?: (req: NestRequest) => unknown, protectOptions?: ProtectOptions) => ClassDecorator & MethodDecorator;
39
43
  type NestHandlerOptions = {
40
- /** Controller path; may hold route params such as `:org`. Default `api/permdock`. */
44
+ /**
45
+ * Controller path; may hold route params such as `:org`. Default
46
+ * `api/permdock`.
47
+ */
41
48
  readonly path?: string;
42
49
  };
43
50
  type PermDockModuleOptions = {
44
- /** `"global"` registers `PermDockGuard` as `APP_GUARD`, so every `Protect` rule runs without `UseGuards`. */
51
+ /**
52
+ * `"global"` registers `PermDockGuard` as `APP_GUARD`, so every `Protect`
53
+ * rule runs without `UseGuards`.
54
+ */
45
55
  readonly guard?: "global";
46
56
  };
47
57
  type NestPermDock = {
@@ -1,12 +1,12 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { n as PermDockValidationError } from "../validation-error-ZfUHbKvf.js";
3
- import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-BKy0EfhN.js";
4
- import { c as writeReply, r as hasCredentials } from "../http-BBoKefeS.js";
5
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
6
- import { t as problemFromError } from "../map-error-Dr70oA_3.js";
7
- import { a as socketConnection, r as bindKernel } from "../bind-CAvgUuKs.js";
8
- import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
9
- import { n as sendResponse, r as toRequest$1, t as isServerResponse } from "../http-ujKm0JXE.js";
2
+ import { n as PermDockValidationError } from "../validation-error-CYg2kJEw.js";
3
+ import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-B6R_lg2a.js";
4
+ import { c as writeReply, r as hasCredentials } from "../http-DKLXrFGk.js";
5
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
6
+ import { t as problemFromError } from "../map-error-pasIGqMT.js";
7
+ import { a as socketConnection, r as bindKernel } from "../bind-D_sZSVA3.js";
8
+ import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CDvF0sJm.js";
9
+ import { n as sendResponse, r as toRequest$1, t as isServerResponse } from "../http-DH94eh6f.js";
10
10
  import { Catch, Controller, Get, Inject, Injectable, Module, Post, Req, Res, createParamDecorator } from "@nestjs/common";
11
11
  import { APP_FILTER, APP_GUARD, Reflector } from "@nestjs/core";
12
12
  //#region src/nest/decorate.ts
@@ -35,7 +35,8 @@ function isFastifyReply(value) {
35
35
  }
36
36
  /**
37
37
  * `@nestjs/platform-express` hands the guard an `IncomingMessage`;
38
- * `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is `raw`.
38
+ * `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is
39
+ * `raw`.
39
40
  */
40
41
  function toRequest(req) {
41
42
  if (isReadable(req)) return toRequest$1(req);
@@ -75,7 +76,10 @@ function applyParameter(cls, key, index, decorator) {
75
76
  function hasEmit(value) {
76
77
  return typeof value === "object" && value !== null && typeof value.emit === "function";
77
78
  }
78
- /** One call per loader for a request, so class and method rules naming the same loader share its row. */
79
+ /**
80
+ * One call per loader for a request, so class and method rules naming the same
81
+ * loader share its row.
82
+ */
79
83
  function loadsFor(req) {
80
84
  const loaded = /* @__PURE__ */ new Map();
81
85
  return (loader) => {
@@ -130,7 +134,10 @@ function createPermDock(policy, options) {
130
134
  });
131
135
  return conn;
132
136
  });
133
- /** Decides each rule for a gateway message against the client's connection, as `protect` does for HTTP. */
137
+ /**
138
+ * Decides each rule for a gateway message against the client's connection, as
139
+ * `protect` does for HTTP.
140
+ */
134
141
  const checkMessage = async (rules, conn, req) => {
135
142
  const request = req === void 0 ? void 0 : bind(req);
136
143
  const load = loadsFor(req);
@@ -1,4 +1,4 @@
1
- import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
1
+ import { t as PermissionBoundaryState } from "../boundary-C9ck-3uK.js";
2
2
  import { ComponentType, ReactNode } from "react";
3
3
  //#region src/next/client.d.ts
4
4
  /** A fallback node, or a function of what was refused. */
@@ -6,7 +6,10 @@ export type PermissionBoundaryFallback = ReactNode | ((state: PermissionBoundary
6
6
  export type PermissionBoundaryProps = {
7
7
  /** Rendered in place of the children when one throws `PermDockDeniedError`. */
8
8
  readonly denied?: PermissionBoundaryFallback;
9
- /** Rendered when a child throws `PermDockApprovalRequiredError`; defaults to `denied`. */
9
+ /**
10
+ * Rendered when a child throws `PermDockApprovalRequiredError`; defaults to
11
+ * `denied`.
12
+ */
10
13
  readonly approval?: PermissionBoundaryFallback;
11
14
  };
12
15
  /**
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
2
+ import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BV3O1eud.js";
3
3
  import { createContext, useContext } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import * as nextError from "next/error.js";
@@ -1,13 +1,15 @@
1
- import { In as DenialReason, Nn as Decision, T as Policy, Vt as Snapshot, ar as Subject, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { m as ApprovalStore } from "../types-BdtSDbBO.js";
5
- import { t as InstanceOptions } from "../instance-options-BsVpyGIk.js";
6
- import { n as PermDockWrap } from "../wrap-C5jC6sKI.js";
7
- import { o as OtelWrap } from "../types-lUlG3TVd.js";
8
- import { n as DescribeMessages } from "../describe-B5qgDvEW.js";
9
- import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-PXI-vGpY.js";
1
+ import { Bn as DenialReason, Gt as Snapshot, Ln as Decision, T as Policy, j as PolicyVocabulary, lr as Subject, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock, d as UncheckedData, s as RowData } from "../permdock-B6Sf4T_S.js";
4
+ import { m as ApprovalStore } from "../types-B_tiYvk8.js";
5
+ import { t as InstanceOptions } from "../instance-options-B0KXqTrJ.js";
6
+ import { n as PermDockWrap } from "../wrap-DlJE3gS_.js";
7
+ import { o as OtelWrap } from "../types-DHKPcqzr.js";
8
+ import { n as DescribeMessages } from "../describe-ByS9LgHK.js";
9
+ import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-BAXZ0KOp.js";
10
+ import { n as ProtectedAction, t as ActionResult } from "../action-result-CL-QCITA.js";
10
11
  import { ReactElement, ReactNode } from "react";
12
+ import { StandardSchemaV1 } from "@standard-schema/spec";
11
13
  //#region src/next/types.d.ts
12
14
  type NextSubjectInput = unknown;
13
15
  type NextPermDockOptions<TUser = NextSubjectInput> = InstanceOptions & {
@@ -18,12 +20,15 @@ type NextPermDockOptions<TUser = NextSubjectInput> = InstanceOptions & {
18
20
  readonly store?: ApprovalStore;
19
21
  /** `(permdock) => withOtel(permdock, options)` from `permdock/otel`. */
20
22
  readonly otel?: OtelWrap;
21
- /** Wraps each instance after `otel`; build it with `wrapPermDock` to cover derived instances. */
23
+ /**
24
+ * Wraps each instance after `otel`; build it with `wrapPermDock` to cover
25
+ * derived instances.
26
+ */
22
27
  readonly wrap?: PermDockWrap;
23
28
  /**
24
- * Where `PermDockProvider` sends checks the snapshot cannot answer; default `/api/permdock`.
25
- * `false` is snapshot-only: no `permdockHandler` route, and those checks are denied with
26
- * reason `server-only`.
29
+ * Where `PermDockProvider` sends checks the snapshot cannot answer; default
30
+ * `/api/permdock`. `false` is snapshot-only: no `permdockHandler` route, and
31
+ * those checks are denied with reason `server-only`.
27
32
  */
28
33
  readonly endpoint?: string | false;
29
34
  };
@@ -35,7 +40,10 @@ type GetSnapshotQuery = GetPermDockQuery & {
35
40
  readonly [key: string]: unknown;
36
41
  })[];
37
42
  readonly tenants?: "all";
38
- /** Tags added next to `snapshotTag(sub)`, such as the app's own organisation tag. */
43
+ /**
44
+ * Tags added next to `snapshotTag(sub)`, such as the app's own organisation
45
+ * tag.
46
+ */
39
47
  readonly tags?: readonly string[];
40
48
  };
41
49
  type PermissionRequirementOptions = GetPermDockQuery & {
@@ -59,7 +67,10 @@ type NextPermDockProviderProps = {
59
67
  readonly tenants?: "all";
60
68
  /** Overrides the factory's `endpoint`; `false` is snapshot-only. */
61
69
  readonly endpoint?: string | false;
62
- /** Suspends permission readers until the snapshot streams in, instead of answering `pending`. */
70
+ /**
71
+ * Suspends permission readers until the snapshot streams in, instead of
72
+ * answering `pending`.
73
+ */
63
74
  readonly suspend?: boolean;
64
75
  /**
65
76
  * What every `<Protected>` below renders for a slot it leaves out. Nodes
@@ -79,18 +90,39 @@ type PermDockHandler = {
79
90
  readonly POST: (request: Request) => Promise<Response>;
80
91
  readonly GET: (request: Request) => Promise<Response>;
81
92
  };
93
+ type ProtectActionOptions<TInput, TRow> = {
94
+ /** Validates the action's argument before anything else runs. */
95
+ readonly input: StandardSchemaV1<unknown, TInput>;
96
+ /** The row to decide on; `null` or `undefined` answers `404`. */
97
+ readonly data?: (input: TInput) => TRow | null | undefined | Promise<TRow | null | undefined>;
98
+ /** The tenant to build the instance for; default the factory's `tenant`. */
99
+ readonly tenant?: (input: TInput) => string | undefined;
100
+ };
101
+ type ProtectedActionContext<TRow, V extends PolicyVocabulary> = {
102
+ readonly permdock: PermDock<V>;
103
+ readonly decision: Extract<Decision, {
104
+ readonly outcome: "granted";
105
+ }>;
106
+ /** The loaded row; `undefined` without a `data` loader. */
107
+ readonly data: TRow;
108
+ };
109
+ type ProtectedActionHandler<TInput, TRow, TResult, V extends PolicyVocabulary> = (input: TInput, context: ProtectedActionContext<TRow, V>) => TResult | Promise<TResult>;
110
+ type ProtectAction<V extends PolicyVocabulary> = <TInput, TRow = undefined>(permission: Permission, options: ProtectActionOptions<TInput, TRow>) => <TResult>(handler: ProtectedActionHandler<TInput, TRow, TResult, V>) => ProtectedAction<Awaited<TResult>>;
82
111
  type NextPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
83
112
  readonly getPermDock: (query?: GetPermDockQuery) => Promise<PermDock<V>>;
84
113
  /**
85
- * `{ allowed, status: 'ready', decision }`. Any failure to build the
86
- * instance denies; Next.js interrupts (`redirect()`, `notFound()`,
87
- * request-time bailouts) from `subject` or `tenant` pass through.
114
+ * `{ allowed, status: 'ready', decision }`. Any failure to build the instance
115
+ * denies; Next.js interrupts (`redirect()`, `notFound()`, request-time
116
+ * bailouts) from `subject` or `tenant` pass through.
88
117
  */
89
- readonly getPermission: (permission: Permission, data?: unknown, query?: GetPermDockQuery) => Promise<ServerPermissionState>;
118
+ readonly getPermission: {
119
+ <D>(permission: Permission, data?: UncheckedData<D>, query?: GetPermDockQuery): Promise<ServerPermissionState>;
120
+ <P extends Permission>(permission: P, data?: RowData<P>, query?: GetPermDockQuery): Promise<ServerPermissionState>;
121
+ };
90
122
  /**
91
123
  * The session's snapshot for a `'use cache: private'` function the app owns:
92
- * calls `cacheLife(cacheLifeFor(snapshot))` and `cacheTag(snapshotTag(sub), ...tags)`
93
- * in that scope, and throws outside one.
124
+ * calls `cacheLife(cacheLifeFor(snapshot))` and `cacheTag(snapshotTag(sub),
125
+ * ...tags)` in that scope, and throws outside one.
94
126
  */
95
127
  readonly getSnapshot: (query?: GetSnapshotQuery) => Promise<Snapshot>;
96
128
  /**
@@ -99,15 +131,29 @@ type NextPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
99
131
  * subject and `forbidden()` otherwise (`experimental.authInterrupts`);
100
132
  * approval-required and boundary validation throw as from `assert`.
101
133
  */
102
- readonly requirePermission: (permission: Permission, data?: unknown, options?: PermissionRequirementOptions) => Promise<Extract<Decision, {
103
- readonly outcome: "granted";
104
- }>>;
105
- /** Never awaits: passes an unawaited snapshot to the client provider, whose hooks suspend. */
134
+ readonly requirePermission: {
135
+ <D>(permission: Permission, data?: UncheckedData<D>, options?: PermissionRequirementOptions): Promise<Extract<Decision, {
136
+ readonly outcome: "granted";
137
+ }>>;
138
+ <P extends Permission>(permission: P, data?: RowData<P>, options?: PermissionRequirementOptions): Promise<Extract<Decision, {
139
+ readonly outcome: "granted";
140
+ }>>;
141
+ };
142
+ /**
143
+ * Never awaits: passes an unawaited snapshot to the client provider, whose
144
+ * hooks suspend.
145
+ */
106
146
  readonly PermDockProvider: (props: NextPermDockProviderProps) => ReactElement;
107
147
  readonly permdockHandler: () => PermDockHandler;
148
+ /**
149
+ * Wraps a server action: validates `input`, loads `data`, decides, then runs
150
+ * the handler. Resolves to `{ ok: true, value }` or `{ ok: false, problem }`
151
+ * with RFC 9457 Problem Details; only Next.js interrupts throw.
152
+ */
153
+ readonly protectAction: ProtectAction<V>;
108
154
  };
109
155
  //#endregion
110
156
  //#region src/next/create.d.ts
111
157
  export declare function createPermDock<TUser = NextSubjectInput, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: NextPermDockOptions<TUser>): NextPermDock<V>;
112
158
  //#endregion
113
- export { type CacheLifeForOptions, type GetPermDockQuery, type GetSnapshotQuery, type NextPermDock, type NextPermDockOptions, type NextPermDockProviderProps, type PermDockHandler, type PermissionRequirementOptions, type ServerPermissionState, type SnapshotHeaders, type SnapshotHeadersOptions, cacheLifeFor, snapshotHeaders, snapshotTag };
159
+ export { type ActionResult, type CacheLifeForOptions, type GetPermDockQuery, type GetSnapshotQuery, type NextPermDock, type NextPermDockOptions, type NextPermDockProviderProps, type PermDockHandler, type PermissionRequirementOptions, type ProtectAction, type ProtectActionOptions, type ProtectedAction, type ProtectedActionContext, type ProtectedActionHandler, type ServerPermissionState, type SnapshotHeaders, type SnapshotHeadersOptions, cacheLifeFor, snapshotHeaders, snapshotTag };
@@ -1,15 +1,113 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { c as withApp } from "../permdock-BrAscV28.js";
3
- import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
4
- import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-DZHQ0KF6.js";
5
- import { n as resolveOrNull, t as buildInstance } from "../build-instance-Bu_eDqYw.js";
6
- import { o as evaluationsHandler, v as NO_GRANT } from "../evaluations-beAooV0n.js";
2
+ import { n as PermDockValidationError } from "../validation-error-CYg2kJEw.js";
3
+ import { o as statusProblem, t as notFoundDetails } from "../problem-details-CLDgX1KV.js";
4
+ import { n as isThenable } from "../thenable-BNSM1U2R.js";
5
+ import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
6
+ import { l as withApp } from "../permdock-L-_I_3zP.js";
7
+ import { n as wrapPermDock } from "../wrap-B2wziJI_.js";
8
+ import { i as decisionProblem } from "../problem-BVLHFK33.js";
9
+ import { s as resumeDecision } from "../helpers-DJicaG6f.js";
10
+ import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-Bx_4xC_6.js";
11
+ import { n as resolveOrNull, t as buildInstance } from "../build-instance-CNWaYJyr.js";
12
+ import { _ as LOAD_FAILED, o as evaluationsHandler, v as NO_GRANT } from "../evaluations-IBceAeKT.js";
7
13
  import { cache } from "react";
8
14
  import { jsx } from "react/jsx-runtime";
9
15
  import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
10
16
  import { cacheLife, cacheTag, io } from "next/cache.js";
11
17
  import { after } from "next/server.js";
12
18
  import { PermDockProvider } from "../react/provider-client.js";
19
+ //#region src/next/action.ts
20
+ function refused(problem) {
21
+ return {
22
+ ok: false,
23
+ problem
24
+ };
25
+ }
26
+ /** Issues reduced to JSON a server action can return: a symbol path is lost. */
27
+ function plainIssues(issues) {
28
+ return issues.map((issue) => compact({
29
+ message: issue.message,
30
+ path: issue.path?.map((segment) => {
31
+ const key = typeof segment === "object" ? segment.key : segment;
32
+ return typeof key === "number" ? key : String(key);
33
+ })
34
+ }));
35
+ }
36
+ async function parseInput(schema, value) {
37
+ const result = schema["~standard"].validate(value);
38
+ const settled = isThenable(result) ? await result : result;
39
+ if (settled.issues === void 0) return settled;
40
+ return { issues: plainIssues(settled.issues) };
41
+ }
42
+ function invalidInput(permission, issues) {
43
+ return refused(new PermDockValidationError({
44
+ code: "invalid-data",
45
+ permission: permission.key,
46
+ resource: permission.resource,
47
+ issues,
48
+ boundary: "action-input",
49
+ message: `${permission.key}: ${issues.map((issue) => issue.message).join("; ")}.`
50
+ }).toProblemDetails());
51
+ }
52
+ /**
53
+ * `protectAction(permission, { input, data?, tenant? })(handler)`: validates
54
+ * the input, loads the row, decides, then runs the handler. Every refusal,
55
+ * including a throw, is a Problem Details result; nothing but Next.js
56
+ * interrupts leaves as an exception.
57
+ */
58
+ function protectActionOf(deps) {
59
+ return (permission, options) => (handler) => async (value, call) => {
60
+ const parsed = await parseInput(options.input, value);
61
+ if (parsed.issues !== void 0) return invalidInput(permission, parsed.issues);
62
+ const input = parsed.value;
63
+ let permdock;
64
+ let data;
65
+ try {
66
+ permdock = await deps.getPermDock(compact({ tenant: options.tenant?.(input) }));
67
+ } catch (error) {
68
+ deps.rethrow(error);
69
+ return refused(decisionProblem(NO_GRANT, permission, void 0));
70
+ }
71
+ if (options.data !== void 0) {
72
+ try {
73
+ data = await options.data(input) ?? void 0;
74
+ } catch (error) {
75
+ deps.rethrow(error);
76
+ return refused(decisionProblem(LOAD_FAILED, permission, void 0));
77
+ }
78
+ if (data === void 0) return refused(notFoundDetails());
79
+ }
80
+ const decide = permdock.decide;
81
+ const decision = await resumeDecision({
82
+ decision: decide(permission, data, {
83
+ call: "adapter",
84
+ adapter: "next",
85
+ trusted: true
86
+ }),
87
+ permission,
88
+ subject: permdock.subject,
89
+ store: deps.store,
90
+ resource: resourceRef(permission, data),
91
+ adapter: "next",
92
+ token: call?.approval
93
+ });
94
+ if (decision.outcome !== "granted") return refused(decisionProblem(decision, permission, permdock.subject, compact({ disclosure: data === void 0 ? void 0 : deps.policy.resources.get(permission.resource)?.disclosure })));
95
+ try {
96
+ return {
97
+ ok: true,
98
+ value: await handler(input, {
99
+ permdock,
100
+ decision,
101
+ data
102
+ })
103
+ };
104
+ } catch (error) {
105
+ deps.rethrow(error);
106
+ return refused(statusProblem(500, `${permission.key}: the action failed`));
107
+ }
108
+ };
109
+ }
110
+ //#endregion
13
111
  //#region src/next/provider.tsx
14
112
  function renderClientProvider(options) {
15
113
  return /* @__PURE__ */ jsx(PermDockProvider, {
@@ -171,7 +269,13 @@ function createPermDock(policy, given) {
171
269
  getSnapshot,
172
270
  requirePermission,
173
271
  PermDockProvider,
174
- permdockHandler
272
+ permdockHandler,
273
+ protectAction: protectActionOf({
274
+ policy,
275
+ getPermDock,
276
+ store: options.store,
277
+ rethrow: unstable_rethrow
278
+ })
175
279
  };
176
280
  }
177
281
  //#endregion
@@ -1,4 +1,4 @@
1
- import { a as PermDockPluginOptions } from "../types-Dfv0aTER.js";
1
+ import { s as PermDockPluginOptions } from "../types-DC1Loeh3.js";
2
2
  //#region src/cli/plugin.d.ts
3
3
  /** Any object: Next's `NextConfig` is an interface, so no index signature. */
4
4
  type NextConfigLike = object;
@@ -1,5 +1,5 @@
1
- import { a as describeError } from "../errors-CWTY6uih.js";
2
- import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-vea54PRw.js";
1
+ import { a as describeError } from "../errors-Vpu6rKHl.js";
2
+ import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-Cx_WciLE.js";
3
3
  //#region src/cli/plugin.ts
4
4
  const PHASE_BUILD = "phase-production-build";
5
5
  const PHASE_DEV = "phase-development-server";
@@ -27,7 +27,8 @@ function createPermDockPlugin(options) {
27
27
  };
28
28
  }
29
29
  async function runPluginCollect(cwd, options, check) {
30
- return (await collectOnce(cwd, options, check, false)).message;
30
+ const { message } = await collectOnce(cwd, options, check, false);
31
+ return message;
31
32
  }
32
33
  //#endregion
33
34
  export { createPermDockPlugin };
@@ -1,8 +1,8 @@
1
- import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../vocabulary-CN8H_9UF.js";
3
- import { r as PermDock } from "../permdock-SV8ZINYT.js";
4
- import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CKQiCnON.js";
5
- import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
1
+ import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../permission-types-CAY-GU7e.js";
3
+ import { a as PermDock } from "../permdock-B6Sf4T_S.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CIlpSA2G.js";
5
+ import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
6
6
  import { i as toRequest, n as isServerResponse, r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
7
7
  import { IncomingMessage, ServerResponse } from "node:http";
8
8
  //#region src/node/create.d.ts
@@ -1,6 +1,6 @@
1
- import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
2
- import { r as bindKernel } from "../bind-CAvgUuKs.js";
3
- import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-ujKm0JXE.js";
1
+ import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
2
+ import { r as bindKernel } from "../bind-D_sZSVA3.js";
3
+ import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-DH94eh6f.js";
4
4
  //#region src/node/create.ts
5
5
  const nodeRequest = (req) => req;
6
6
  function createPermDock(policy, options) {
@@ -19,26 +19,36 @@ function status(outcome) {
19
19
  default: return unknownStatus(outcome);
20
20
  }
21
21
  }
22
- /** An outcome this build does not know, from a newer producer, is reported as OCSF Unknown. */
22
+ /**
23
+ * An outcome this build does not know, from a newer producer, is reported as
24
+ * OCSF Unknown.
25
+ */
23
26
  function unknownStatus(_outcome) {
24
27
  return {
25
28
  status_id: 0,
26
29
  status: "Unknown"
27
30
  };
28
31
  }
29
- /** The names of a decision event's app obligations, or `undefined` when it has none. */
32
+ /**
33
+ * The names of a decision event's app obligations, or `undefined` when it has
34
+ * none.
35
+ */
30
36
  function appObligationNames(event) {
31
37
  const names = (event.obligations ?? []).flatMap((obligation) => obligation.kind === "app" ? [obligation.name] : []);
32
38
  return names.length === 0 ? void 0 : names;
33
39
  }
34
- /** Epoch milliseconds of an RFC 3339 `at`, or `undefined` when it does not parse. */
40
+ /**
41
+ * Epoch milliseconds of an RFC 3339 `at`, or `undefined` when it does not
42
+ * parse.
43
+ */
35
44
  function epochMillis(at) {
36
45
  const time = Date.parse(at);
37
46
  return Number.isNaN(time) ? void 0 : time;
38
47
  }
39
48
  /**
40
- * Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged.
41
- * An event whose `at` does not parse has no OCSF `time` and projects to `undefined`.
49
+ * Projects a decision or approval event onto OCSF Authorize Session; the event
50
+ * itself is unchanged. An event whose `at` does not parse has no OCSF `time`
51
+ * and projects to `undefined`.
42
52
  */
43
53
  function toOcsf(event) {
44
54
  const time = epochMillis(event.at);