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,9 +1,22 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { c as rowIdOf, n as parseSnapshot } from "./snapshot-Enxd0n-s.js";
3
- import { u as nowSeconds } from "./validity-uOp8UpYn.js";
4
- import { n as payloadDigest } from "./token-CIWxJOCh.js";
5
- import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-CTLijvdm.js";
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { g as secondsOf } from "./time-DkWjdL98.js";
3
+ import { c as rowIdOf } from "./delegation-DaXVdDhM.js";
4
+ import { c as nowSeconds } from "./tenancy-DN2QAx9z.js";
5
+ import { n as payloadDigest } from "./token-BLZcjQgt.js";
6
+ import { n as parseSnapshot } from "./snapshot-CXUWfsNy.js";
7
+ import { s as snapshotClaim } from "./where-scope-Dv-WTP-w.js";
8
+ import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-D2lZt4Dd.js";
6
9
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
10
+ //#region src/client/source.ts
11
+ /** A compact JWS: three non-empty dot-separated parts. */
12
+ function isJws(value) {
13
+ const parts = value.split(".");
14
+ return parts.length === 3 && parts.every((part) => part.length > 0);
15
+ }
16
+ function isPromiseLike(value) {
17
+ return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
18
+ }
19
+ //#endregion
7
20
  //#region src/client/approvals.ts
8
21
  /** Ceiling for the approval poll backoff after a failed status request. */
9
22
  const APPROVAL_BACKOFF_CAP_MS = 6e4;
@@ -237,16 +250,6 @@ function storeRequest(fetchImpl, headers) {
237
250
  });
238
251
  }
239
252
  //#endregion
240
- //#region src/client/source.ts
241
- /** A compact JWS: three non-empty dot-separated parts. */
242
- function isJws(value) {
243
- const parts = value.split(".");
244
- return parts.length === 3 && parts.every((part) => part.length > 0);
245
- }
246
- function isPromiseLike(value) {
247
- return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
248
- }
249
- //#endregion
250
253
  //#region src/client/store.ts
