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
@@ -1,14 +1,15 @@
1
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-tz6D9A2G.js";
2
- import { t as problemFromError } from "../map-error-pgUWNNtG.js";
3
- import { i as decorate, r as bindKernel } from "../bind-CuzGytRf.js";
4
- import { i as toRequest, r as sendResponse } from "../http-BIhmLfCc.js";
1
+ import { r as hasCredentials } from "../http-BBoKefeS.js";
2
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
3
+ import { t as problemFromError } from "../map-error-TCAdw-eW.js";
4
+ import { i as decorate, r as bindKernel } from "../bind-CZzhx-Vj.js";
5
+ import { n as sendResponse, r as toRequest } from "../http-ujKm0JXE.js";
5
6
  import express from "express";
6
7
  //#region src/express/create.ts
7
8
  function run(work, next) {
8
9
  work().catch(next);
9
10
  }
10
11
  function sendProblem(err, req, res, next) {
11
- const problem = problemFromError(err, { credentials: req.headers.authorization !== void 0 });
12
+ const problem = problemFromError(err, { credentials: hasCredentials(req) });
12
13
  if (problem === void 0) {
13
14
  next(err);
14
15
  return;
@@ -32,16 +33,16 @@ const withPermDock = (fn) => (req, res, next) => {
32
33
  }, next);
33
34
  };
