permdock 0.4.0 → 0.6.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 (515) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-DCYe60Pi.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-DabClFLQ.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BNM3TtDo.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/catalog-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/errors-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-dvL2XEe1.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/openapi-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-1im__-08.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +29 -25
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-B7DkYg6g.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/types-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +10 -9
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -1,38 +1,43 @@
1
- import { a as hasConditionOp } from "./refs-f3imMjNW.js";
2
- import { a as normalizeMemberships, d as scopeList, o as resolveScope } from "./scopes-tvpa34ep.js";
3
- import { c as listPermissions, h as formerKeys } from "./permission-registry-BsblpB-z.js";
4
- import { u as isPrincipalRelation } from "./resource-relations-D1Un3pcz.js";
5
- import { o as flattenGrantee } from "./grantee-CXY-0C87.js";
6
- import { d as separationConflicts } from "./hosted-CBHgkzDl.js";
7
- import { b as validateCustomRole } from "./permdock-L26udHSk.js";
8
- import { o as parseCredential } from "./credential-kue0qpbm.js";
9
- import { i as describeError } from "./errors-CWfoNg9N.js";
1
+ import { a as hasConditionOp } from "./refs-K6eWUJ0H.js";
2
+ import { c as listPermissions, h as formerKeys } from "./permission-registry-Br4jSNVi.js";
3
+ import { u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
4
+ import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
5
+ import { a as normalizeMemberships, d as scopeList, o as resolveScope } from "./scopes-CUPSjo9q.js";
6
+ import { o as flattenGrantee } from "./grantee-hxrUsbpM.js";
7
+ import { c as separationConflicts } from "./policy-DbM5YYtV.js";
8
+ import { C as validateCustomRole } from "./evaluate-CNClBvcj.js";
9
+ import { s as parseCredential } from "./credential-BcoiejpY.js";
10
+ import { a as describeError } from "./errors-CWTY6uih.js";
10
11
  import { t as policyRowConditionKeys } from "./row-conditions-h2HythXQ.js";
11
12
  import { a as rel, n as doctorSrcPath, o as sqlFiles, r as listSourceFiles } from "./files-D_JIzUrP.js";
12
- import { r as DOCTOR_REPORT_SCHEMA } from "./version-BEogC-rB.js";
13
- import { o as jsonSchemaOf } from "./catalog-doc-DWtg0gGR.js";
14
- import { a as loadModule, i as loadConfiguredPolicy, n as asPolicy, s as pickNamed } from "./load-C3_oTHyO.js";
15
- import { r as runCollect } from "./collect-2SrB7lfk.js";
13
+ import { i as DOCTOR_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
14
+ import { r as catalogOAuthScopes, s as jsonSchemaOf } from "./catalog-doc-Cdn7-0pQ.js";
15
+ import { a as loadModule, i as loadConfiguredPolicy, n as asPolicy, s as pickNamed } from "./load-DFS_ry0W.js";
16
+ import { r as runCollect } from "./collect-mLTY4nwb.js";
17
+ import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
16
18
  import { n as supabaseTenantClaim } from "./budget-NbEtbJC_.js";
17
- import { o as quoteSqlLiteral } from "./sql-t8teWOfo.js";
18
- import { d as keptKeys, r as PERMDOCK_SCHEMA } from "./sources-B1-b-R0t.js";
19
- import "./markers-CiwAOZtO.js";
20
- import { t as createStyle } from "./style-CTm1AXDT.js";
21
- import { i as runSkillsInstall } from "./skills-BZdRQkxs.js";
19
+ import { s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
20
+ import { d as keptKeys, r as PERMDOCK_SCHEMA } from "./sources-vs5dGOsS.js";
21
+ import { t as parseCatalog } from "./parse-Cxq0WxrA.js";
22
+ import "./markers-C6joDI3o.js";
23
+ import { t as didYouMean } from "./args-IIolxxKA.js";
24
+ import { t as DOCS_BASE } from "./manifest-dvL2XEe1.js";
25
+ import { t as createStyle } from "./style-Uao76wO7.js";
26
+ import { r as findingOf } from "./output-1im__-08.js";
27
+ import { i as runSkillsInstall } from "./skills-B6lVdD_W.js";
22
28
  import { n as MIGRATION_DIRS, t as DEFAULT_SENSITIVE_ACTIONS } from "./constants-DcJABbLW.js";
23
- import { a as supabaseHookManifest, d as attrsPlan, f as pd045, n as hookOut, p as supabaseConfig, u as pd039 } from "./supabase-hook-Cva3ikXz.js";
24
- import { o as partPath } from "./output-files-CgIsvdSa.js";
29
+ import { l as partPath } from "./output-files-DhRBBE4n.js";
30
+ import { _ as pd045, a as supabaseHookManifest, f as pd039, g as attrsPlan, m as resolveSchemas, n as hookOut, v as readSupabaseConfig, y as supabaseConfig } from "./supabase-hook-BMoEhZir.js";
25
31
  import { i as group, n as membershipColumns, o as sqlStatements, r as tableKey } from "./deciding-columns-Sq12mEA6.js";
26
- import { N as graphSqlName, k as contextRefs } from "./permission-keys-B26jeyUv.js";
27
- import { i as guardedTables, t as ownershipRules } from "./ownership-BgnbOJFT.js";
28
- import { a as pd010, c as pd014, d as pd038, f as pd041, i as pd008, l as pd015, n as pd001, o as pd011, p as pd057, r as pd007, s as pd013, t as runUsage, u as pd036 } from "./usage-CG9nOYZw.js";
29
- import { h as tableFor, m as compileGrants, p as commandFor, t as FIELD_VIEWS } from "./fields-fwfXN01n.js";
30
- import { d as rowConditionMessage, i as graphPlan, s as ROW_CONDITION_FIX, u as helperTablePolicies } from "./verify-BztUB3GX.js";
31
- import { r as staleFiles, t as powersyncFiles } from "./powersync-cZe4kzhL.js";
32
- import { n as legacyHelperNames, r as retirePlan, t as legacyHelperCalls } from "./retire-BFcxL6un.js";
32
+ import { C as byKey, L as graphSqlName, N as contextRefs, a as guardedTables, t as ownershipRules } from "./ownership-DqaJNJPn.js";
33
+ import { a as pd010, c as pd014, d as pd038, f as pd041, i as pd008, l as pd015, n as pd001, o as pd011, p as pd057, r as pd007, s as pd013, t as runUsage, u as pd036 } from "./usage-SveTRTyr.js";
34
+ import { d as rowConditionMessage, f as commandFor, i as graphPlan, m as tableFor, p as compileGrants, s as ROW_CONDITION_FIX, u as helperTablePolicies } from "./verify-BaAKx7t6.js";
35
+ import { t as FIELD_VIEWS } from "./fields-OYG_JR78.js";
36
+ import { r as staleFiles, t as powersyncFiles } from "./powersync-BkWWCS1K.js";
37
+ import { n as legacyHelperNames, r as retirePlan, t as legacyHelperCalls } from "./retire-CALjIQ7e.js";
33
38
  import { t as supautilsRejections } from "./supautils-B6HYL9eL.js";
34
39
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
35
- import { dirname, join, resolve } from "node:path";
40
+ import { basename, dirname, join, resolve } from "node:path";
36
41
  import { createRequire } from "node:module";
37
42
  //#region src/cli/shared/doctor-files.ts
38
43
  const nodeFiles = Object.freeze({
@@ -49,7 +54,7 @@ function readJson(files, path) {
49
54
  return JSON.parse(files.read(path));
50
55
  }
51
56
  //#endregion
52
- //#region src/cli/project.ts
57
+ //#region src/cli/project/project.ts
53
58
  function loadProject(input) {
54
59
  const { cwd, config } = input;
55
60
  const files = input.files ?? nodeFiles;
@@ -201,6 +206,33 @@ async function pd064(input) {
201
206
  }
202
207
  //#endregion
203
208
  //#region src/cli/doctor/catalog.ts
209
+ /**
210
+ * A policy that declares `oauthScopes` against a catalog on disk without
211
+ * them, or with another set. `authorizationProvider` builds better-supabase's
212
+ * `delegation.scopes` from the catalog, so its SQL checks deny a token that
213
+ * holds only the coarse scope.
214
+ */
215
+ async function pd070(input) {
216
+ const declared = (await policyOf(input))?.oauthScopes ?? [];
217
+ if (declared.length === 0) return [];
218
+ const files = filesOf(input);
219
+ const path = catalogPath(input.config, input.cwd);
220
+ if (!files.exists(path)) return [];
221
+ let listed;
222
+ try {
223
+ listed = parseCatalog(files.read(path)).oauthScopes;
224
+ } catch {
225
+ return [];
226
+ }
227
+ const expected = catalogOAuthScopes(declared);
228
+ if (listed !== void 0 && canonicalJson(listed) === canonicalJson(expected)) return [];
229
+ return [{
230
+ code: "PD070",
231
+ severity: "warning",
232
+ message: listed === void 0 ? `the policy declares oauthScopes (${expected.map(({ scope }) => scope).join(", ")}) and ${rel(input.cwd, path)} lists none, so better-supabase's SQL checks deny a token that holds only a coarse scope` : `${rel(input.cwd, path)} lists other oauthScopes than the policy declares`,
233
+ fix: "pnpm exec permdock collect"
234
+ }];
235
+ }
204
236
  async function pd002(input) {
205
237
  const collected = await collectedOf(input);
206
238
  if (collected.scan === void 0) return [];
@@ -244,6 +276,18 @@ async function pd004(input) {
244
276
  fix: "pnpm exec permdock collect"
245
277
  }];
246
278
  }
279
+ async function pd067(input) {
280
+ if (input.config.operations === void 0) return [];
281
+ const document = (await collectedOf(input)).document;
282
+ if (document?.operations === void 0) return [];
283
+ const declared = new Set(document.permissions.map(({ key }) => key));
284
+ return document.operations.flatMap((operation) => [["permission", operation.permission], ["results", operation.results]].flatMap(([field, key]) => key === void 0 || declared.has(key) ? [] : [{
285
+ code: "PD067",
286
+ severity: "error",
287
+ message: `operation ${operation.name} has ${field} ${key}, which the permissions module does not declare`,
288
+ fix: "pass the same permission tree to defineOperations and to permdock.config.ts permissions, or declare the permission"
289
+ }]));
290
+ }
247
291
  //#endregion
248
292
  //#region src/cli/doctor/declarative.ts
249
293
  const SCHEMAS = "supabase/schemas";
@@ -256,16 +300,20 @@ const CALLS_HELPER = /\b(?:permdock_has|(?:permitted|member)_[a-z][a-z0-9_]*_ids
256
300
  function uncommented(text) {
257
301
  return text.replaceAll(/--[^\n]*/gu, "").replaceAll(/\/\*[\s\S]*?\*\//gu, "");
258
302
  }
303
+ /** Whether `text` starts with a line `rls generate` or `supabase hook generate` writes. */
304
+ function generatedByPermDock(text) {
305
+ return text.startsWith("-- permdock:") || text.startsWith("-- generated by permdock");
306
+ }
259
307
  /**
260
- * PD042: a hook declared under `supabase/schemas` reaches the database through
261
- * `supabase db diff`, which drops its `supabase_auth_admin` grants. pg-delta
262
- * keeps them, so the check is off under `[experimental.pgdelta]`. A function
308
+ * PD042: under migra, a hook declared under `supabase/schemas` reaches the
309
+ * database through `supabase db diff`, which drops its `supabase_auth_admin`
310
+ * grants. pg-delta keeps them, so the check runs only for `migra`. A function
263
311
  * created (or dropped and created again) without them is executable by
264
312
  * `public` and not by the auth server, so a migration at or after the one
265
313
  * that creates it must carry the grants.
266
314
  */
267
315
  function pd042(cwd, config, files = nodeFiles) {
268
- if (config.supabase?.hook === void 0 || supabaseConfig(cwd).pgDelta !== void 0) return [];
316
+ if (config.supabase?.hook === void 0 || resolveSchemas(cwd, config).mode !== "migra") return [];
269
317
  if (!sqlFiles(cwd, [SCHEMAS]).some((file) => files.read(file).startsWith(`-- permdock:hook v1 `))) return [];
270
318
  const migrations = sqlFiles(cwd, [MIGRATIONS]).map((file) => ({
271
319
  file,
@@ -280,9 +328,59 @@ function pd042(cwd, config, files = nodeFiles) {
280
328
  code: "PD042",
281
329
  severity: "error",
282
330
  message: `${rel(cwd, migrations[needed]?.file ?? MIGRATIONS)} creates custom_access_token_hook from supabase/schemas, and no migration from it on grants it to supabase_auth_admin: supabase db diff drops those grants, so the auth server cannot call the hook and public can`,
283
- fix: "generate the grants with permdock supabase hook generate --grants-out (or rls generate --split ...,hook --grants-out) into a new file from supabase migration new, after the db diff migration"
331
+ fix: "switch to pg-delta, which keeps the grants ([experimental.pgdelta] enabled = true and no supabase.schemas: 'migra'), or generate the grants with permdock supabase hook generate --grants-out (or rls generate --split ...,hook --grants-out) into a new file from supabase migration new, after the db diff migration"
284
332
  }];
285
333
  }
334
+ /** The PermDock-generated files under the declarative schema directory. */
335
+ function generatedSchemaFiles(cwd, schemaDir, files) {
336
+ if (!files.exists(join(cwd, schemaDir))) return [];
337
+ return sqlFiles(cwd, [schemaDir]).filter((file) => generatedByPermDock(files.read(file)));
338
+ }
339
+ /**
340
+ * PD068: PermDock generates for pg-delta (the default), but
341
+ * `supabase/config.toml` does not set `[experimental.pgdelta] enabled =
342
+ * true`, so Supabase CLI 2.x diffs the schema files with migra. migra drops
343
+ * the hook's `supabase_auth_admin` grants and the helpers' privileges, and
344
+ * PermDock wrote no `--grants-out` file to restore them.
345
+ */
346
+ function pd068(cwd, config, files = nodeFiles) {
347
+ const read = readSupabaseConfig(cwd);
348
+ if (read?.ok !== true || read.config.pgDelta?.enabled === true) return [];
349
+ const schemas = resolveSchemas(cwd, config);
350
+ if (schemas.mode !== "pg-delta") return [];
351
+ const [first] = generatedSchemaFiles(cwd, schemas.schemaDir, files);
352
+ if (first === void 0) return [];
353
+ return [{
354
+ code: "PD068",
355
+ severity: "error",
356
+ message: `${rel(cwd, first)} is written for pg-delta, but supabase/config.toml does not set [experimental.pgdelta] enabled = true, so the Supabase CLI diffs it with migra and drops the hook and helper grants`,
357
+ fix: "add [experimental.pgdelta] with enabled = true to supabase/config.toml (Supabase CLI 2.119 or later), or set supabase.schemas: 'migra' in permdock.config.ts and regenerate with --grants-out"
358
+ }];
359
+ }
360
+ /**
361
+ * PD069: leftovers of declarative schemas on migra in a pg-delta project:
362
+ * `[db.migrations] schema_paths`, which pg-delta's dependency order makes
363
+ * unnecessary, and numbered `NNN_permdock_<part>.sql` files that duplicate
364
+ * the per-schema layout `rls generate --split` now writes.
365
+ */
366
+ function pd069(cwd, config, files = nodeFiles) {
367
+ const schemas = resolveSchemas(cwd, config);
368
+ if (schemas.mode !== "pg-delta") return [];
369
+ const findings = [];
370
+ if ((supabaseConfig(cwd).schemaPaths ?? []).length > 0) findings.push({
371
+ code: "PD069",
372
+ severity: "warning",
373
+ message: "supabase/config.toml sets [db.migrations] schema_paths, which pg-delta does not need: it orders the schema files by their dependencies",
374
+ fix: "remove schema_paths from [db.migrations] in supabase/config.toml"
375
+ });
376
+ for (const file of generatedSchemaFiles(cwd, schemas.schemaDir, files)) if (/^\d+_permdock_/u.test(basename(file))) findings.push({
377
+ code: "PD069",
378
+ severity: "warning",
379
+ message: `${rel(cwd, file)} is a numbered part from declarative schemas on migra; under pg-delta, rls generate --split writes the per-schema layout instead`,
380
+ fix: "delete the numbered parts, run permdock rls generate --split without --out, then supabase db schema declarative sync"
381
+ });
382
+ return findings;
383
+ }
286
384
  /** The `[db.migrations] schema_paths` globs of `supabase/config.toml`, or Supabase's default. */
287
385
  function schemaPaths(cwd) {
288
386
  const paths = supabaseConfig(cwd).schemaPaths ?? [];
@@ -293,12 +391,13 @@ function orderedSchemaFiles(cwd) {
293
391
  return sqlFiles(join(cwd, "supabase"), schemaPaths(cwd), { order: "entry" });
294
392
  }
295
393
  /**
296
- * PD043: `db diff` applies schema files in `schema_paths` order, so a policy
297
- * that calls `permdock_has` or `permitted_<scope>_ids` before the file that
298
- * defines them fails to apply. pg-delta orders by dependencies instead.
394
+ * PD043: under migra, `db diff` applies schema files in `schema_paths`
395
+ * order, so a policy that calls `permdock_has` or `permitted_<scope>_ids`
396
+ * before the file that defines them fails to apply. pg-delta orders by
397
+ * dependencies instead.
299
398
  */
300
- function pd043(cwd, files = nodeFiles) {
301
- if (supabaseConfig(cwd).pgDelta !== void 0) return [];
399
+ function pd043(cwd, config, files = nodeFiles) {
400
+ if (resolveSchemas(cwd, config).mode !== "migra") return [];
302
401
  if (!files.exists(join(cwd, SCHEMAS))) return [];
303
402
  const schemas = orderedSchemaFiles(cwd).map((file) => ({
304
403
  file,
@@ -695,7 +794,7 @@ async function pd033(input) {
695
794
  code: "PD033",
696
795
  severity: "warning",
697
796
  message: `role '${binding.name}' has activation without maxDuration: an elevation never expires on its own`,
698
- fix: `set activation: { maxDuration: '4h', ... } on role '${binding.name}'`
797
+ fix: `set activation: { maxDuration: 14_400, ... } on role '${binding.name}'`
699
798
  });
700
799
  }
701
800
  const fixture = membershipsFixture(input);
@@ -1082,8 +1181,8 @@ async function pd016(input) {
1082
1181
  if (!files.exists(resolve(input.cwd, fixtures)) && !files.exists(resolve(input.cwd, "rls.fixtures.ts"))) findings.push({
1083
1182
  code: "PD016",
1084
1183
  severity: "warning",
1085
- message: "sqlFunction grants have no rls fixtures for verify --db",
1086
- fix: "add rls.fixtures.json and run permdock rls verify --db"
1184
+ message: "sqlFunction grants have no rls fixtures for verify --db-url-stdin",
1185
+ fix: "add rls.fixtures.json and run permdock rls verify --db-url-stdin"
1087
1186
  });
1088
1187
  }
1089
1188
  return findings;
@@ -1258,6 +1357,48 @@ async function pd037(input) {
1258
1357
  }
1259
1358
  return findings;
1260
1359
  }
1360
+ const WRITE_VERB_PREFIXES = [
1361
+ "create",
1362
+ "update",
1363
+ "delete",
1364
+ "remove",
1365
+ "send",
1366
+ "mark",
1367
+ "cancel",
1368
+ "approve",
1369
+ "receive",
1370
+ "fulfill",
1371
+ "reimburse",
1372
+ "withdraw",
1373
+ "writeOff",
1374
+ "confirm",
1375
+ "pause"
1376
+ ];
1377
+ /** `verb` starts with a write prefix that ends at a word boundary: `markPaid`, not `market`. */
1378
+ function suggestsWrite(verb) {
1379
+ return WRITE_VERB_PREFIXES.some((prefix) => {
1380
+ if (!verb.startsWith(prefix)) return false;
1381
+ const next = verb.charAt(prefix.length);
1382
+ return next === "" || /[A-Z0-9_-]/u.test(next);
1383
+ });
1384
+ }
1385
+ async function pd071(input) {
1386
+ const rls = input.config.rls;
1387
+ if (rls === void 0 || input.config.policy === void 0) return [];
1388
+ const policy = await policyOf(input);
1389
+ if (policy === void 0) return [];
1390
+ const byVerb = /* @__PURE__ */ new Map();
1391
+ for (const leaf of listPermissions(policy.vocabulary.permissions)) {
1392
+ if (rls.actions !== void 0 && Object.hasOwn(rls.actions, leaf.action) || commandFor(leaf.action) !== void 0 || !suggestsWrite(leaf.action)) continue;
1393
+ byVerb.set(leaf.action, [...byVerb.get(leaf.action) ?? [], leaf.key]);
1394
+ }
1395
+ return [...byVerb.entries()].toSorted(byKey).map(([verb, keys]) => ({
1396
+ code: "PD071",
1397
+ severity: "warning",
1398
+ message: `action '${verb}' (${keys.toSorted().join(", ")}) reads as a write but has no rls.actions entry, so it compiles to 'none' and adds no SQL policy`,
1399
+ fix: `map it on purpose in rls.actions: ${verb}: "insert", "update", "delete" or "none"`
1400
+ }));
1401
+ }
1261
1402
  //#endregion
1262
1403
  //#region src/cli/doctor/seeds.ts
1263
1404
  const SEED_INSERT = /^insert\s+into\s+((?:"[^"]+"|\w+)(?:\.(?:"[^"]+"|\w+))?)\s*\(\s*role\s*,\s*permission\s*,\s*grant_key\s*,\s*scope\s*,\s*effect\s*\)\s*values\s*([\s\S]*?)\s*on\s+conflict\b/iu;
@@ -1335,7 +1476,7 @@ async function pd054(input) {
1335
1476
  code: "PD054",
1336
1477
  severity: "warning",
1337
1478
  message: `${seeded.file} seeds ${schema}.role_permissions with rows the policy no longer compiles to: ${parts.join("; ")}`,
1338
- fix: "run permdock rls generate (with --split ...,seeds --seeds-out into a new migration for declarative schemas) and apply it"
1479
+ fix: "run permdock rls generate (for declarative schemas, --split ...,seeds --seeds-out supabase/migrations/, which writes a new migration) and apply it"
1339
1480
  }];
1340
1481
  }
1341
1482
  //#endregion
@@ -1675,7 +1816,7 @@ function pd056(cwd, config, files = nodeFiles) {
1675
1816
  code: "PD056",
1676
1817
  severity: "warning",
1677
1818
  message: `legacy helper ${name} is still called ${String(count)} time(s), in ${callers.join(", ")}`,
1678
- fix: `run permdock rls migrate --write for policies, rewrite function bodies, views and triggers onto the permdock helpers by hand, then drop function ${name}`
1819
+ fix: `run permdock rls migrate for policies, rewrite function bodies, views and triggers onto the permdock helpers by hand, then drop function ${name}`
1679
1820
  });
1680
1821
  }
1681
1822
  return findings;
@@ -1802,6 +1943,18 @@ const DOCTOR_CHECKS = [
1802
1943
  groups: ["catalog"],
1803
1944
  run: pd004
1804
1945
  },
1946
+ {
1947
+ code: "PD067",
1948
+ groups: ["catalog", "operations"],
1949
+ when: (config) => config.operations !== void 0,
1950
+ run: pd067
1951
+ },
1952
+ {
1953
+ code: "PD070",
1954
+ groups: ["catalog", "better-supabase"],
1955
+ when: (config) => config.policy !== void 0,
1956
+ run: pd070
1957
+ },
1805
1958
  {
1806
1959
  code: "PD005",
1807
1960
  groups: ["skills"],
@@ -1920,6 +2073,11 @@ const DOCTOR_CHECKS = [
1920
2073
  groups: ["rls", "context-refs"],
1921
2074
  run: pd027
1922
2075
  },
2076
+ {
2077
+ code: "PD071",
2078
+ groups: ["rls"],
2079
+ run: pd071
2080
+ },
1923
2081
  {
1924
2082
  code: "PD028",
1925
2083
  groups: ["attrs", "supabase"],
@@ -2006,7 +2164,17 @@ const DOCTOR_CHECKS = [
2006
2164
  {
2007
2165
  code: "PD043",
2008
2166
  groups: ["supabase", "declarative"],
2009
- run: (project) => pd043(project.cwd, project.files)
2167
+ run: (project) => pd043(project.cwd, project.config, project.files)
2168
+ },
2169
+ {
2170
+ code: "PD068",
2171
+ groups: ["supabase", "declarative"],
2172
+ run: (project) => pd068(project.cwd, project.config, project.files)
2173
+ },
2174
+ {
2175
+ code: "PD069",
2176
+ groups: ["supabase", "declarative"],
2177
+ run: (project) => pd069(project.cwd, project.config, project.files)
2010
2178
  },
2011
2179
  {
2012
2180
  code: "PD045",
@@ -2079,12 +2247,20 @@ const DOCTOR_CHECKS = [
2079
2247
  }
2080
2248
  ];
2081
2249
  async function runDoctor(input) {
2250
+ const wanted = new Set(input.only.map((item) => item.toLowerCase()));
2251
+ const unknown = unknownOnly(wanted);
2252
+ if (unknown !== void 0) return {
2253
+ code: 2,
2254
+ output: unknown
2255
+ };
2256
+ const fixed = [];
2082
2257
  if (input.fix) {
2083
- runSkillsInstall({
2258
+ const skills = runSkillsInstall({
2084
2259
  cwd: input.cwd,
2085
2260
  agents: []
2086
2261
  });
2087
- await runCollect({
2262
+ fixed.push(`skills: ${skills.output}`);
2263
+ const collected = await runCollect({
2088
2264
  cwd: input.cwd,
2089
2265
  config: input.config,
2090
2266
  collect: input.config.collect ?? {},
@@ -2092,9 +2268,9 @@ async function runDoctor(input) {
2092
2268
  now: input.now,
2093
2269
  io: input.io
2094
2270
  });
2271
+ fixed.push(`catalog: ${collected.message.trim()}`);
2095
2272
  }
2096
2273
  const project = loadProject(input);
2097
- const wanted = new Set(input.only.map((item) => item.toLowerCase()));
2098
2274
  const selected = (check) => wanted.size === 0 || wanted.has(check.code.toLowerCase()) || check.groups.some((group) => wanted.has(group));
2099
2275
  const findings = [];
2100
2276
  for (const check of DOCTOR_CHECKS) {
@@ -2105,13 +2281,18 @@ async function runDoctor(input) {
2105
2281
  const warnings = findings.filter((item) => item.severity === "warning").length;
2106
2282
  const report = {
2107
2283
  $schema: DOCTOR_REPORT_SCHEMA,
2284
+ fixed,
2108
2285
  findings,
2109
2286
  errors,
2110
2287
  warnings
2111
2288
  };
2112
2289
  return {
2113
2290
  code: errors > 0 || input.strict && warnings > 0 ? 1 : 0,
2114
- output: input.json ? `${JSON.stringify(report, null, 2)}\n` : formatDoctor(report, input.color)
2291
+ output: input.json ? `${JSON.stringify(report, null, 2)}\n` : formatDoctor(report, input.color),
2292
+ findings: findings.map((item) => findingOf({
2293
+ ...item,
2294
+ docs: `${DOCS_BASE}/doctor#checks`
2295
+ }))
2115
2296
  };
2116
2297
  }
2117
2298
  /** PD059: the configured policy module throws or exports no policy, so every policy check is skipped. */
@@ -2134,9 +2315,23 @@ async function pd060(project) {
2134
2315
  fix: "fix the syntax error, or exclude the file from collect.srcPath"
2135
2316
  }));
2136
2317
  }
2318
+ /** A usage message for the first `--only` value that names no check code or group. */
2319
+ function unknownOnly(wanted) {
2320
+ const known = /* @__PURE__ */ new Set();
2321
+ for (const check of DOCTOR_CHECKS) {
2322
+ known.add(check.code.toLowerCase());
2323
+ for (const group of check.groups) known.add(group);
2324
+ }
2325
+ for (const item of wanted) if (!known.has(item)) {
2326
+ const suggestion = didYouMean(item, [...known]);
2327
+ return `doctor: --only ${item} names no check code or group${suggestion === void 0 ? "" : `. Did you mean ${suggestion}?`}`;
2328
+ }
2329
+ }
2137
2330
  function formatDoctor(report, color) {
2138
2331
  const style = createStyle(color);
2139
2332
  const lines = [style.paint("bold", "permdock doctor"), ""];
2333
+ for (const change of report.fixed) lines.push(` ${style.okMark} fixed ${change}`);
2334
+ if (report.fixed.length > 0) lines.push("");
2140
2335
  for (const finding of report.findings) {
2141
2336
  const mark = finding.severity === "error" ? style.errorMark : style.warnMark;
2142
2337
  lines.push(` ${mark} ${style.paint("bold", finding.code)} ${finding.message}`);
@@ -2163,4 +2358,4 @@ async function supabaseSetup(input) {
2163
2358
  });
2164
2359
  }
2165
2360
  //#endregion
2166
- export { runDoctor };
2361
+ export { DOCTOR_CHECKS, runDoctor };
@@ -1,6 +1,7 @@
1
- import { It as WhereResult, jr as Condition, kr as Subject } from "../policy-types-sp9P1iIV.js";
1
+ import { Rt as Instant, ar as Subject, ur as Condition } from "../policy-types-n0uRTsW8.js";
2
+ import { c as WhereResult } from "../permdock-SV8ZINYT.js";
2
3
  import { r as RelationsMapping } from "../graph-sql-B-dsAT6j.js";
3
- import { s as MembershipsMapping } from "../compile-CtTP7eur.js";
4
+ import { s as MembershipsMapping } from "../compile-1bsAezL0.js";
4
5
  import { n as WithSubjectOptions, t as RowCheck } from "../row-check-Dt35czLy.js";
5
6
  import { SQL, Table } from "drizzle-orm";
6
7
  //#region src/drizzle/types.d.ts
@@ -13,7 +14,8 @@ type DrizzleWhereOptions<T = unknown> = {
13
14
  readonly memberships?: MembershipsMapping;
14
15
  /** Where the relation graph lives; graph grants compile to Postgres subqueries with it and are refused without. */
15
16
  readonly relations?: RelationsMapping;
16
- readonly now?: number;
17
+ /** The clock membership expiry is read at; a `Temporal.Instant` fits. Defaults to the current time. */
18
+ readonly now?: Instant;
17
19
  readonly operators?: DrizzleOperators;
18
20
  };
19
21
  type DrizzleOperators = {
@@ -1,6 +1,6 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { a as assertSafeKey } from "../thenable-QSmvt-vZ.js";
3
- import { n as escapeLike, t as compileWhere } from "../compile-CcEu2ZQ1.js";
2
+ import { t as assertSafeKey } from "../paths-DXSHAMIa.js";
3
+ import { n as escapeLike, t as compileWhere } from "../compile-CMqMx_IN.js";
4
4
  import { a as rowCheckFrom, i as templateOf, r as subjectStatements, s as loadPeer, t as statementTemplate } from "../subject-settings-CkEwrw3W.js";
5
5
  //#region src/drizzle/to-where.ts
6
6
  function loadOperators(injected) {
@@ -1,30 +1,31 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
4
- import { A as ConnectionOptions, C as verifyWebBotAuth, O as Connection, b as discoverViaSignatureAgent, i as OpenApiHooks, m as InvalidSignatureError, o as ProtectOptions } from "../server-types-DdqBwZN_.js";
5
- import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
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 { 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";
6
7
  import { Elysia } from "elysia";
7
8
  //#region src/elysia/create.d.ts
8
- type ElysiaCtx = {
9
+ type ElysiaRequestContext = {
9
10
  readonly request: Request;
10
11
  readonly body?: unknown;
11
12
  readonly params?: Readonly<Record<string, string | undefined>>;
12
13
  };
13
- type ElysiaPermDockOptions<TUser = unknown> = ServerAdapterOptions<ElysiaCtx, TUser> & {
14
+ type ElysiaPermDockOptions<TUser = unknown> = ServerAdapterOptions<ElysiaRequestContext, TUser> & {
14
15
  /** Ends or revalidates open sockets. */
15
16
  readonly revocations?: RevocationFeed;
16
17
  };
17
18
  /** The `ws` Elysia passes to `.ws` handlers; `data` is the upgrade context. */
18
19
  type ElysiaSocket = {
19
- readonly data: ElysiaCtx;
20
+ readonly data: ElysiaRequestContext;
20
21
  close(code?: number, reason?: string): unknown;
21
22
  };
22
- type ElysiaContext<V extends PolicyVocabulary = PolicyVocabulary> = ElysiaCtx & {
23
+ type ElysiaPermDockContext<V extends PolicyVocabulary = PolicyVocabulary> = ElysiaRequestContext & {
23
24
  permdock: PermDock<V>;
24
25
  permdockData?: unknown;
25
26
  };
26
- type ElysiaProtect = (permission: Permission | null, loadData?: (ctx: ElysiaCtx) => unknown, protectOptions?: ProtectOptions) => (ctx: ElysiaCtx) => Promise<Response | undefined>;
27
- /** The `permdock()` plugin: its global derive types `permdock` in every later handler. */
27
+ type ElysiaProtect = (permission: Permission | null, data?: (ctx: ElysiaRequestContext) => unknown, protectOptions?: ProtectOptions) => (ctx: ElysiaRequestContext) => Promise<Response | undefined>;
28
+ /** The `middleware()` plugin: its global derive types `permdock` in every later handler. */
28
29
  type ElysiaPermDockPlugin<V extends PolicyVocabulary = PolicyVocabulary> = Elysia<"", {
29
30
  decorator: Record<never, never>;
30
31
  store: Record<never, never>;
@@ -34,7 +35,9 @@ type ElysiaPermDockPlugin<V extends PolicyVocabulary = PolicyVocabulary> = Elysi
34
35
  resolve: Record<never, never>;
35
36
  }>;
36
37
  type ElysiaPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
37
- readonly permdock: () => ElysiaPermDockPlugin<V>;
38
+ /** The `PermDock` for one request, for code the middleware does not run before. */
39
+ readonly getPermDock: (ctx: ElysiaRequestContext) => Promise<PermDock<V>>;
40
+ readonly middleware: () => ElysiaPermDockPlugin<V>;
38
41
  readonly protect: ElysiaProtect;
39
42
  /**
40
43
  * One connection per socket: the same promise for every handler
@@ -46,4 +49,4 @@ type ElysiaPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
46
49
  };
47
50
  export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: ElysiaPermDockOptions<TUser>): ElysiaPermDock<V>;
48
51
  //#endregion
49
- export { type ElysiaContext, type ElysiaCtx, type ElysiaPermDock, type ElysiaPermDockOptions, type ElysiaProtect, type ElysiaSocket, InvalidSignatureError, discoverViaSignatureAgent, verifyWebBotAuth };
52
+ export { type ElysiaPermDock, type ElysiaPermDockContext, type ElysiaPermDockOptions, type ElysiaProtect, type ElysiaRequestContext, type ElysiaSocket, InvalidSignatureError, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -1,23 +1,23 @@
1
1
  import { a as parsedBody, r as hasCredentials } from "../http-BBoKefeS.js";
2
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-C9YJsv3H.js";
3
- import { t as problemFromError } from "../map-error-BE27PYkE.js";
4
- import { a as socketConnection, i as decorate, r as bindKernel } from "../bind-kk-uyCwH.js";
5
- import { i as onRevoked, t as POLICY_VIOLATION } from "../stream-BMui98KK.js";
2
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-beAooV0n.js";
3
+ import { t as problemFromError } from "../map-error-Dr70oA_3.js";
4
+ import { a as socketConnection, i as decorate, r as bindKernel } from "../bind-CAvgUuKs.js";
5
+ import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
6
6
  import { Elysia } from "elysia";
7
7
  //#region src/elysia/create.ts
8
8
  function createPermDock(policy, options) {
9
9
  const seed = globalThis.crypto.randomUUID();
10
- const { kernel, bind, scopeOf, handlerScope, guard: runGuard } = bindKernel(policy, options, "elysia", toRequest);
11
- const permdock = () => new Elysia({
10
+ const { kernel, bind, scopeOf, handlerScope, getPermDock, guard: runGuard } = bindKernel(policy, options, "elysia", toRequest);
11
+ const middleware = () => new Elysia({
12
12
  name: "permdock",
13
13
  seed
14
14
  }).derive({ as: "global" }, async (ctx) => {
15
- const instance = await kernel.permdock(bind(ctx), await scopeOf(ctx));
15
+ const instance = await kernel.getPermDock(bind(ctx), await scopeOf(ctx));
16
16
  decorate(ctx, instance);
17
17
  return { permdock: instance };
18
18
  }).onError({ as: "global" }, ({ error, request }) => problemFromError(error, { credentials: hasCredentials(request) }));
19
- const protect = (permission, loadData, protectOptions) => async (ctx) => {
20
- const guard = await runGuard(permission, loadData, ctx, protectOptions);
19
+ const protect = (permission, data, protectOptions) => async (ctx) => {
20
+ const guard = await runGuard(permission, data, ctx, protectOptions);
21
21
  if (!guard.ok) return guard.response;
22
22
  decorate(ctx, guard.permdock, guard.data);
23
23
  };
@@ -25,7 +25,7 @@ function createPermDock(policy, options) {
25
25
  const connection = (ws, connectionOptions) => socketConnection(sockets, ws.data, async () => {
26
26
  const conn = await kernel.connection(bind(ws.data), connectionOptions, await scopeOf(ws.data));
27
27
  onRevoked(conn, (problem) => {
28
- ws.close(POLICY_VIOLATION, problem.type);
28
+ ws.close(POLICY_VIOLATION, closeReason(problem));
29
29
  });
30
30
  return conn;
31
31
  });
@@ -37,7 +37,8 @@ function createPermDock(policy, options) {
37
37
  }).post("/", (ctx) => POST(bind(ctx))).get("/", (ctx) => GET(bind(ctx)));
38
38
  };
39
39
  return {
40
- permdock,
40
+ getPermDock,
41
+ middleware,
41
42
  protect,
42
43
  connection,
43
44
  permdockHandler,
@@ -56,4 +57,4 @@ function toRequest(ctx) {
56
57
  });
57
58
  }
58
59
  //#endregion
59
- export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, verifyWebBotAuth };
60
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,8 @@
1
+ //#region src/cli/core/env.ts
2
+ /** `CI` set to anything but an empty string, `0` or `false`. */
3
+ function isCi(env) {
4
+ const value = env["CI"]?.trim().toLowerCase();
5
+ return value !== void 0 && value !== "" && value !== "0" && value !== "false";
6
+ }
7
+ //#endregion
8
+ export { isCi };
@@ -0,0 +1,27 @@
1
+ //#region src/approvals/access-reviews/errors.ts
2
+ var AccessReviewError = class extends Error {
3
+ name = "AccessReviewError";
4
+ code;
5
+ constructor(code, message) {
6
+ super(message);
7
+ this.code = code;
8
+ }
9
+ };
10
+ const CODES = /* @__PURE__ */ new Set([
11
+ "review-not-found",
12
+ "review-closed",
13
+ "item-not-found",
14
+ "item-not-pending",
15
+ "reviewer-unauthenticated",
16
+ "reviewer-not-eligible",
17
+ "reviewer-is-holder",
18
+ "not-revoked",
19
+ "already-applied"
20
+ ]);
21
+ function isAccessReviewError(value) {
22
+ if (!(value instanceof Error) || value.name !== "AccessReviewError") return false;
23
+ const code = Reflect.get(value, "code");
24
+ return typeof code === "string" && CODES.has(code);
25
+ }
26
+ //#endregion
27
+ export { isAccessReviewError as n, AccessReviewError as t };