251
254
  function withTenant(source, tenant) {
252
255
  if (tenant === void 0) return source;
@@ -380,11 +383,13 @@ function createClientStore(options) {
380
383
  return "ready";
381
384
  };
382
385
  const isStale = () => {
383
- const maxAge = snapshot.issuedAt > 0 ? options.maxAge : void 0;
384
- if (snapshot.expiresAt === void 0 && maxAge === void 0) return false;
386
+ const issuedAt = secondsOf(snapshot.issuedAt) ?? 0;
387
+ const expiresAt = secondsOf(snapshot.expiresAt);
388
+ const maxAge = issuedAt > 0 ? options.maxAge : void 0;
389
+ if (expiresAt === void 0 && maxAge === void 0) return false;
385
390
  const now = nowSeconds();
386
- if (snapshot.expiresAt !== void 0 && snapshot.expiresAt <= now) return true;
387
- return maxAge !== void 0 && now - snapshot.issuedAt > maxAge;
391
+ if (expiresAt !== void 0 && expiresAt <= now) return true;
392
+ return maxAge !== void 0 && now - issuedAt > maxAge;
388
393
  };
389
394
  const serverOnly = () => {
390
395
  hydrate(emptySnapshot());
@@ -401,8 +406,8 @@ function createClientStore(options) {
401
406
  const verifyJws = async (raw) => {
402
407
  if (options.verifier === void 0) return;
403
408
  try {
404
- const verified = await options.verifier.verify(raw, { typ: "permdock-snapshot+jwt" });
405
- return verified.ok ? verified.claims["snapshot"] : void 0;
409
+ const verified = await options.verifier.verify(raw, { typ: "vnd.permdock.snapshot+jwt" });
410
+ return verified.ok ? snapshotClaim(verified.claims) : void 0;
406
411
  } catch {
407
412
  return;
408
413
  }
@@ -565,7 +570,7 @@ function createClientStore(options) {
565
570
  signed = body;
566
571
  body = await verifyJws(body);
567
572
  ok = body !== void 0;
568
- }
573
+ } else if (ok && options.verifier !== void 0) ok = false;
569
574
  refreshing -= 1;
570
575
  if (started !== generation || seq !== refreshSeq) {
571
576
  emit();
@@ -692,6 +697,14 @@ function hintOnce() {
692
697
  console.info(`PermDock: ${permission.key} needs the server (a closure, graph relation or period grant) and endpoint is false, so it is denied with reason server-only; check it on the server instead`);
693
698
  };
694
699
  }
700
+ /** Runs both hooks: the one the adapter needs first, then the provider option. */
701
+ function both(first, second) {
702
+ if (first === void 0 || second === void 0) return first ?? second;
703
+ return (...args) => {
704
+ first(...args);
705
+ second(...args);
706
+ };
707
+ }
695
708
  function adapterStore(options, snapshot, native) {
696
709
  return createClientStore(compact({
697
710
  snapshot,
@@ -708,8 +721,9 @@ function adapterStore(options, snapshot, native) {
708
721
  passCache: options.passCache,
709
722
  server: native?.server,
710
723
  stale: native?.stale,
711
- onSnapshot: native?.onSnapshot,
712
- onClear: native?.onClear
724
+ onSnapshot: both(native?.onSnapshot, options.onSnapshot),
725
+ onClear: both(native?.onClear, options.onClear),
726
+ approvalInterval: options.approvalInterval
713
727
  }));
714
728
  }
715
729
  //#endregion
@@ -1,5 +1,5 @@
1
- import { c as subjectView, i as permissionSet, l as tenantView, n as filterResult, o as rolesView, r as livePermDock, t as approvalHandle } from "./views-Soe7bGSC.js";
2
- import { n as providePermDock, t as getStore } from "./context-Bcy85rGi.js";
1
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, n as describeWith, o as permissionSet, r as filterResult, t as approvalHandle } from "./views-DTIIO-oQ.js";
2
+ import { n as getUi, r as providePermDock, t as getStore } from "./context-bbFHR-0D.js";
3
3
  import { readable, toStore } from "svelte/store";
4
4
  //#region src/svelte/stores.ts
5
5
  function fromStore(store, compute) {
@@ -23,6 +23,10 @@ function setPermDock(options) {
23
23
  function getPermDock() {
24
24
  return sveltePermDock(getStore());
25
25
  }
26
+ /** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
27
+ function getDescribe() {
28
+ return describeWith(getUi().messages);
29
+ }
26
30
  function permission(reference, data) {
27
31
  return permissionFor(getStore(), reference, data);
28
32
  }
@@ -84,4 +88,4 @@ function approvalFor(store, decision) {
84
88
  return fromStore(store, () => approvalHandle(store, decision()));
85
89
  }
86
90
  //#endregion
87
- export { getPermDock as a, permissions as c, subject as d, tenant as f, filtered as i, roles as l, assignable as n, memberships as o, assignablePermissions as r, permission as s, approval as t, setPermDock as u };
91
+ export { getDescribe as a, permission as c, setPermDock as d, subject as f, filtered as i, permissions as l, assignable as n, getPermDock as o, tenant as p, assignablePermissions as r, memberships as s, approval as t, roles as u };
@@ -0,0 +1,30 @@
1
+ import { Nn as Decision, nr as Membership } from "./policy-types-DzwivBgR.js";
2
+ import { r as Role, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
+ import { r as DescribeOptions, t as DecisionDescription } from "./describe-BZUsixiL.js";
4
+ import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, l as PermissionState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "./types-BNORmDM8.js";
5
+ import { n as SveltePermDockOptions } from "./types-fbZ7JEXr.js";
6
+ import { Readable } from "svelte/store";
7
+ //#region src/svelte/stores.d.ts
8
+ declare function setPermDock(options: SveltePermDockOptions): ClientPermDock;
9
+ declare function getPermDock(): ClientPermDock;
10
+ /** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
11
+ declare function getDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
12
+ declare function permission(reference: Permission, data?: () => unknown): Readable<PermissionState>;
13
+ declare function permissions(references: () => readonly Permission[], data?: () => unknown): Readable<PermissionSet>;
14
+ declare function filtered<T>(reference: Permission<string, T, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
15
+ declare function tenant(): Readable<TenantView>;
16
+ declare function memberships(): Readable<readonly Membership[]>;
17
+ declare function roles(options?: () => RolesOptions): Readable<{
18
+ readonly roles: readonly Role[];
19
+ }>;
20
+ declare function assignable(): Readable<readonly Role[]>;
21
+ type AssignableOptions = {
22
+ readonly tenant?: string;
23
+ } | (() => {
24
+ readonly tenant?: string;
25
+ });
26
+ declare function assignablePermissions(options?: AssignableOptions): Readable<readonly Permission[]>;
27
+ declare function subject(): Readable<SubjectView>;
28
+ declare function approval(decision: () => Decision): Readable<ApprovalHandle>;
29
+ //#endregion
30
+ export { getDescribe as a, permission as c, setPermDock as d, subject as f, filtered as i, permissions as l, assignable as n, getPermDock as o, tenant as p, assignablePermissions as r, memberships as s, approval as t, roles as u };
@@ -1,5 +1,5 @@
1
- import { f as Permission } from "./permissions-DttnqqxC.js";
2
- import { i as ProtectOptions } from "./create-B1d519XK.js";
1
+ import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
2
+ import { o as ProtectOptions } from "./server-types-BLd4MnBX.js";
3
3
  //#region src/server/stream.d.ts
4
4
  type StreamProtectOptions = ProtectOptions & {
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { r as PermDockRevokedError } from "./errors-Cz5zn0mW.js";
1
+ import { r as PermDockRevokedError } from "./errors-BKy0EfhN.js";
2
2
  //#region src/server/stream.ts
3
3
  function isAsyncIterable(value) {
4
4
  return value !== null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function";
@@ -22,6 +22,7 @@ async function* guardIterable(source, connection, options) {
22
22
  const next = await Promise.race([iterator.next(), aborted]);
23
23
  if (next.done === true) return next.value;
24
24
  const row = options.unwrap === void 0 ? next.value : options.unwrap(next.value);
25
+ await Promise.race([connection.settled(), aborted]);
25
26
  if (options.items === void 0 || connection.check(options.items, row).outcome === "granted") yield next.value;
26
27
  }
27
28
  } catch (error) {
@@ -49,6 +50,13 @@ function reloadAfter(loaded, load) {
49
50
  }
50
51
  /** WebSocket close code for a policy violation (RFC 6455 section 7.4.1). */
51
52
  const POLICY_VIOLATION = 1008;
53
+ /**
54
+ * The close reason for a problem: its PermDock type URI, or its `detail`
55
+ * code for an `about:blank` one. RFC 6455 caps a reason at 123 bytes.
56
+ */
57
+ function closeReason(problem) {
58
+ return problem.type === "about:blank" ? problem.detail : problem.type;
59
+ }
52
60
  /** The Problem Details for an aborted connection signal. */
53
61
  function revokedProblem(signal) {
54
62
  const reason = signal.reason;
@@ -63,4 +71,4 @@ function onRevoked(connection, end) {
63
71
  else connection.signal.addEventListener("abort", fire, { once: true });
64
72
  }
65
73
  //#endregion
66
- export { reloadAfter as a, onRevoked as i, guardIterable as n, isAsyncIterable as r, POLICY_VIOLATION as t };
74
+ export { onRevoked as a, isAsyncIterable as i, closeReason as n, reloadAfter as o, guardIterable as r, POLICY_VIOLATION as t };
@@ -0,0 +1 @@
1
+ export { t as createStyle, n as streamHasColors } from "./style-Uao76wO7.js";
@@ -1,12 +1,13 @@
1
1
  import { styleText } from "node:util";
2
- //#region src/cli/style.ts
2
+ //#region src/cli/core/style.ts
3
3
  function createStyle(color) {
4
4
  const paint = (format, text) => color ? styleText(format, text, { validateStream: false }) : text;
5
5
  return {
6
6
  color,
7
7
  paint,
8
8
  errorMark: color ? paint("red", "✖") : "error",
9
- warnMark: color ? paint("yellow", "⚠") : "warn"
9
+ warnMark: color ? paint("yellow", "⚠") : "warn",
10
+ okMark: color ? paint("green", "✔") : "ok"
10
11
  };
11
12
  }
12
13
  /**
@@ -0,0 +1,17 @@
1
+ //#region src/core/subject.ts
2
+ function isSubject(value) {
3
+ return value !== null && typeof value === "object" && "principal" in value && "context" in value && typeof value.context === "object";
4
+ }
5
+ function isActor(value) {
6
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
7
+ const record = value;
8
+ return typeof record.id === "string" && typeof record.kind === "string";
9
+ }
10
+ function anonymousSubject(context = {}) {
11
+ return Object.freeze({
12
+ principal: null,
13
+ context: Object.freeze({ ...context })
14
+ });
15
+ }
16
+ //#endregion
17
+ export { isActor as n, isSubject as r, anonymousSubject as t };
@@ -1,3 +1,20 @@
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ //#region src/conditions/peer.ts
3
+ /**
4
+ * Requires an optional peer through `node:module`. Feature-detected so the
5
+ * entry loads on runtimes without a Node module loader; there the caller
6
+ * injects the peer and `message` names the option that does it.
7
+ */
8
+ function loadPeer(id, message) {
9
+ const loader = globalThis.process?.getBuiltinModule?.("node:module");
10
+ try {
11
+ if (loader === void 0) throw new Error("no module loader");
12
+ return loader.createRequire(import.meta.url)(id);
13
+ } catch {
14
+ throw new Error(message);
15
+ }
16
+ }
17
+ //#endregion
1
18
  //#region src/conditions/row-check.ts
2
19
  const MISSING = Object.freeze({ found: false });
3
20
  const GRANTED = Object.freeze({
@@ -24,9 +41,6 @@ function settingName(name, what) {
24
41
  if (!NAME.test(name)) throw new Error(`PermDock: unsafe ${what} '${name}'`);
25
42
  return name;
26
43
  }
27
- function isRecord(value) {
28
- return typeof value === "object" && value !== null && !Array.isArray(value);
29
- }
30
44
  function strings(value) {
31
45
  return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
32
46
  }
@@ -120,9 +134,13 @@ function statementText(statement) {
120
134
  for (const [index, part] of statement.strings.entries()) text = index === 0 ? part : `${text}$${String(index)}${part}`;
121
135
  return text;
122
136
  }
137
+ /** Strings as a template-strings array, for calling a `sql` tag directly. */
138
+ function templateOf(parts) {
139
+ return Object.assign([...parts], { raw: [...parts] });
140
+ }
123
141
  /** A statement as a template-strings array, for `sql` tags. */
124
142
  function statementTemplate(statement) {
125
- return Object.assign([...statement.strings], { raw: [...statement.strings] });
143
+ return templateOf(statement.strings);
126
144
  }
127
145
  //#endregion
128
- export { rowCheckOf as a, rowCheckFrom as i, statementText as n, subjectStatements as r, statementTemplate as t };
146
+ export { rowCheckFrom as a, templateOf as i, statementText as n, rowCheckOf as o, subjectStatements as r, loadPeer as s, statementTemplate as t };
@@ -1,8 +1,9 @@
1
- import { C as Policy, Dr as CustomRole, Mr as Membership, Pr as Subject, gt as MembershipSource, mt as MemberEntry, xt as RoleSource } from "../policy-IB6yxpC3.js";
2
- import { c as ApprovalRequest, f as ApprovalStore } from "../types-aqOHTHcp.js";
3
- import { C as SupabaseClaimsSchema, E as supabaseClaims, S as SupabaseClaimsOptions, T as SupabasePermDockClaims, _ as SupabaseSuspendedMembership, a as SupabaseActorResult, b as SupabaseActClaim, c as SupabaseMembershipTable, d as SupabaseRealtime, f as SupabaseRlsConfig, g as SupabaseSubjectOptions, h as SupabaseStorage, i as SupabaseActor, l as SupabasePermissionRef, m as SupabaseSessionLike, n as RoleThrough, o as SupabaseDelegation, p as SupabaseRlsOptions, r as SupabaseActiveRow, s as SupabaseInclude, t as AuthorizeSqlOptions, u as SupabasePrincipal, v as SupabaseSuspendedScope, w as SupabaseMembershipClaim, x as SupabaseClaims, y as SupabaseSuspension } from "../types-C97IskBw.js";
4
- import { a as SupabaseManifestHelper, c as SupabaseManifestRls, d as SupabaseManifestValue, f as parseSupabaseManifest, i as SupabaseManifestColumn, l as SupabaseManifestRole, n as SupabaseHookManifest, o as SupabaseManifestMembership, r as SupabaseManifestActiveRow, s as SupabaseManifestRequires, t as SupabaseHookClaim, u as SupabaseManifestThrough } from "../manifest-uDS9y5de.js";
5
- import { a as MembershipTableOptions, c as SupabasePostgres, d as fromSupabasePostgres, f as fromTable, i as MembershipSql, l as authzVersion, n as MembershipHolders, o as SqlMembershipSource, r as MembershipJunctionOptions, s as SqlQuery, t as AUTHZ_VERSION_TABLE, u as fromJunction } from "../sources-BdOYLw9j.js";
1
+ import { Rt as Instant, ir as Subject } from "../policy-types-DzwivBgR.js";
2
+ import { a as ApprovalDelegationSource, m as ApprovalStore, u as ApprovalRequest } from "../types-CCpc2Dcv.js";
3
+ import { a as SupabaseRpcClient, c as readSubjectRecord, i as SupabaseRpcCaller, n as PostgrestSourcesOptions, o as SupabaseRpcResult, r as SubjectRecord, s as postgrestSources, t as PostgrestSources } from "../postgrest-NUqZT-RB.js";
4
+ import { C as SupabaseClaimsSchema, E as supabaseClaims, S as SupabaseClaimsOptions, T as SupabasePermDockClaims, _ as SupabaseSuspendedMembership, a as SupabaseActorResult, b as SupabaseActClaim, c as SupabaseMembershipTable, d as SupabaseRealtime, f as SupabaseRlsConfig, g as SupabaseSubjectOptions, h as SupabaseStorage, i as SupabaseActor, l as SupabasePermissionRef, m as SupabaseSessionLike, n as RoleThrough, o as SupabaseDelegation, p as SupabaseRlsOptions, r as SupabaseActiveRow, s as SupabaseInclude, t as AuthorizeSqlOptions, u as SupabasePrincipal, v as SupabaseSuspendedScope, w as SupabaseMembershipClaim, x as SupabaseClaims, y as SupabaseSuspension } from "../types-CdlxsYQh.js";
5
+ import { a as SupabaseManifestHelper, c as SupabaseManifestRls, d as SupabaseManifestValue, f as parseSupabaseManifest, i as SupabaseManifestColumn, l as SupabaseManifestRole, n as SupabaseHookManifest, o as SupabaseManifestMembership, r as SupabaseManifestActiveRow, s as SupabaseManifestRequires, t as SupabaseHookClaim, u as SupabaseManifestThrough } from "../manifest-mx5ghSFM.js";
6
+ import { a as MembershipTableOptions, c as SupabasePostgres, d as supabasePostgresQuery, f as tableMembershipSource, i as MembershipSql, l as authzVersion, n as MembershipHolders, o as SqlMembershipSource, r as MembershipJunctionOptions, s as SqlQuery, t as AUTHZ_VERSION_TABLE, u as junctionMembershipSource } from "../sources-BV9j0DeZ.js";
6
7
  import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-JqcRqyhK.js";
7
8
  //#region src/supabase/capability.d.ts
8
9
  type ExchangeCapabilityOptions = {
@@ -20,7 +21,7 @@ type ExchangeCapabilityOptions = {
20
21
  readonly issuer?: string;
21
22
  /** Lifetime in seconds, capped by the capability's own expiry. Default 300. */
22
23
  readonly ttl?: number;
23
- readonly now?: number;
24
+ readonly now?: Instant;
24
25
  };
25
26
  /**
26
27
  * Exchanges a verified link subject (from `subjectFromCapability`) for a
@@ -30,109 +31,11 @@ type ExchangeCapabilityOptions = {
30
31
  */
31
32
  export declare function exchangeCapability(subject: Subject, options: ExchangeCapabilityOptions): Promise<string | undefined>;
32
33
  //#endregion
33
- //#region src/supabase/postgrest.d.ts
34
- /** What a supabase-js `rpc` call resolves to: `data` or an `error` with a message. */
35
- type SupabaseRpcResult = {
36
- readonly data: unknown;
37
- readonly error: {
38
- readonly message: string;
39
- } | null;
40
- };
41
- /**
42
- * The part of a supabase-js client `postgrestSources` calls:
43
- * `client.schema(name).rpc(fn, args)`. Pass a client that may execute the
44
- * function, such as a `service_role` client after the grant the docs show.
45
- */
46
- type SupabaseRpcClient = {
47
- schema(name: string): {
48
- rpc(fn: string, args: Readonly<Record<string, unknown>>): PromiseLike<SupabaseRpcResult>;
49
- };
50
- };
51
- type SupabaseRpcCaller = {
52
- schema(name: never): {
53
- rpc(fn: never, args: never): PromiseLike<SupabaseRpcResult>;
54
- };
55
- };
56
- type PostgrestSourcesOptions = {
57
- /**
58
- * The `supabase.hook.api` setting the hook file was generated with: the
59
- * wrappers live in `schema` (default `public`) as `<prefix>subject_for`,
60
- * `<prefix>members_of` and `<prefix>authz_version_for` (default prefix
61
- * `permdock_`). It sets the defaults of `schema`, `fn`, `membersFn` and
62
- * `versionFn`, which still override it.
63
- */
64
- readonly api?: {
65
- readonly schema?: string;
66
- readonly prefix?: string;
67
- };
68
- /** Schema of the functions. Default `permdock`, where the hook generates `subject_for` and `members_of`. */
69
- readonly schema?: string;
70
- /** Function name, for a wrapper in an exposed schema. Default `subject_for`. */
71
- readonly fn?: string;
72
- readonly membersFn?: string;
73
- /** The version-only function `memberships.version` calls. Default `authz_version_for`. */
74
- readonly versionFn?: string;
75
- /**
76
- * The policy whose declared roles tell custom roles apart. With it,
77
- * `customRoles` reads nothing while every role the subject holds is
78
- * declared, and `memberships.version` reads the whole subject in one call
79
- * when the token claims a custom role, which the custom roles need anyway.
80
- */
81
- readonly policy?: Policy;
82
- };
83
- /** One user as `subject_for(p_user)` returns it. */
84
- type SubjectRecord = {
85
- readonly id: string;
86
- /** `false` for a suspended user, who holds no roles or memberships. */
87
- readonly active: boolean;
88
- readonly roles: readonly string[];
89
- readonly memberships: readonly Membership[];
90
- readonly customRoles: readonly CustomRole[];
91
- readonly authzVersion?: number;
92
- };
93
- type PostgrestSources = {
94
- /**
95
- * Memberships and the authorization version of any principal, and `list`,
96
- * the live members of one scope instance through `members_of`, for
97
- * `countHolders` and `whoCan`. Wrap it in `claimsFirst` to read only when
98
- * the token was truncated.
99
- */
100
- readonly memberships: MembershipSource & {
101
- list(query: {
102
- readonly scope: string;
103
- readonly id: string;
104
- }): Promise<MemberEntry[]>;
105
- };
106
- /** The custom roles `principal` holds, for `createPermDock`'s `customRoles`. */
107
- customRoles(principal: {
108
- readonly id: string;
109
- }): RoleSource;
110
- /** The subject the hook would mint for `userId`: anonymous when the user is unknown or suspended. */
111
- subject(userId: string): Promise<Subject>;
112
- /** The raw record, `undefined` for an unknown user. */
113
- record(userId: string): Promise<SubjectRecord | undefined>;
114
- };
115
- /** Reads `subject_for`'s JSON; anything it cannot read is left out, and a malformed record is no record. */
116
- export declare function readSubjectRecord(value: unknown): SubjectRecord | undefined;
117
- /**
118
- * Membership, custom-role and subject sources over the `subject_for(p_user)`,
119
- * `authz_version_for(p_user)` and `members_of(p_scope, p_id)` functions
120
- * `permdock supabase hook generate` writes, for a backend that reaches
121
- * Postgres only through PostgREST. `memberships.version` reads only the
122
- * version, so `claimsFirst` with `onStale: 'reread'` reads the full subject
123
- * only for a stale token; when the version function is missing it falls back
124
- * to `subject_for`. With `policy`, a token that claims a custom role has its
125
- * subject read in one `subject_for` call instead, and custom roles are read
126
- * only for a subject that holds one. Each user and each instance is read once per
127
- * `postgrestSources` call, so create it per request or per job.
128
- */
129
- export declare function postgrestSources(client: SupabaseRpcCaller, options?: PostgrestSourcesOptions): PostgrestSources;
130
- //#endregion
131
34
  //#region src/supabase/approval-store.d.ts
132
35
  type SupabaseApprovalStoreOptions = {
133
36
  /** Schema of the generated store functions (`rls.schema`). Default `permdock`. */
134
37
  readonly schema?: string;
135
- /** How long a request stays open when the caller sets no `ttl`, in milliseconds. */
38
+ /** Seconds a request stays open when the caller sets no `ttl`. */
136
39
  readonly ttl?: number;
137
40
  /**
138
41
  * Runs once per stored request, after the call that stored it, with the
@@ -152,6 +55,20 @@ type SupabaseApprovalStoreOptions = {
152
55
  */
153
56
  export declare function supabaseApprovalStore(client: SupabaseRpcCaller, options?: SupabaseApprovalStoreOptions): ApprovalStore;
154
57
  //#endregion
58
+ //#region src/supabase/approval-delegations.d.ts
59
+ type TableApprovalDelegationSourceOptions = {
60
+ readonly query: SqlQuery;
61
+ /** Defaults to `permdock.approval_delegations`, the table `rls.approvals.delegations` generates. */
62
+ readonly table?: string;
63
+ };
64
+ /**
65
+ * Approval delegations (out-of-office covers) from the table
66
+ * `rls.approvals.delegations` generates, so `approvalsHandler` and
67
+ * `permdock_is_approver` read the same rows. A cover without a tenant
68
+ * applies everywhere; a malformed row is skipped.
69
+ */
70
+ export declare function tableApprovalDelegationSource(options: TableApprovalDelegationSourceOptions): ApprovalDelegationSource;
71
+ //#endregion
155
72
  //#region src/supabase/rls.d.ts
156
73
  export declare function supabaseRls(options?: SupabaseRlsOptions): SupabaseRlsConfig;
157
74
  /**
@@ -191,4 +108,4 @@ export declare function subjectFromSupabase(claims: unknown, options?: SupabaseS
191
108
  */
192
109
  export declare function subjectFromSupabaseSession(session: SupabaseSessionLike | null | undefined, options?: SupabaseSubjectOptions): Subject<SupabasePrincipal>;
193
110
  //#endregion
194
- export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, type MembershipTableOptions, type PostgrestSources, type PostgrestSourcesOptions, type RoleThrough, type SqlMembershipSource, type SqlQuery, type SubjectRecord, type SupabaseActClaim, type SupabaseActiveRow, type SupabaseActor, type SupabaseActorResult, type SupabaseApprovalStoreOptions, type SupabaseClaims, type SupabaseClaimsOptions, type SupabaseClaimsSchema, type SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, type SupabaseManifestActiveRow, type SupabaseManifestColumn, type SupabaseManifestHelper, type SupabaseManifestMembership, type SupabaseManifestRequires, type SupabaseManifestRls, type SupabaseManifestRole, type SupabaseManifestThrough, type SupabaseManifestValue, type SupabaseMembershipClaim, type SupabaseMembershipTable, type SupabasePermDockClaims, type SupabasePermissionRef, type SupabasePostgres, type SupabasePrincipal, type SupabaseRealtime, type SupabaseRlsConfig, type SupabaseRlsOptions, type SupabaseRpcCaller, type SupabaseRpcClient, type SupabaseRpcResult, type SupabaseSessionLike, type SupabaseStorage, type SupabaseSubjectOptions, type SupabaseSuspendedMembership, type SupabaseSuspendedScope, type SupabaseSuspension, authzVersion, fromJunction, fromSupabasePostgres, fromTable, parseSupabaseManifest, supabaseClaims, supabaseMembershipsBudget, supabaseTenantClaim };
111
+ export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, type MembershipTableOptions, type PostgrestSources, type PostgrestSourcesOptions, type RoleThrough, type SqlMembershipSource, type SqlQuery, type SubjectRecord, type SupabaseActClaim, type SupabaseActiveRow, type SupabaseActor, type SupabaseActorResult, type SupabaseApprovalStoreOptions, type SupabaseClaims, type SupabaseClaimsOptions, type SupabaseClaimsSchema, type SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, type SupabaseManifestActiveRow, type SupabaseManifestColumn, type SupabaseManifestHelper, type SupabaseManifestMembership, type SupabaseManifestRequires, type SupabaseManifestRls, type SupabaseManifestRole, type SupabaseManifestThrough, type SupabaseManifestValue, type SupabaseMembershipClaim, type SupabaseMembershipTable, type SupabasePermDockClaims, type SupabasePermissionRef, type SupabasePostgres, type SupabasePrincipal, type SupabaseRealtime, type SupabaseRlsConfig, type SupabaseRlsOptions, type SupabaseRpcCaller, type SupabaseRpcClient, type SupabaseRpcResult, type SupabaseSessionLike, type SupabaseStorage, type SupabaseSubjectOptions, type SupabaseSuspendedMembership, type SupabaseSuspendedScope, type SupabaseSuspension, type TableApprovalDelegationSourceOptions, authzVersion, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseTenantClaim, tableMembershipSource };
@@ -1,5 +1,6 @@
1
- import { a as readSubjectRecord, i as postgrestSources, n as supabaseRls, o as supabaseClaims, r as supabaseApprovalStore, s as exchangeCapability, t as authorizeSql } from "../supabase-C0qESOa-.js";
1
+ import { a as supabaseClaims, i as supabaseApprovalStore, n as supabaseRls, o as exchangeCapability, r as tableApprovalDelegationSource, t as authorizeSql } from "../supabase-Dxlp8A94.js";
2
2
  import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-NbEtbJC_.js";
3
- import { a as fromJunction, i as authzVersion, o as fromSupabasePostgres, s as fromTable, t as AUTHZ_VERSION_TABLE } from "../sources-4p0-4xQm.js";
4
- import { a as subjectFromSupabase, n as actorOf, o as subjectFromSupabaseSession, r as delegationOf, t as parseSupabaseManifest } from "../manifest-iaoBXHKc.js";
5
- export { AUTHZ_VERSION_TABLE, actorOf, authorizeSql, authzVersion, delegationOf, exchangeCapability, fromJunction, fromSupabasePostgres, fromTable, parseSupabaseManifest, postgrestSources, readSubjectRecord, subjectFromSupabase, subjectFromSupabaseSession, supabaseApprovalStore, supabaseClaims, supabaseMembershipsBudget, supabaseRls, supabaseTenantClaim };
3
+ import { c as tableMembershipSource, i as authzVersion, o as junctionMembershipSource, s as supabasePostgresQuery, t as AUTHZ_VERSION_TABLE } from "../sources-vs5dGOsS.js";
4
+ import { a as delegationOf, c as subjectFromSupabaseSession, i as actorOf, n as postgrestSources, r as readSubjectRecord, s as subjectFromSupabase } from "../postgrest-CW0IqC-U.js";
5
+ import { t as parseSupabaseManifest } from "../manifest-C8IzW3Do.js";
6
+ export { AUTHZ_VERSION_TABLE, actorOf, authorizeSql, authzVersion, delegationOf, exchangeCapability, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, subjectFromSupabase, subjectFromSupabaseSession, supabaseApprovalStore, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseRls, supabaseTenantClaim, tableApprovalDelegationSource, tableMembershipSource };
@@ -1,8 +1,10 @@
1
- import { C as Policy, D as PolicyVocabulary, Nr as Principal, Pr as Subject, ln as PermDock } from "../policy-IB6yxpC3.js";
2
- import { f as Permission } from "../permissions-DttnqqxC.js";
3
- import { t as InstanceOptions } from "../instance-options-jARdwfPN.js";
4
- import { n as OpenApiHooks } from "../create-B1d519XK.js";
5
- import { n as ServerAdapterServices } from "../bind-C_ob3LKa.js";
1
+ import { T as Policy, ir as Subject, 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 { t as InstanceOptions } from "../instance-options-Omfd793B.js";
5
+ import { t as RequestContext } from "../request-context-C2_1lchh.js";
6
+ import { i as OpenApiHooks } from "../server-types-BLd4MnBX.js";
7
+ import { n as ServerAdapterServices } from "../bind--9EFVYWF.js";
6
8
  import { Middleware } from "@supabase/middleware";
7
9
  //#region src/supabase/middleware.d.ts
8
10
  /**
@@ -52,6 +54,11 @@ export type SupabaseMiddlewarePermDockOptions<TUser = unknown> = InstanceOptions
52
54
  readonly secretKeys?: Readonly<Record<string, SupabaseSecretKey>>;
53
55
  readonly subject: (ctx: SupabaseMiddlewareContext, request: Request) => TUser | Subject | null | Promise<TUser | Subject | null>;
54
56
  readonly tenant?: string | ((ctx: SupabaseMiddlewareContext, request: Request) => string | undefined | Promise<string | undefined>);
57
+ /**
58
+ * Request values merged into `subject.context`, under `policy.context`.
59
+ * Only values the server derived belong here, never client input.
60
+ */
61
+ readonly context?: (ctx: SupabaseMiddlewareContext, request: Request) => RequestContext | undefined | Promise<RequestContext | undefined>;
55
62
  };
56
63
  export type WithPermDockConfig = {
57
64
  /** Run `protect` before the handler; a denial short-circuits with Problem Details. */
@@ -78,5 +85,5 @@ export type SupabaseMiddlewarePermDock<V extends PolicyVocabulary = PolicyVocabu
78
85
  readonly permdockHandler: () => SupabaseMiddlewareHandler;
79
86
  readonly openapi: OpenApiHooks;
80
87
  };
81
- export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: SupabaseMiddlewarePermDockOptions<TUser>): SupabaseMiddlewarePermDock<V>;
88
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: SupabaseMiddlewarePermDockOptions<TUser>): SupabaseMiddlewarePermDock<V>;
82
89
  //#endregion
@@ -1,9 +1,11 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { r as credentialSubject } from "../credential-8P81ff4u.js";
3
- import { i as methodNotAllowed } from "../problem-B43ztKIm.js";
4
- import { t as instanceOptions } from "../instance-options-Dhhcnm3y.js";
5
- import { n as createServerKernel } from "../create-CMwIl-w2.js";
6
- import { n as attached } from "../bind-CuzGytRf.js";
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { c as withApp } from "../permdock-B9JxkBwC.js";
3
+ import { t as composeWraps } from "../wrap-gX61EtpB.js";
4
+ import { r as credentialSubject } from "../credential-DM2um3ha.js";
5
+ import { a as methodNotAllowed } from "../problem-CTviyH5L.js";
6
+ import { r as instanceOptions } from "../build-instance-BMnAudHn.js";
7
+ import { t as createPermDock$1 } from "../create-DnrmLnLW.js";
8
+ import { n as attached } from "../bind-CZzhx-Vj.js";
7
9
  import { defineMiddleware } from "@supabase/middleware";
8
10
  //#region src/supabase/middleware.ts
9
11
  const SECRET_KEY_NAME = /^[A-Za-z0-9_-]+$/u;
@@ -21,7 +23,7 @@ function secretKeySubjects(keys, permissions) {
21
23
  roles: [...key.roles],
22
24
  permissions: key.permissions.map((permission) => ({ permission: permission.key })),
23
25
  createdBy: key.id,
24
- createdAt: 0,
26
+ createdAt: "1970-01-01T00:00:00.000Z",
25
27
  name
26
28
  };
27
29
  subjects.set(name, credentialSubject(credential, { permissions }));
@@ -42,23 +44,26 @@ function secretKeySubject(subjects, ctx) {
42
44
  const name = readString(ctx, "authKeyName");
43
45
  return name === void 0 ? void 0 : subjects.get(name);
44
46
  }
45
- function createPermDock(policy, options) {
47
+ function createPermDock(policy, given) {
48
+ const options = withApp(policy, given);
46
49
  const contexts = /* @__PURE__ */ new WeakMap();
47
50
  const tenantOption = options.tenant;
48
51
  const contextFor = (request) => contexts.get(request) ?? { jwtClaims: null };
49
52
  const secretKeys = secretKeySubjects(options.secretKeys, policy.permissions);
50
- const kernel = createServerKernel(policy, compact({
53
+ const kernel = createPermDock$1(policy, compact({
51
54
  subject: (request) => {
52
55
  const ctx = contextFor(request);
53
56
  return secretKeySubject(secretKeys, ctx) ?? options.subject(ctx, request);
54
57
  },
55
58
  tenant: typeof tenantOption === "function" ? (request) => tenantOption(contextFor(request), request) : tenantOption,
59
+ context: options.context === void 0 ? void 0 : (request) => options.context?.(contextFor(request), request),
56
60
  ...instanceOptions(options),
57
61
  store: options.store,
58
62
  pdp: options.pdp,
59
63
  webBotAuth: options.webBotAuth,
60
64
  adapter: "supabase-middleware",
61
- wrap: options.otel
65
+ wrap: composeWraps(options.otel, options.wrap),
66
+ deniedResponse: options.deniedResponse
62
67
  }));
63
68
  const bind = (request, ctx) => {
64
69
  contexts.set(request, ctx);
@@ -69,7 +74,7 @@ function createPermDock(policy, options) {
69
74
  run: (config) => async (request, ctx) => {
70
75
  bind(request, ctx);
71
76
  if (config?.protect === void 0 && config?.oauthScopes === void 0) {
72
- const instance = await attached(() => kernel.permdock(request));
77
+ const instance = await attached(() => kernel.getPermDock(request));
73
78
  return instance.ok ? { permdock: instance.permdock } : instance.response;
74
79
  }
75
80
  const loadData = config.data;