34
35
  function createPermDock(policy, options) {
35
- const { kernel, bind, rebind, scopeOf, handlerScope } = bindKernel(policy, options, "express", toRequest);
36
- const permdock = () => (req, res, next) => {
36
+ const { kernel, bind, rebind, scopeOf, handlerScope, getPermDock, guard: runGuard } = bindKernel(policy, options, "express", toRequest);
37
+ const middleware = () => (req, res, next) => {
37
38
  respond(req, res, next, async () => {
38
- decorate(req, await kernel.permdock(bind(req), await scopeOf(req)));
39
+ decorate(req, await kernel.getPermDock(bind(req), await scopeOf(req)));
39
40
  next();
40
41
  });
41
42
  };
42
- const protect = (permission, loadData, protectOptions) => (req, res, next) => {
43
+ const protect = (permission, data, protectOptions) => (req, res, next) => {
43
44
  respond(req, res, next, async () => {
44
- const guard = await kernel.protect(permission, loadData === void 0 ? void 0 : () => loadData(req), protectOptions)(bind(req), await scopeOf(req));
45
+ const guard = await runGuard(permission, data, req, protectOptions);
45
46
  if (!guard.ok) {
46
47
  await sendResponse(res, guard.response);
47
48
  return;
@@ -66,7 +67,8 @@ function createPermDock(policy, options) {
66
67
  return router;
67
68
  };
68
69
  return {
69
- permdock,
70
+ getPermDock,
71
+ middleware,
70
72
  protect,
71
73
  errorHandler,
72
74
  permdockHandler,
@@ -75,4 +77,4 @@ function createPermDock(policy, options) {
75
77
  };
76
78
  }
77
79
  //#endregion
78
- export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, sendResponse, toRequest, verifyWebBotAuth };
80
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, sendResponse, toRequest, webBotAuthVerifier };
@@ -1,11 +1,22 @@
1
- import { C as Policy, D as PolicyVocabulary, Nr as Principal, ln as PermDock } from "../policy-IB6yxpC3.js";
2
- import { f as Permission } from "../permissions-DttnqqxC.js";
3
- import { h as InvalidSignatureError, i as ProtectOptions, n as OpenApiHooks, w as verifyWebBotAuth, x as discoverViaSignatureAgent } from "../create-B1d519XK.js";
4
- import { t as ServerAdapterOptions } from "../bind-C_ob3LKa.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { r as PermDock } from "../permdock-D7eeLJER.js";
4
+ import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
5
+ import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
5
6
  import { FastifyPluginAsync, FastifyReply, FastifyRequest, FastifySchema, FastifyTypeProvider, FastifyTypeProviderDefault, RawRequestDefaultExpression, RawServerDefault, RouteGenericInterface } from "fastify";
7
+ //#region src/server/http.d.ts
8
+ /** A Fastify-style reply: `code`, `header` and `send`. */
9
+ type ReplyLike = {
10
+ code(status: number): unknown;
11
+ header(key: string, value: string): unknown;
12
+ send(body: string): unknown;
13
+ };
14
+ /** Writes `response` to a Fastify-style reply. */
15
+ declare function writeReply(reply: ReplyLike, response: Response): Promise<void>;
16
+ //#endregion
6
17
  //#region src/fastify/create.d.ts
7
18
  type FastifyPermDockOptions<TUser = unknown> = ServerAdapterOptions<FastifyRequest, TUser>;
8
- type PermDockRequest<Route extends RouteGenericInterface = RouteGenericInterface, V extends PolicyVocabulary = PolicyVocabulary> = FastifyRequest<Route> & {
19
+ type FastifyPermDockRequest<Route extends RouteGenericInterface = RouteGenericInterface, V extends PolicyVocabulary = PolicyVocabulary> = FastifyRequest<Route> & {
9
20
  permdock: PermDock<V>;
10
21
  permdockData?: unknown;
11
22
  };
@@ -13,21 +24,23 @@ type PermDockRequest<Route extends RouteGenericInterface = RouteGenericInterface
13
24
  type ProtectRequest<Route extends RouteGenericInterface = RouteGenericInterface, Schema extends FastifySchema = FastifySchema, Provider extends FastifyTypeProvider = FastifyTypeProviderDefault> = FastifyRequest<Route, RawServerDefault, RawRequestDefaultExpression, Schema, Provider>;
14
25
  /**
15
26
  * Generic over the route, schema and type provider so a `preHandler` slot
16
- * infers them: `loadData` sees the same typed `request.body` as the handler.
27
+ * infers them: `data` sees the same typed `request.body` as the handler.
17
28
  */
18
- type FastifyProtect = <Route extends RouteGenericInterface = RouteGenericInterface, Schema extends FastifySchema = FastifySchema, Provider extends FastifyTypeProvider = FastifyTypeProviderDefault>(permission: Permission | null, loadData?: (request: ProtectRequest<Route, Schema, Provider>) => unknown, protectOptions?: ProtectOptions) => (request: ProtectRequest<Route, Schema, Provider>, reply: FastifyReply) => Promise<void>;
29
+ type FastifyProtect = <Route extends RouteGenericInterface = RouteGenericInterface, Schema extends FastifySchema = FastifySchema, Provider extends FastifyTypeProvider = FastifyTypeProviderDefault>(permission: Permission | null, data?: (request: ProtectRequest<Route, Schema, Provider>) => unknown, protectOptions?: ProtectOptions) => (request: ProtectRequest<Route, Schema, Provider>, reply: FastifyReply) => Promise<void>;
19
30
  type FastifyPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
20
- readonly permdock: FastifyPluginAsync;
31
+ /** The `PermDock` for one request, for code the middleware does not run before. */
32
+ readonly getPermDock: (request: FastifyRequest) => Promise<PermDock<V>>;
33
+ readonly middleware: () => FastifyPluginAsync;
21
34
  readonly protect: FastifyProtect;
22
- readonly permdockHandler: FastifyPluginAsync;
23
- /** Types `request.permdock` for a route registered after `permdock` or `protect`. */
24
- readonly withPermDock: <Route extends RouteGenericInterface = RouteGenericInterface>(fn: (request: PermDockRequest<Route, V>, reply: FastifyReply) => unknown) => (request: FastifyRequest<Route>, reply: FastifyReply) => unknown;
35
+ readonly permdockHandler: () => FastifyPluginAsync;
36
+ /** Types `request.permdock` for a route registered after `middleware()` or `protect`. */
37
+ readonly withPermDock: <Route extends RouteGenericInterface = RouteGenericInterface>(fn: (request: FastifyPermDockRequest<Route, V>, reply: FastifyReply) => unknown) => (request: FastifyRequest<Route>, reply: FastifyReply) => unknown;
25
38
  readonly openapi: OpenApiHooks;
26
39
  };
27
40
  export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: FastifyPermDockOptions<TUser>): FastifyPermDock<V>;
28
41
  //#endregion
29
42
  //#region src/fastify/http.d.ts
30
43
  export declare function toRequest(request: FastifyRequest): Request;
31
- export declare function sendReply(reply: FastifyReply, response: Response): Promise<void>;
44
+ export declare const sendReply: typeof writeReply;
32
45
  //#endregion
33
- export { type FastifyPermDock, type FastifyPermDockOptions, type FastifyProtect, InvalidSignatureError, type PermDockRequest, discoverViaSignatureAgent, verifyWebBotAuth };
46
+ export { type FastifyPermDock, type FastifyPermDockOptions, type FastifyPermDockRequest, type FastifyProtect, InvalidSignatureError, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -1,33 +1,13 @@
1
- import { i as parsedBody, r as headersFrom, t as firstHeader } from "../http-SO7qGttf.js";
2
- import { i as discoverViaSignatureAgent, r as InvalidSignatureError, s as verifyWebBotAuth } from "../evaluations-tz6D9A2G.js";
3
- import { t as problemFromError } from "../map-error-pgUWNNtG.js";
4
- import { i as decorate, r as bindKernel } from "../bind-CuzGytRf.js";
1
+ import { c as writeReply, i as headersFrom, n as firstHeader, r as hasCredentials, t as fetchRequest } from "../http-BBoKefeS.js";
2
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
3
+ import { t as problemFromError } from "../map-error-TCAdw-eW.js";
4
+ import { i as decorate, r as bindKernel } from "../bind-CZzhx-Vj.js";
5
5
  //#region src/fastify/http.ts
6
6
  function toRequest(request) {
7
7
  const host = firstHeader(request.headers.host) ?? "localhost";
8
- const url = `${request.protocol}://${host}${request.url}`;
9
- const headers = headersFrom(request.headers);
10
- const method = request.method;
11
- if (method === "GET" || method === "HEAD") return new Request(url, {
12
- method,
13
- headers
14
- });
15
- const body = parsedBody(request.body, headers);
16
- if (body === void 0) return new Request(url, {
17
- method,
18
- headers
19
- });
20
- return new Request(url, {
21
- method,
22
- headers,
23
- body
24
- });
25
- }
26
- async function sendReply(reply, response) {
27
- reply.code(response.status);
28
- for (const [key, value] of response.headers.entries()) reply.header(key, value);
29
- await reply.send(await response.text());
8
+ return fetchRequest(`${request.protocol}://${host}${request.url}`, request.method, headersFrom(request.headers), request.body);
30
9
  }
10
+ const sendReply = writeReply;
31
11
  //#endregion
32
12
  //#region src/fastify/create.ts
33
13
  const SKIP_OVERRIDE = Symbol.for("skip-override");
@@ -41,17 +21,17 @@ function skipped(request) {
41
21
  return typeof config === "object" && config !== null && Reflect.get(config, "permdock") === false;
42
22
  }
43
23
  function createPermDock(policy, options) {
44
- const { kernel, bind, rebind, scopeOf, handlerScope } = bindKernel(policy, options, "fastify", toRequest);
45
- const permdock = breakEncapsulation((app) => {
24
+ const { kernel, bind, rebind, scopeOf, handlerScope, getPermDock, guard: runGuard } = bindKernel(policy, options, "fastify", toRequest);
25
+ const plugin = breakEncapsulation((app) => {
46
26
  app.decorateRequest("permdock", null);
47
27
  app.decorateRequest("permdockData", null);
48
28
  app.addHook("onRequest", async (request) => {
49
29
  if (skipped(request)) return;
50
- decorate(request, await kernel.permdock(bind(request), await scopeOf(request)));
30
+ decorate(request, await kernel.getPermDock(bind(request), await scopeOf(request)));
51
31
  });
52
32
  const previous = app.errorHandler;
53
33
  app.setErrorHandler(async function permdockErrors(err, request, reply) {
54
- const problem = problemFromError(err, { credentials: request.headers.authorization !== void 0 });
34
+ const problem = problemFromError(err, { credentials: hasCredentials(request) });
55
35
  if (problem === void 0) {
56
36
  await previous.call(this, err, request, reply);
57
37
  return;
@@ -60,16 +40,16 @@ function createPermDock(policy, options) {
60
40
  });
61
41
  return Promise.resolve();
62
42
  });
63
- const protect = (permission, loadData, protectOptions) => async (request, reply) => {
43
+ const protect = (permission, data, protectOptions) => async (request, reply) => {
64
44
  const plain = request;
65
- const guard = await kernel.protect(permission, loadData === void 0 ? void 0 : () => loadData(request), protectOptions)(bind(plain), await scopeOf(plain));
45
+ const guard = await runGuard(permission, data === void 0 ? void 0 : () => data(request), plain, protectOptions);
66
46
  if (!guard.ok) {
67
47
  await sendReply(reply, guard.response);
68
48
  return;
69
49
  }
70
50
  decorate(plain, guard.permdock, guard.data);
71
51
  };
72
- const permdockHandler = (app) => {
52
+ const handler = (app) => {
73
53
  const { POST, GET } = kernel.permdockHandler(handlerScope);
74
54
  app.post("/", async (request, reply) => {
75
55
  await sendReply(reply, await POST(rebind(request)));
@@ -81,12 +61,13 @@ function createPermDock(policy, options) {
81
61
  };
82
62
  const withPermDock = (fn) => (request, reply) => fn(request, reply);
83
63
  return {
84
- permdock,
64
+ getPermDock,
65
+ middleware: () => plugin,
85
66
  protect,
86
- permdockHandler,
67
+ permdockHandler: () => handler,
87
68
  withPermDock,
88
69
  openapi: kernel.openapi
89
70
  };
90
71
  }
91
72
  //#endregion
92
- export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, sendReply, toRequest, verifyWebBotAuth };
73
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, sendReply, toRequest, webBotAuthVerifier };
@@ -0,0 +1,120 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { o as isPermission } from "./permission-registry-Br4jSNVi.js";
3
+ import { r as hasCredentials } from "./http-BBoKefeS.js";
4
+ import { a as methodNotAllowed } from "./problem-CTviyH5L.js";
5
+ import { t as problemFromError } from "./map-error-TCAdw-eW.js";
6
+ import { i as decorate, r as bindKernel } from "./bind-CZzhx-Vj.js";
7
+ //#region src/server/fetch-adapter.ts
8
+ /**
9
+ * `protect(target, data, options)(handler)` for a framework whose routes are
10
+ * plain handlers: a refusal is the response, a grant sets `permdock` and
11
+ * `permdockData` on the event's locals before `handler` runs.
12
+ */
13
+ function guardedRoute(adapter, route, target, data, protectOptions) {
14
+ return (handler) => async (event) => {
15
+ const context = route.context(event);
16
+ const guard = await adapter.guard(target, data === void 0 ? void 0 : () => data(event), context, protectOptions);
17
+ if (!guard.ok) return guard.response;
18
+ decorate(route.locals(event), guard.permdock, guard.data);
19
+ return adapter.mapErrors(context, () => handler(event));
20
+ };
21
+ }
22
+ /** `withPermDock(handler)`: the instance on the event's locals, built when no middleware set it. */
23
+ function instanceRoute(adapter, route) {
24
+ return (handler) => async (event) => {
25
+ const context = route.context(event);
26
+ const attached = await adapter.ensure(route.locals(event), context);
27
+ if (!attached.ok) return attached.response;
28
+ return adapter.mapErrors(context, () => handler(event));
29
+ };
30
+ }
31
+ const ALLOW = "GET, HEAD, POST";
32
+ /**
33
+ * The permission and row loader behind a `protect` target. For an operation,
34
+ * `input` reads its input from the request and the operation's `data` loads
35
+ * the row; an operation without `data` checks the permission with no row.
36
+ */
37
+ function protectTarget(target, input) {
38
+ if (target === null || isPermission(target)) return {
39
+ permission: target,
40
+ data: input
41
+ };
42
+ const load = target.data;
43
+ return {
44
+ permission: target.permission,
45
+ data: load === void 0 ? void 0 : async (context) => load(input === void 0 ? void 0 : await input(context))
46
+ };
47
+ }
48
+ function held(target) {
49
+ const value = Reflect.get(target, "permdock");
50
+ return value === void 0 || value === null ? void 0 : value;
51
+ }
52
+ /**
53
+ * The kernel of an adapter whose framework hands its handlers a Fetch
54
+ * `Request` inside its own context object (SvelteKit, Astro, h3, SolidStart,
55
+ * TanStack Start).
56
+ */
57
+ function fetchAdapter(policy, options, adapter, requestOf) {
58
+ const { kernel, bind, scopeOf, handlerScope, attach, guard } = bindKernel(policy, options, adapter, requestOf);
59
+ const getPermDock = async (context) => kernel.getPermDock(bind(context), await scopeOf(context));
60
+ const getSnapshot = async (context, query = {}) => {
61
+ return (await kernel.getPermDock(bind(context), query.tenant === void 0 ? await scopeOf(context) : { tenant: query.tenant })).snapshot(compact({
62
+ include: query.include,
63
+ tenants: query.tenants
64
+ }));
65
+ };
66
+ const ensure = async (target, context) => {
67
+ const existing = held(target);
68
+ if (existing !== void 0) return {
69
+ ok: true,
70
+ permdock: existing
71
+ };
72
+ const result = await attach(context);
73
+ if (result.ok) decorate(target, result.permdock);
74
+ return result;
75
+ };
76
+ const mapErrors = async (context, work) => {
77
+ try {
78
+ return await work();
79
+ } catch (error) {
80
+ const problem = problemFromError(error, { credentials: hasCredentials(requestOf(context)) });
81
+ if (problem === void 0) throw error;
82
+ return problem;
83
+ }
84
+ };
85
+ const handlers = () => {
86
+ const { GET, POST } = kernel.permdockHandler(handlerScope);
87
+ return {
88
+ GET: (context) => GET(bind(context)),
89
+ POST: (context) => POST(bind(context))
90
+ };
91
+ };
92
+ const handler = () => {
93
+ const { GET, POST } = handlers();
94
+ return (context) => {
95
+ switch (requestOf(context).method) {
96
+ case "GET":
97
+ case "HEAD": return GET(context);
98
+ case "POST": return POST(context);
99
+ default: return Promise.resolve(methodNotAllowed(ALLOW));
100
+ }
101
+ };
102
+ };
103
+ return {
104
+ kernel,
105
+ getPermDock,
106
+ getSnapshot,
107
+ attach,
108
+ guard: (target, data, context, protectOptions) => {
109
+ const resolved = protectTarget(target, data);
110
+ return guard(resolved.permission, resolved.data, context, protectOptions);
111
+ },
112
+ ensure,
113
+ connection: async (context, connectionOptions) => kernel.connection(bind(context), connectionOptions, await scopeOf(context)),
114
+ mapErrors,
115
+ handlers,
116
+ handler
117
+ };
118
+ }
119
+ //#endregion
120
+ export { guardedRoute as n, instanceRoute as r, fetchAdapter as t };
@@ -0,0 +1,31 @@
1
+ import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
2
+ import { a as OperationInput, t as Operation } from "./operations-CxybZErY.js";
3
+ import { n as RevocationFeed } from "./revocations-R07lFBnX.js";
4
+ import { o as ProtectOptions } from "./server-types-BLd4MnBX.js";
5
+ import { t as ServerAdapterOptions } from "./bind--9EFVYWF.js";
6
+ //#region src/server/fetch-adapter.d.ts
7
+ /** What `protect` checks: a permission, an operation from `defineOperations`, or `null` for a route that needs only OAuth scopes. */
8
+ type ProtectTarget = Permission | Operation | null;
9
+ /** Reads a value from the framework context; may be async. */
10
+ type ContextReader<TContext, T> = (context: TContext) => T | Promise<T>;
11
+ /**
12
+ * `protect`'s overloads: a permission takes the row loader, an operation the
13
+ * reader of its input, which the operation's `data` turns into the row.
14
+ */
15
+ type FetchProtect<TContext, TResult> = {
16
+ <T = unknown>(permission: Permission | null, data?: ContextReader<TContext, T | null | undefined>, protectOptions?: ProtectOptions): TResult;
17
+ <TOperation extends Operation>(operation: TOperation, input?: ContextReader<TContext, OperationInput<TOperation>>, protectOptions?: ProtectOptions): TResult;
18
+ };
19
+ type FetchAdapterOptions<TContext, TUser = unknown> = ServerAdapterOptions<TContext, TUser> & {
20
+ /** Ends or revalidates open streams and sockets; never a decision input. */
21
+ readonly revocations?: RevocationFeed;
22
+ };
23
+ /** The decision endpoint, one handler per method. */
24
+ type PermDockHandlers<TContext> = {
25
+ /** The snapshot for `permdock/react` and the other client entries. */
26
+ readonly GET: (context: TContext) => Promise<Response>;
27
+ /** AuthZEN-shaped evaluations. */
28
+ readonly POST: (context: TContext) => Promise<Response>;
29
+ };
30
+ //#endregion
31
+ export { ProtectTarget as a, PermDockHandlers as i, FetchAdapterOptions as n, FetchProtect as r, ContextReader as t };
@@ -0,0 +1,203 @@
1
+ import { i as configError } from "./errors-CWTY6uih.js";
2
+ import { s as jsonSchemaOf } from "./catalog-doc-C9wjsfNY.js";
3
+ import { F as quoteQualified, N as quoteIdent, P as quoteLiteral, j as helperSchema, s as signedIn } from "./shared-CD11nBbC.js";
4
+ import { c as branchClauses, i as orSql, s as andSql, u as wrapSql } from "./policies-CO1oOymN.js";
5
+ //#region src/cli/rls/fields.ts
6
+ /** Names of the field-view objects. Part of the SQL contract. */
7
+ const FIELD_VIEWS = {
8
+ /** `<table>_visible`: the `security_invoker` view clients read. */
9
+ view: "_visible",
10
+ /** `<table>_visible_fields`: the owner-rights companion `--revoke-columns` adds. */
11
+ companion: "_visible_fields",
12
+ /** The companion's row-key column, joined to the base table's key. */
13
+ key: "permdock_key",
14
+ /** Marks the companion so doctor PD022 knows it reads as its owner on purpose. */
15
+ comment: "permdock:field-companion"
16
+ };
17
+ function covers(branch, column) {
18
+ return branch.fields === void 0 || branch.fields.includes(column);
19
+ }
20
+ /**
21
+ * A read grant that only shapes columns: a field-limited deny (it never
22
+ * denies the row) or an allow with an empty list (it grants nothing). With
23
+ * field views it leaves the row policy and lives in the view's masks.
24
+ */
25
+ function fieldOnly(branch) {
26
+ if (branch.command !== "select" || branch.fields === void 0) return false;
27
+ return branch.effect === "deny" || branch.fields.length === 0;
28
+ }
29
+ /** Branches the row policies keep when field views compile. */
30
+ function rowBranches(branches) {
31
+ return branches.filter((branch) => !fieldOnly(branch));
32
+ }
33
+ /**
34
+ * Whether the reader is signed in, for branches with no helper call: a grant
35
+ * to any signed-in user relies on `to authenticated` in its policy, which a
36
+ * view does not have.
37
+ */
38
+ function audience(ctx, branch) {
39
+ if (branch.access !== void 0 || branch.roles.length !== 1) return;
40
+ if (branch.roles[0] === "authenticated") return signedIn(ctx);
41
+ return branch.roles[0] === "anon" ? `not (${signedIn(ctx)})` : void 0;
42
+ }
43
+ function clause(ctx, branch) {
44
+ return andSql(audience(ctx, branch), branchClauses(branch).using) ?? "true";
45
+ }
46
+ /**
47
+ * `can(permission, row, { field })` in SQL: an allow that covers the column
48
+ * holds for the row and no covering deny does. Every access term is the
49
+ * uncorrelated helper call the row policy uses, so it runs once per statement.
50
+ */
51
+ function maskSql(ctx, allows, denies, column) {
52
+ const allowed = allows.filter((branch) => covers(branch, column)).map((branch) => clause(ctx, branch));
53
+ if (allowed.length === 0) return "false";
54
+ const denied = denies.filter((branch) => covers(branch, column)).map((branch) => clause(ctx, branch));
55
+ const allow = orSql(allowed);
56
+ if (denied.length === 0) return allow;
57
+ const deny = orSql(denied);
58
+ return allow === "true" ? `not ${wrapSql(deny)}` : `${wrapSql(allow)} and not ${wrapSql(deny)}`;
59
+ }
60
+ function schemaColumns(policy, resource) {
61
+ const node = policy.resources.get(resource);
62
+ const schema = node === void 0 ? null : jsonSchemaOf(node);
63
+ const properties = schema !== null && typeof schema === "object" ? schema.properties : void 0;
64
+ return properties !== null && typeof properties === "object" ? Object.keys(properties) : void 0;
65
+ }
66
+ function viewName(table, suffix) {
67
+ return `${table}${suffix}`;
68
+ }
69
+ /**
70
+ * `<helper schema>.<table>_visible_fields`: outside the Data API's schemas,
71
+ * so its owner rights reach clients only through the `_visible` join.
72
+ */
73
+ function companionName(ctx, table) {
74
+ const base = table.startsWith("public.") ? table.slice(7) : table.replaceAll(".", "_");
75
+ return `${helperSchema(ctx)}.${viewName(base, FIELD_VIEWS.companion)}`;
76
+ }
77
+ /**
78
+ * One view per table whose read grants limit fields. A column is restricted
79
+ * when some read allow lists fields without it or some read deny lists it;
80
+ * every other column, and the row key, passes through unchanged.
81
+ */
82
+ function fieldViews(policy, ctx, branches, options, warnings) {
83
+ const byTable = /* @__PURE__ */ new Map();
84
+ for (const branch of branches) {
85
+ if (branch.command !== "select" || branch.coverage === true) continue;
86
+ byTable.set(branch.table, [...byTable.get(branch.table) ?? [], branch]);
87
+ }
88
+ const views = [];
89
+ for (const [table, reads] of byTable) {
90
+ const allows = reads.filter((branch) => branch.effect === "allow" && branch.fields?.length !== 0);
91
+ const denies = reads.filter((branch) => branch.effect === "deny");
92
+ const limited = reads.some((branch) => branch.fields !== void 0);
93
+ const resource = reads.find((branch) => branch.resource !== void 0)?.resource;
94
+ if (!limited || allows.length === 0 || resource === void 0) continue;
95
+ const names = schemaColumns(policy, resource);
96
+ if (names === void 0) throw configError(`PermDock CLI: --fields views needs the ${resource} schema's JSON Schema (Standard JSON Schema) to list the columns of ${table}`);
97
+ const key = policy.resources.get(resource)?.id ?? "id";
98
+ const restricted = (column) => column !== key && (allows.some((branch) => branch.fields !== void 0 && !branch.fields.includes(column)) || denies.some((branch) => branch.fields?.includes(column) === true));
99
+ const columns = names.map((name) => {
100
+ quoteIdent(name);
101
+ return restricted(name) ? {
102
+ name,
103
+ mask: maskSql(ctx, allows, denies, name)
104
+ } : { name };
105
+ });
106
+ if (columns.every((column) => column.mask === void 0)) continue;
107
+ const view = viewName(table, FIELD_VIEWS.view);
108
+ if (allows.some((branch) => branch.fields !== void 0 && !branch.fields.includes(key))) warnings.push(`field view ${view}: the key ${key} passes through, although a read grant on ${resource} omits it`);
109
+ const hidden = columns.filter((column) => column.mask !== void 0).map((column) => column.name);
110
+ if (options.helpersOnly === true) warnings.push(`field view ${view}: ${table} still returns ${hidden.join(", ")} to direct reads; revoke select on those columns from client roles in your own grants, or read them through a function`);
111
+ else if (!options.revokeColumns) warnings.push(`field view ${view}: ${table} still returns ${hidden.join(", ")} to direct reads; add --revoke-columns so clients read through the view`);
112
+ views.push({
113
+ resource,
114
+ table,
115
+ view,
116
+ key,
117
+ columns,
118
+ roles: reads.some((branch) => branch.roles.includes("anon")) ? ["anon", "authenticated"] : ["authenticated"],
119
+ ...options.revokeColumns ? { companion: companionName(ctx, table) } : {}
120
+ });
121
+ }
122
+ return views;
123
+ }
124
+ /** Columns of `view`'s table that `anon` and `authenticated` keep on the base table with `--revoke-columns`. */
125
+ function readableColumns(view) {
126
+ return view.columns.filter((column) => column.mask === void 0).map((column) => column.name);
127
+ }
128
+ function restrictedColumns(view) {
129
+ return view.columns.filter((column) => column.mask !== void 0).map((column) => column.name);
130
+ }
131
+ function columnList(names) {
132
+ return names.map(quoteIdent).join(", ");
133
+ }
134
+ function selectList(lines) {
135
+ return lines.map((line) => ` ${line}`).join(",\n");
136
+ }
137
+ function grantView(name, roles) {
138
+ return [`revoke all on table ${quoteQualified(name)} from anon, authenticated, public;`, `grant select on table ${quoteQualified(name)} to ${roles.join(", ")};`].join("\n");
139
+ }
140
+ function inlineViewSql(view) {
141
+ const targets = view.columns.map((column) => column.mask === void 0 ? quoteIdent(column.name) : `case when ${column.mask} then ${quoteIdent(column.name)} end as ${quoteIdent(column.name)}`);
142
+ return `create or replace view ${quoteQualified(view.view)} with (security_invoker = true) as
143
+ select
144
+ ${selectList(targets)}
145
+ from ${quoteQualified(view.table)};`;
146
+ }
147
+ function companionSql(view, companion) {
148
+ const restricted = view.columns.filter((column) => column.mask !== void 0);
149
+ const targets = [`${quoteIdent(view.key)} as ${quoteIdent(FIELD_VIEWS.key)}`, ...restricted.map((column) => `case when ${column.mask} then ${quoteIdent(column.name)} end as ${quoteIdent(column.name)}`)];
150
+ const any = orSql(restricted.map((column) => column.mask ?? "false"));
151
+ const name = companion.slice(0, companion.indexOf("."));
152
+ const schema = quoteIdent(name);
153
+ return `${name === "public" ? "" : `create schema if not exists ${schema};
154
+ revoke all on schema ${schema} from public;
155
+ grant usage on schema ${schema} to ${view.roles.join(", ")};
156
+ `}create or replace view ${quoteQualified(companion)} with (security_barrier = true) as
157
+ select
158
+ ${selectList(targets)}
159
+ from ${quoteQualified(view.table)}
160
+ where ${any};
161
+ comment on view ${quoteQualified(companion)} is ${quoteLiteral(`${FIELD_VIEWS.comment} ${view.view}`)};`;
162
+ }
163
+ function joinedViewSql(view, companion) {
164
+ const targets = view.columns.map((column) => column.mask === void 0 ? `t.${quoteIdent(column.name)}` : `f.${quoteIdent(column.name)}`);
165
+ return `create or replace view ${quoteQualified(view.view)} with (security_invoker = true) as
166
+ select
167
+ ${selectList(targets)}
168
+ from ${quoteQualified(view.table)} t
169
+ left join ${quoteQualified(companion)} f on f.${quoteIdent(FIELD_VIEWS.key)} = t.${quoteIdent(view.key)};`;
170
+ }
171
+ /** `select` on only the unrestricted columns (and the key) of the base table, for `--revoke-columns`. */
172
+ function columnGrantSql(view, role) {
173
+ return `grant select (${columnList(readableColumns(view))}) on table ${quoteQualified(view.table)} to ${role};`;
174
+ }
175
+ function columnRevokeSql(view) {
176
+ return `revoke select (${columnList(restrictedColumns(view))}) on table ${quoteQualified(view.table)} from anon, authenticated;`;
177
+ }
178
+ /**
179
+ * The view SQL: the `security_invoker` view, and with `--revoke-columns` the
180
+ * owner-rights companion it joins for the restricted columns. The companion
181
+ * masks every column with the full field decision and keeps only rows where
182
+ * one is readable, so reading it directly shows nothing `pick` would not.
183
+ */
184
+ function fieldViewsSql(views) {
185
+ return views.map((view) => {
186
+ const head = `-- field view over ${view.table}: ${restrictedColumns(view).join(", ")} read as null unless a read grant covers the column for the row`;
187
+ if (view.companion === void 0) return [
188
+ head,
189
+ inlineViewSql(view),
190
+ grantView(view.view, view.roles)
191
+ ].join("\n");
192
+ return [
193
+ head,
194
+ `-- ${view.companion} reads ${view.table} as its owner; ${view.view} reads the rows as the caller and joins it`,
195
+ companionSql(view, view.companion),
196
+ grantView(view.companion, view.roles),
197
+ joinedViewSql(view, view.companion),
198
+ grantView(view.view, view.roles)
199
+ ].join("\n");
200
+ }).join("\n\n");
201
+ }
202
+ //#endregion
203
+ export { fieldViewsSql as a, fieldViews as i, columnGrantSql as n, rowBranches as o, columnRevokeSql as r, viewName as s, FIELD_VIEWS as t };