permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.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 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.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-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -0,0 +1,240 @@
1
+ import { r as escapeSqlIdent } from "./sql-B5T1IL83.js";
2
+ import { a as RETIRE_MARKER } from "./markers-C6joDI3o.js";
3
+ import { r as tableKey } from "./deciding-columns-Sq12mEA6.js";
4
+ //#region src/cli/rls/retire.ts
5
+ const IDENT = String.raw`(?:"[^"]+"|[A-Za-z_][\w$]*)`;
6
+ const NAME = String.raw`(${IDENT}(?:\s*\.\s*${IDENT})?)`;
7
+ const NAMES = String.raw`(${IDENT}(?:\s*\.\s*${IDENT})?(?:\s*,\s*${IDENT}(?:\s*\.\s*${IDENT})?)*)`;
8
+ const CREATE_TABLE = new RegExp(String.raw`^create\s+(?:(?:global\s+|local\s+)?(?:temporary|temp|unlogged)\s+)?table\s+(?:if\s+not\s+exists\s+)?${NAME}`, "iu");
9
+ const CREATE_MATVIEW = new RegExp(String.raw`^create\s+materialized\s+view\s+(?:if\s+not\s+exists\s+)?${NAME}`, "iu");
10
+ const DROP_RELATION = new RegExp(String.raw`^drop\s+(table|materialized\s+view|view)\s+(?:if\s+exists\s+)?${NAMES}`, "iu");
11
+ const CREATE_VIEW = new RegExp(String.raw`^create\s+(?:or\s+replace\s+)?(?:temp(?:orary)?\s+)?(?:recursive\s+)?view\s+${NAME}`, "iu");
12
+ const CREATE_FUNCTION = new RegExp(String.raw`^create\s+(?:or\s+replace\s+)?(?:function|procedure)\s+${NAME}\s*\(`, "iu");
13
+ const DROP_FUNCTION = new RegExp(String.raw`^drop\s+(?:function|procedure)\s+(?:if\s+exists\s+)?([\s\S]*)$`, "iu");
14
+ const CREATE_TRIGGER = new RegExp(String.raw`^create\s+(?:or\s+replace\s+)?(?:constraint\s+)?trigger\s+(${IDENT})[\s\S]*?\bon\s+${NAME}[\s\S]*?\bexecute\s+(?:function|procedure)\s+${NAME}\s*\(`, "iu");
15
+ const DROP_TRIGGER = new RegExp(String.raw`^drop\s+trigger\s+(?:if\s+exists\s+)?(${IDENT})\s+on\s+${NAME}`, "iu");
16
+ const POLICY = new RegExp(String.raw`^(create|alter)\s+policy\s+(${IDENT})\s+on\s+${NAME}`, "iu");
17
+ const DROP_POLICY = new RegExp(String.raw`^drop\s+policy\s+(?:if\s+exists\s+)?(${IDENT})\s+on\s+${NAME}`, "iu");
18
+ /** A capture group the pattern always fills. */
19
+ function group(match, index) {
20
+ return match[index] ?? "";
21
+ }
22
+ function bare(ident) {
23
+ return ident.replaceAll("\"", "");
24
+ }
25
+ function key(name) {
26
+ return tableKey(name.replaceAll(/\s+/gu, ""));
27
+ }
28
+ function escapeRegex(text) {
29
+ return text.replaceAll(/[.*+?^${}()|[\]\\]/gu, String.raw`\$&`);
30
+ }
31
+ /** A reference to `schema.name`, qualified or not, outside a longer identifier. */
32
+ function refPattern(table) {
33
+ const [schema = "public", name = ""] = table.split(".");
34
+ return String.raw`(?<![\w$."])(?:"?${escapeRegex(schema)}"?\s*\.\s*)?"?${escapeRegex(name)}"?(?![\w$"])`;
35
+ }
36
+ function writesPattern(table) {
37
+ return new RegExp(String.raw`\b(?:insert\s+into|update|delete\s+from|truncate(?:\s+table)?|merge\s+into|refresh\s+materialized\s+view(?:\s+concurrently)?)\s+(?:only\s+)?${refPattern(table)}`, "iu");
38
+ }
39
+ function callsPattern(name) {
40
+ const [schema = "public", bareName = ""] = name.split(".");
41
+ return new RegExp(String.raw`(?<![\w$."])(?:"?${escapeRegex(schema)}"?\s*\.\s*)?"?${escapeRegex(bareName)}"?\s*\(`, "iu");
42
+ }
43
+ /** The names `drop function` lists: `a(int), b` gives `a` and `b`. */
44
+ function droppedFunctions(list) {
45
+ const names = [];
46
+ let depth = 0;
47
+ let current = "";
48
+ for (const char of list) if (char === "(") depth += 1;
49
+ else if (char === ")") depth -= 1;
50
+ else if (depth === 0 && char === ",") {
51
+ names.push(current);
52
+ current = "";
53
+ } else if (depth === 0) current += char;
54
+ names.push(current);
55
+ return names.map((name) => name.replace(/\s+(?:cascade|restrict)\s*$/iu, "").trim()).filter((name) => name !== "").map(key);
56
+ }
57
+ function replay(statements) {
58
+ const schema = {
59
+ relations: /* @__PURE__ */ new Map(),
60
+ views: /* @__PURE__ */ new Map(),
61
+ functions: /* @__PURE__ */ new Map(),
62
+ triggers: /* @__PURE__ */ new Map(),
63
+ policies: /* @__PURE__ */ new Map()
64
+ };
65
+ for (const statement of statements) {
66
+ const { text } = statement;
67
+ const defined = {
68
+ file: statement.file,
69
+ line: statement.line,
70
+ text
71
+ };
72
+ let match = CREATE_TABLE.exec(text);
73
+ if (match !== null) {
74
+ schema.relations.set(key(group(match, 1)), "table");
75
+ continue;
76
+ }
77
+ match = CREATE_MATVIEW.exec(text);
78
+ if (match !== null) {
79
+ const name = key(group(match, 1));
80
+ schema.relations.set(name, "materialized view");
81
+ schema.views.set(name, defined);
82
+ continue;
83
+ }
84
+ match = DROP_RELATION.exec(text);
85
+ if (match !== null) {
86
+ for (const name of group(match, 2).split(",").map(key)) {
87
+ schema.relations.delete(name);
88
+ schema.views.delete(name);
89
+ }
90
+ continue;
91
+ }
92
+ match = CREATE_VIEW.exec(text);
93
+ if (match !== null) {
94
+ schema.views.set(key(group(match, 1)), defined);
95
+ continue;
96
+ }
97
+ match = CREATE_FUNCTION.exec(text);
98
+ if (match !== null) {
99
+ schema.functions.set(key(group(match, 1)), defined);
100
+ continue;
101
+ }
102
+ match = DROP_FUNCTION.exec(text);
103
+ if (match !== null) {
104
+ for (const name of droppedFunctions(group(match, 1))) schema.functions.delete(name);
105
+ continue;
106
+ }
107
+ match = CREATE_TRIGGER.exec(text);
108
+ if (match !== null) {
109
+ const name = bare(group(match, 1));
110
+ const table = key(group(match, 2));
111
+ schema.triggers.set(`${table}:${name}`, {
112
+ name,
113
+ table,
114
+ function: key(group(match, 3))
115
+ });
116
+ continue;
117
+ }
118
+ match = DROP_TRIGGER.exec(text);
119
+ if (match !== null) {
120
+ schema.triggers.delete(`${key(group(match, 2))}:${bare(group(match, 1))}`);
121
+ continue;
122
+ }
123
+ match = POLICY.exec(text);
124
+ if (match !== null) {
125
+ const name = bare(group(match, 2));
126
+ const table = key(group(match, 3));
127
+ const id = `${table}:${name}`;
128
+ const expressions = text.slice(match[0].length);
129
+ if (group(match, 1).toLowerCase() === "create" || /\b(?:using|with\s+check)\b/iu.test(expressions)) schema.policies.set(id, {
130
+ ...defined,
131
+ text: expressions,
132
+ table,
133
+ name
134
+ });
135
+ continue;
136
+ }
137
+ match = DROP_POLICY.exec(text);
138
+ if (match !== null) schema.policies.delete(`${key(group(match, 2))}:${bare(group(match, 1))}`);
139
+ }
140
+ return schema;
141
+ }
142
+ /** Functions that write `table`, the configured `refresh` ones, and every function that calls one. */
143
+ function refreshFunctions(schema, table, configured) {
144
+ const writes = writesPattern(table);
145
+ const found = new Set(configured.map(key));
146
+ for (const [name, defined] of schema.functions) if (writes.test(defined.text)) found.add(name);
147
+ let grew = true;
148
+ while (grew) {
149
+ grew = false;
150
+ const calls = [...found].map(callsPattern);
151
+ for (const [name, defined] of schema.functions) if (!found.has(name) && calls.some((call) => call.test(defined.text))) {
152
+ found.add(name);
153
+ grew = true;
154
+ }
155
+ }
156
+ return found;
157
+ }
158
+ /** Calls of a legacy helper outside its own definition, grants and drops (PD056). */
159
+ function legacyHelperCalls(statements, name) {
160
+ const own = new RegExp(String.raw`^\s*(?:create\s+(?:or\s+replace\s+)?function|drop\s+function|revoke|grant|alter\s+function|comment\s+on\s+function)\b[^(]*?(?:^|[\s."])${name}"?\s*\(`, "iu");
161
+ const call = new RegExp(String.raw`(?<![\w$])(?:(?:"[^"]+"|\w+)\s*\.\s*)?"?${name}"?\s*\(`, "giu");
162
+ let count = 0;
163
+ const files = /* @__PURE__ */ new Set();
164
+ for (const statement of statements) {
165
+ const hits = own.test(statement.text) ? 0 : (statement.text.match(call) ?? []).length;
166
+ if (hits > 0) {
167
+ count += hits;
168
+ files.add(statement.file);
169
+ }
170
+ }
171
+ return {
172
+ count,
173
+ files: [...files].toSorted()
174
+ };
175
+ }
176
+ /** The `rls.migrate.helpers` names doctor and `rls migrate` count. */
177
+ function legacyHelperNames(config) {
178
+ return Object.keys(config.helpers).filter((name) => /^[a-z_][a-z0-9_]*$/u.test(name));
179
+ }
180
+ /**
181
+ * For each `rls.migrate.tables` table: whether the migrations still create it,
182
+ * the triggers and functions that refresh it, and what still reads it.
183
+ */
184
+ function retirePlan(statements, config) {
185
+ const schema = replay(statements);
186
+ const uncalled = new Set(legacyHelperNames(config).filter((name) => legacyHelperCalls(statements, name).count === 0));
187
+ const helpers = [...schema.functions.keys()].filter((fn) => uncalled.has(fn.slice(fn.lastIndexOf(".") + 1))).toSorted();
188
+ return {
189
+ tables: Object.entries(config.tables ?? {}).map(([name, table]) => {
190
+ const target = key(name);
191
+ const refresh = refreshFunctions(schema, target, table.refresh ?? []);
192
+ const reads = new RegExp(refPattern(target), "iu");
193
+ const readers = [];
194
+ for (const policy of schema.policies.values()) if (policy.table !== target && reads.test(policy.text)) readers.push({
195
+ kind: "policy",
196
+ name: `${policy.name} on ${policy.table}`,
197
+ file: policy.file,
198
+ line: policy.line
199
+ });
200
+ for (const [view, defined] of schema.views) if (view !== target && reads.test(defined.text)) readers.push({
201
+ kind: "view",
202
+ name: view,
203
+ file: defined.file,
204
+ line: defined.line
205
+ });
206
+ for (const [fn, defined] of schema.functions) if (!refresh.has(fn) && !helpers.includes(fn) && reads.test(defined.text)) readers.push({
207
+ kind: "function",
208
+ name: fn,
209
+ file: defined.file,
210
+ line: defined.line
211
+ });
212
+ return {
213
+ table: target,
214
+ present: schema.relations.has(target),
215
+ kind: schema.relations.get(target) ?? "table",
216
+ refreshTriggers: [...schema.triggers.values()].filter((trigger) => trigger.table !== target && refresh.has(trigger.function)),
217
+ refreshFunctions: [...refresh].filter((fn) => schema.functions.has(fn)).toSorted(),
218
+ readers
219
+ };
220
+ }),
221
+ helpers
222
+ };
223
+ }
224
+ function escapeQualifiedName(name) {
225
+ return name.split(".").map((part) => escapeSqlIdent(part)).join(".");
226
+ }
227
+ /** The retire migration: each present table without readers, its refresh triggers and functions, and the uncalled helpers. */
228
+ function retireSql(plan) {
229
+ const tables = plan.tables.filter((table) => table.present && table.readers.length === 0);
230
+ if (tables.length === 0) return;
231
+ const lines = [`${RETIRE_MARKER} table=${tables.map((table) => table.table).join(",")}`, "-- rls.migrate.tables: the refresh triggers and functions, uncalled legacy helpers, then the table; no cascade, so a dependant left behind fails the migration"];
232
+ for (const table of tables) for (const trigger of table.refreshTriggers) lines.push(`drop trigger if exists ${escapeSqlIdent(trigger.name)} on ${escapeQualifiedName(trigger.table)};`);
233
+ const functions = new Set(tables.flatMap((table) => table.refreshFunctions));
234
+ for (const fn of [...functions].toSorted()) lines.push(`drop function if exists ${escapeQualifiedName(fn)};`);
235
+ for (const helper of plan.helpers) lines.push(`drop function if exists ${escapeQualifiedName(helper)};`);
236
+ for (const table of tables) lines.push(`drop ${table.kind} if exists ${escapeQualifiedName(table.table)};`);
237
+ return `${lines.join("\n")}\n`;
238
+ }
239
+ //#endregion
240
+ export { retireSql as i, legacyHelperNames as n, retirePlan as r, legacyHelperCalls as t };
@@ -12,6 +12,8 @@ type RevocationListener = (event: RevocationEvent) => void;
12
12
  * revalidate a connection, never grant; a lost event falls back to expiry.
13
13
  */
14
14
  type RevocationFeed = {
15
+ /** Names the implementation in errors and events. */
16
+ readonly name?: string;
15
17
  subscribe(listener: RevocationListener): () => void;
16
18
  revoke(event: RevocationEvent): void | Promise<void>;
17
19
  };
@@ -0,0 +1,336 @@
1
+ import { c as missingInput } from "./errors-CWTY6uih.js";
2
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
3
+ import { c as given, d as policyFlag, f as validatorFlag, i as dryRunFlag, l as outFlag, n as dbUrl, o as fileOut, r as dbUrlFlags, t as checkFlag } from "./flags-C3DktBDY.js";
4
+ //#region src/cli/commands/rls.ts
5
+ const membershipsFlag = { memberships: {
6
+ type: "string",
7
+ description: "Membership table as <table>:tenant,user,role",
8
+ valueHint: "table"
9
+ } };
10
+ /** The flags that shape the generated SQL; verify --introspect and migrate take them too. */
11
+ const shapeFlags = {
12
+ target: {
13
+ type: "enum",
14
+ options: [
15
+ "sql",
16
+ "drizzle",
17
+ "prisma"
18
+ ],
19
+ default: "sql",
20
+ description: "Output form"
21
+ },
22
+ dialect: {
23
+ type: "enum",
24
+ options: [
25
+ "supabase",
26
+ "neon",
27
+ "guc"
28
+ ],
29
+ description: "How the database reads the subject (default rls.dialect, else supabase)"
30
+ },
31
+ ...policyFlag,
32
+ ...membershipsFlag,
33
+ rbac: {
34
+ type: "enum",
35
+ options: ["supabase"],
36
+ description: "Scaffold the role tables for this provider"
37
+ },
38
+ "rbac-schema": {
39
+ type: "string",
40
+ description: "Schema for the scaffolded role tables",
41
+ valueHint: "name"
42
+ },
43
+ authorize: {
44
+ type: "enum",
45
+ options: ["database", "jwt"],
46
+ description: "Where roles are read"
47
+ },
48
+ "skip-closures": {
49
+ type: "boolean",
50
+ description: "Skip grants with closures instead of failing"
51
+ },
52
+ "inline-functions": {
53
+ type: "boolean",
54
+ description: "Inline helper calls into the policies"
55
+ },
56
+ "force-rls": {
57
+ type: "boolean",
58
+ description: "Emit FORCE ROW LEVEL SECURITY so the table owner is held to the policies"
59
+ },
60
+ "guc-prefix": {
61
+ type: "string",
62
+ description: "guc dialect: setting prefix",
63
+ valueHint: "prefix"
64
+ },
65
+ "policy-per-role": {
66
+ type: "boolean",
67
+ description: "One policy per role instead of one per command"
68
+ },
69
+ "policy-name": {
70
+ type: "string",
71
+ description: "Policy name template",
72
+ valueHint: "template"
73
+ },
74
+ "tenant-type": {
75
+ type: "string",
76
+ description: "Postgres type of the tenant column",
77
+ valueHint: "type"
78
+ },
79
+ "custom-roles": {
80
+ type: "boolean",
81
+ description: "Emit the custom role tables and helpers"
82
+ },
83
+ capabilities: {
84
+ type: "boolean",
85
+ description: "Emit the link capability helpers"
86
+ },
87
+ fields: {
88
+ type: "enum",
89
+ options: ["views"],
90
+ description: "Field security"
91
+ },
92
+ "revoke-columns": {
93
+ type: "boolean",
94
+ description: "Revoke restricted columns on the table"
95
+ },
96
+ "helpers-only": {
97
+ type: "boolean",
98
+ description: "Write the helpers and keep the policies hand-written"
99
+ },
100
+ shims: {
101
+ type: "boolean",
102
+ description: "Wrap each rls.migrate helper under its legacy name"
103
+ },
104
+ schemas: {
105
+ type: "enum",
106
+ options: [
107
+ "pg-delta",
108
+ "migra",
109
+ "migrations"
110
+ ],
111
+ description: "Schema workflow (default supabase.schemas, else pg-delta)"
112
+ },
113
+ ...dbUrlFlags
114
+ };
115
+ const sqlFlag = { sql: {
116
+ type: "string",
117
+ description: "SQL file or folder to read",
118
+ valueHint: "path"
119
+ } };
120
+ const SHAPE_DEFAULTS = {
121
+ target: "sql",
122
+ dialect: void 0,
123
+ policy: void 0,
124
+ memberships: void 0,
125
+ rbac: void 0,
126
+ "rbac-schema": void 0,
127
+ authorize: void 0,
128
+ "skip-closures": false,
129
+ "inline-functions": false,
130
+ "force-rls": false,
131
+ "guc-prefix": void 0,
132
+ "policy-per-role": false,
133
+ "policy-name": void 0,
134
+ "tenant-type": void 0,
135
+ "custom-roles": false,
136
+ capabilities: false,
137
+ fields: void 0,
138
+ "revoke-columns": false,
139
+ "helpers-only": false,
140
+ shims: false,
141
+ schemas: void 0,
142
+ "db-url-stdin": false
143
+ };
144
+ /** Every RlsRunInput field at its "not given" value, with the shape flags applied. */
145
+ async function rlsInput(ctx, verb, shape, options) {
146
+ return {
147
+ cwd: ctx.cwd,
148
+ config: ctx.config,
149
+ rest: [verb],
150
+ target: shape.target,
151
+ dialect: shape.dialect,
152
+ out: void 0,
153
+ from: given(shape.policy),
154
+ sql: void 0,
155
+ db: await dbUrl(ctx, shape, { required: options?.dbRequired === true }),
156
+ fixtures: void 0,
157
+ schema: void 0,
158
+ memberships: given(shape.memberships),
159
+ format: void 0,
160
+ rbac: shape.rbac === "supabase",
161
+ rbacSchema: given(shape["rbac-schema"]),
162
+ authorize: shape.authorize,
163
+ check: false,
164
+ skipClosures: shape["skip-closures"],
165
+ inlineFunctions: shape["inline-functions"],
166
+ force: shape["force-rls"],
167
+ gucPrefix: given(shape["guc-prefix"]),
168
+ policyPerRole: shape["policy-per-role"],
169
+ policyName: given(shape["policy-name"]),
170
+ tenantType: given(shape["tenant-type"]),
171
+ customRoles: shape["custom-roles"],
172
+ capabilities: shape.capabilities,
173
+ fields: shape.fields,
174
+ revokeColumns: shape["revoke-columns"],
175
+ tree: false,
176
+ introspect: false,
177
+ split: void 0,
178
+ schemas: shape.schemas,
179
+ grantsOut: void 0,
180
+ seedsOut: void 0,
181
+ helpersOnly: shape["helpers-only"],
182
+ shims: shape.shims,
183
+ write: false,
184
+ json: ctx.json,
185
+ io: ctx.io
186
+ };
187
+ }
188
+ async function runRls(input) {
189
+ return (await import("./rls-j6t43t7n.js")).runRls(input);
190
+ }
191
+ const generate = defineLeaf({
192
+ flags: {
193
+ ...shapeFlags,
194
+ ...outFlag,
195
+ ...checkFlag,
196
+ project: {
197
+ type: "string",
198
+ description: "Rebuild the policy from a PermDock Cloud project's pushed catalog and policy",
199
+ valueHint: "id"
200
+ },
201
+ url: {
202
+ type: "string",
203
+ description: "With --project: Cloud API base URL",
204
+ valueHint: "url"
205
+ },
206
+ split: {
207
+ type: "string",
208
+ description: "Write helpers, seeds, indexes, policies and hook as separate parts",
209
+ valueHint: "parts",
210
+ list: true,
211
+ async complete() {
212
+ return (await import("./output-files-B3IZJksC.js")).SPLIT_PARTS;
213
+ }
214
+ },
215
+ "grants-out": {
216
+ type: "string",
217
+ description: "migra: file for the privileges supabase db diff drops",
218
+ valueHint: "file"
219
+ },
220
+ "seeds-out": {
221
+ type: "string",
222
+ description: "File for the role_permissions seeds",
223
+ valueHint: "file"
224
+ },
225
+ "backfill-out": {
226
+ type: "string",
227
+ description: "File for the rls.customRoles.from copy",
228
+ valueHint: "file"
229
+ }
230
+ },
231
+ async run(ctx, { flags }) {
232
+ const backfillOut = given(flags["backfill-out"]);
233
+ return runRls({
234
+ ...await rlsInput(ctx, "generate", flags),
235
+ out: given(flags.out),
236
+ check: flags.check,
237
+ project: given(flags.project),
238
+ url: given(flags.url),
239
+ split: given(flags.split),
240
+ grantsOut: given(flags["grants-out"]),
241
+ seedsOut: given(flags["seeds-out"]),
242
+ ...backfillOut === void 0 ? {} : { backfillOut }
243
+ });
244
+ }
245
+ });
246
+ const importPolicies = defineLeaf({
247
+ flags: {
248
+ ...sqlFlag,
249
+ ...dbUrlFlags,
250
+ ...outFlag,
251
+ ...validatorFlag,
252
+ ...membershipsFlag
253
+ },
254
+ async run(ctx, { flags }) {
255
+ const sql = given(flags.sql);
256
+ const db = await dbUrl(ctx, flags, { required: sql === void 0 });
257
+ if (sql === void 0 && db === void 0) throw missingInput("rls import", ["--sql", "--db-url-stdin"], "pass one, or set DATABASE_URL or SUPABASE_DB_URL");
258
+ return runRls({
259
+ ...await rlsInput(ctx, "import", {
260
+ ...SHAPE_DEFAULTS,
261
+ memberships: flags.memberships
262
+ }),
263
+ sql,
264
+ db,
265
+ out: fileOut("rls import", flags.out),
266
+ schema: flags.validator
267
+ });
268
+ }
269
+ });
270
+ const verify = defineLeaf({
271
+ flags: {
272
+ ...shapeFlags,
273
+ fixtures: {
274
+ type: "string",
275
+ description: "Fixtures file",
276
+ valueHint: "file"
277
+ },
278
+ kind: {
279
+ type: "enum",
280
+ options: ["node", "pgtap"],
281
+ description: "Run the fixtures in Node or emit a pgTAP file"
282
+ },
283
+ tree: {
284
+ type: "boolean",
285
+ description: "Check the relationship closure"
286
+ },
287
+ introspect: {
288
+ type: "boolean",
289
+ description: "Compare against the live database"
290
+ },
291
+ advisors: {
292
+ type: "boolean",
293
+ description: "Run the Supabase security advisors"
294
+ }
295
+ },
296
+ async run(ctx, { flags }) {
297
+ return runRls({
298
+ ...await rlsInput(ctx, "verify", flags, { dbRequired: flags.introspect || flags.tree }),
299
+ fixtures: given(flags.fixtures),
300
+ format: flags.kind,
301
+ tree: flags.tree,
302
+ introspect: flags.introspect,
303
+ advisors: flags.advisors
304
+ });
305
+ }
306
+ });
307
+ const migrate = defineLeaf({
308
+ flags: {
309
+ ...shapeFlags,
310
+ ...sqlFlag,
311
+ ...dryRunFlag,
312
+ force: {
313
+ type: "boolean",
314
+ description: "Rewrite files with uncommitted changes too"
315
+ },
316
+ "retire-out": {
317
+ type: "string",
318
+ description: "File dropping the rls.migrate.tables once nothing reads them",
319
+ valueHint: "file"
320
+ }
321
+ },
322
+ async run(ctx, { flags }) {
323
+ const sql = given(flags.sql);
324
+ if (sql === void 0) throw missingInput("rls migrate", ["--sql"], "the folder of SQL files to rewrite");
325
+ const retireOut = given(flags["retire-out"]);
326
+ return runRls({
327
+ ...await rlsInput(ctx, "migrate", flags),
328
+ sql,
329
+ write: !flags["dry-run"],
330
+ forceRewrite: flags.force,
331
+ ...retireOut === void 0 ? {} : { retireOut }
332
+ });
333
+ }
334
+ });
335
+ //#endregion
336
+ export { generate, importPolicies, migrate, verify };