permdock 0.4.0 → 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 (514) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-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 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-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/arazzo-B6lebmiQ.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-Dg8XsRaO.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BMZPIVUM.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
  34. package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-BMnAudHn.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/{catalog-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
  48. package/dist/catalog-DjhMYYCq.js +1 -0
  49. package/dist/catalog-R_A__RsH.js +52 -0
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-CIoHNevm.js +87 -0
  68. package/dist/codemod-Bmj9dWMH.js +37 -0
  69. package/dist/codemod-Cxvvc70T.js +2084 -0
  70. package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
  71. package/dist/collect-DloHbDVa.js +55 -0
  72. package/dist/collect-FlXJlhus.js +1 -0
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  77. package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  78. package/dist/completion-BqhRBJD8.js +143 -0
  79. package/dist/config-B46rm9sc.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  87. package/dist/create-BDS7wc3y.d.ts +138 -0
  88. package/dist/create-BFfm17UA.d.ts +110 -0
  89. package/dist/create-BWRSXgOF.js +403 -0
  90. package/dist/create-C3b4B5eF.js +130 -0
  91. package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
  92. package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-DaXVdDhM.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-D8jDHgsl.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/diff-CxZo9pTq.js +37 -0
  104. package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
  105. package/dist/doctor-CxiwSfqH.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/{errors-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  116. package/dist/errors-CWTY6uih.js +143 -0
  117. package/dist/evaluate-_R8QkWaf.js +1732 -0
  118. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  129. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  130. package/dist/fields-D9tPVUUS.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-D2lZt4Dd.js} +55 -52
  135. package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
  136. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-DTcZOzhF.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-BZIAYvon.js +315 -0
  146. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-DMmOG27O.js} +190 -53
  152. package/dist/index-BcHcPyIo.d.ts +110 -0
  153. package/dist/index-CaxrMD1A.d.ts +1 -0
  154. package/dist/index-Chrs5fQ-.d.ts +210 -0
  155. package/dist/index-CxGUswIC.d.ts +431 -0
  156. package/dist/index-D8EovfsP.d.ts +91 -0
  157. package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
  158. package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  164. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-5JatXyND.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-CtKR3GXL.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-TCAdw-eW.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-BShP7Vf4.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/{openapi-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
  205. package/dist/openapi-ahr8rHu3.js +138 -0
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-CxybZErY.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-Dyw8fyPF.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-BatFgAA4.js} +1698 -869
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  219. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-B9JxkBwC.js +868 -0
  227. package/dist/permdock-D7eeLJER.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-CZKiUfFM.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  232. package/dist/policies-CO1oOymN.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
  235. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
  238. package/dist/postgrest-CW0IqC-U.js +566 -0
  239. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  240. package/dist/powersync-BHfuehf3.js +62 -0
  241. package/dist/powersync-CbzkqL_M.js +1 -0
  242. package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
  255. package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
  256. package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
  259. package/dist/pull-BgIfno6w.js +256 -0
  260. package/dist/pull-ByOks_Tg.js +1 -0
  261. package/dist/push-CmFVBOeI.js +116 -0
  262. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  263. package/dist/pushed-policy-DobP7AHI.js +238 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +24 -22
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BA8an5Ap.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
  287. package/dist/run-CNsApDpd.js +1 -0
  288. package/dist/run-DOfMtc9V.js +723 -0
  289. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-FO-Q8oj0.js} +16 -14
  293. package/dist/scan-BOI5tJ-6.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-DqCT4CgZ.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-BEZSlMS_.js +957 -0
  309. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-CXUWfsNy.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-BV9j0DeZ.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-DLfUWFAI.js +1851 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  326. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
  330. package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
  331. package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-9pqI57pW.js +92 -0
  342. package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
  343. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  344. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/{types-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
  376. package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
  377. package/dist/types-BjV-fqcA.d.ts +57 -0
  378. package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
  379. package/dist/types-C8-KNsFf.d.ts +107 -0
  380. package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  381. package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
  382. package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
  383. package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
  384. package/dist/types-DX0LaKTb.d.ts +157 -0
  385. package/dist/types-DiQjupG2.d.ts +332 -0
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/types-_sHy8BQf.d.ts +65 -0
  388. package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
  389. package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CHOtwL19.js +1 -0
  393. package/dist/usage-DHtE8j4E.js +32 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-DbCL9bnB.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-D6lPdb4Z.d.ts} +65 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-BGUtGYoU.js +67 -0
  406. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  407. package/dist/watch-Cb-NcaUw.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-Dv-WTP-w.js +306 -0
  412. package/dist/who-can-D0QoYbEb.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-Bd1Tejur.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +9 -8
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +5 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/load-B_shHrmd.js +0 -2
  490. package/dist/manifest-BngWKryL.js +0 -770
  491. package/dist/may-use-BOn_dR_w.js +0 -78
  492. package/dist/openapi-DcQ1Kg40.js +0 -164
  493. package/dist/ownership-BgnbOJFT.js +0 -851
  494. package/dist/permdock-L26udHSk.js +0 -3646
  495. package/dist/powersync-BFSbSElQ.js +0 -62
  496. package/dist/powersync-DCDgZgfZ.js +0 -2
  497. package/dist/rls-55DQTuf5.js +0 -250
  498. package/dist/run-DMcNW_8T.js +0 -174
  499. package/dist/server-ZYEHtNHS.js +0 -268
  500. package/dist/sink-BTtmfPnE.js +0 -141
  501. package/dist/sink-CPN4zLfs.d.ts +0 -104
  502. package/dist/skills-Dle4ZoLF.js +0 -56
  503. package/dist/snapshot-Dc9CHPME.js +0 -1078
  504. package/dist/src-Bb7no-hS.js +0 -639
  505. package/dist/subject-C6dLxqHU.js +0 -24
  506. package/dist/supabase-Dbqr141s.js +0 -83
  507. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  508. package/dist/thenable-QSmvt-vZ.js +0 -65
  509. package/dist/types-C0dee0Qf.d.ts +0 -197
  510. package/dist/types-DvupZE0w.d.ts +0 -9
  511. package/dist/usage-4G6t643F.js +0 -42
  512. package/dist/usage-iFLJ0-rr.js +0 -2
  513. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  514. package/dist/watch-C8TpsAl4.js +0 -2
@@ -1,11 +1,10 @@
1
- import { Dr as Membership, an as Snapshot, ir as Decision, rr as ApprovalRequiredDecision, ur as GrantedDecision, ut as TokenVerifier } from "../policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
- import { r as Role } from "../vocabulary-hhEFLFoL.js";
4
- import { n as requiredPlans } from "../problem-details-rIIo8B2C.js";
5
- import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-C3ldA9os.js";
1
+ import { Mn as ApprovalRequiredDecision, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, nr as Membership, zn as GrantedDecision } from "../policy-types-DzwivBgR.js";
2
+ import { r as Role, w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
4
+ import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-BZUsixiL.js";
6
5
  import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
7
- import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
8
- import { a as ClientPermDock, c as PermissionSet, d as SubjectView, f as TenantView, i as ApprovalState, l as PermissionState, o as ClientStatus, p as UseRolesOptions, r as ApprovalHandle, s as FilterResult, u as ProviderOptionsBase } from "../store-9KO4BlkB.js";
6
+ import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
7
+ import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle, u as ProviderOptionsBase } from "../types-BNORmDM8.js";
9
8
  import { Accessor, Accessor as Accessor$1, JSX } from "solid-js";
10
9
  //#region src/solid/types.d.ts
11
10
  /** Structural `JSX.Element`: text, a DOM node or a list of children. */
@@ -31,7 +30,7 @@ type PermDockProviderProps = ProviderOptionsBase & {
31
30
  /** Provider-wide content for the `<Protected>` slots a component leaves out. */
32
31
  type PermDockDefaults = {
33
32
  readonly pending?: SolidChild;
34
- readonly fallback?: SolidChild | ((decision: Decision) => SolidChild);
33
+ readonly denied?: SolidChild | ((decision: Decision) => SolidChild);
35
34
  readonly approval?: SolidChild | ((decision: ApprovalRequiredDecision) => SolidChild);
36
35
  };
37
36
  type PermissionBoundaryProps = {
@@ -46,8 +45,8 @@ type ProtectedProps = {
46
45
  readonly data?: unknown;
47
46
  readonly tenant?: string;
48
47
  readonly pending?: SolidChild;
49
- readonly fallback?: SolidChild | ((decision: Decision) => SolidChild);
50
- /** Rendered for an approval-required decision; defaults to `fallback`. */
48
+ readonly denied?: SolidChild | ((decision: Decision) => SolidChild);
49
+ /** Rendered for an approval-required decision; defaults to `denied`. */
51
50
  readonly approval?: SolidChild | ((decision: ApprovalRequiredDecision) => SolidChild);
52
51
  readonly children: SolidChild | ((decision: GrantedDecision) => SolidChild);
53
52
  };
@@ -59,7 +58,7 @@ export declare function usePermissions(permissions: Accessor<readonly Permission
59
58
  export declare function useFilter<T>(permission: Permission<string, T, "instance">, rows: Accessor<readonly T[]>): Accessor<FilterResult<T>>;
60
59
  export declare function useTenant(): Accessor<TenantView>;
61
60
  export declare function useMemberships(): Accessor<readonly Membership[]>;
62
- export declare function useRoles(options?: Accessor<UseRolesOptions>): Accessor<{
61
+ export declare function useRoles(options?: Accessor<RolesOptions>): Accessor<{
63
62
  readonly roles: readonly Role[];
64
63
  }>;
65
64
  export declare function useAssignableRoles(): Accessor<readonly Role[]>;
@@ -90,4 +89,4 @@ export declare function Protected(props: ProtectedProps): JSX.Element;
90
89
  //#region src/solid/provider.d.ts
91
90
  export declare function PermDockProvider(props: PermDockProviderProps): JSX.Element;
92
91
  //#endregion
93
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SolidChild, type SubjectView, type TenantView, type UseRolesOptions, approvalHeaders, describe, requiredPlans };
92
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockProviderProps, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SolidChild, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans };
@@ -1,11 +1,11 @@
1
1
  import { t as compact } from "../compact-CAf557ZB.js";
2
- import { r as requiredPlans } from "../problem-details-DECUnXAn.js";
3
- import { t as describe } from "../describe-Cgkp7eP0.js";
4
- import { t as approvalHeaders } from "../headers-BZSDieNT.js";
5
- import { i as isPromiseLike } from "../store-options-CbUHDoSe.js";
6
- import { a as permissionSet, c as scopedTenant, d as tenantView, i as livePermDock, l as slotContent, n as describeWith, o as protectedView, r as filterResult, s as rolesView, t as approvalHandle, u as subjectView } from "../views-CJsrBS1f.js";
2
+ import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
3
+ import { t as describe } from "../describe-BybMRY7A.js";
7
4
  import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
8
- import { n as switchTenant, t as providerStore } from "../provider-store-Ctt-81Ni.js";
5
+ import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
6
+ import { i as isPromiseLike } from "../store-options-BqEakYRa.js";
7
+ import { n as switchTenant, t as providerStore } from "../provider-store-B5Yrkhzr.js";
8
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, l as scopedTenant, n as describeWith, o as permissionSet, r as filterResult, s as protectedView, t as approvalHandle, u as slotContent } from "../views-DTIIO-oQ.js";
9
9
  import { ErrorBoundary, createComponent, createComputed, createContext, createMemo, createSignal, getOwner, on, onCleanup, useContext } from "solid-js";
10
10
  //#region src/solid/context.ts
11
11
  const PermDockContext = createContext(void 0);
@@ -138,7 +138,7 @@ function Protected(props) {
138
138
  const current = view();
139
139
  switch (current.slot) {
140
140
  case "pending": return slotContent("pending", props, ui.defaults) ?? null;
141
- case "fallback": return content(slotContent("fallback", props, ui.defaults), current.decision);
141
+ case "denied": return content(slotContent("denied", props, ui.defaults), current.decision);
142
142
  case "approval": return content(slotContent("approval", props, ui.defaults), current.decision);
143
143
  case "default": return typeof props.children === "function" ? props.children(current.decision) : props.children;
144
144
  default: return current;
@@ -0,0 +1,52 @@
1
+ import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
2
+ import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
3
+ import { a as OperationInput, t as Operation } from "../operations-CxybZErY.js";
4
+ import { r as PermDock } from "../permdock-D7eeLJER.js";
5
+ import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
6
+ import { a as ProtectTarget, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-qKJBuRqy.js";
7
+ import { APIEvent, FetchEvent } from "@solidjs/start/server";
8
+ //#region src/solid-start/create.d.ts
9
+ /** The h3 event under every SolidStart request; `subject` and `scope` read it. */
10
+ type SolidStartNativeEvent = FetchEvent["nativeEvent"];
11
+ /** An h3 middleware for `createMiddleware([...])` in `src/middleware.ts`. */
12
+ type SolidStartMiddleware = (event: SolidStartNativeEvent, next: () => unknown) => Promise<unknown>;
13
+ type SolidStartPermDockOptions<TUser = unknown> = FetchAdapterOptions<SolidStartNativeEvent, TUser>;
14
+ /** What the adapter sets on `event.locals`. */
15
+ type SolidStartPermDockLocals<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
16
+ readonly permdock: PermDock<V>;
17
+ readonly permdockData: TData;
18
+ };
19
+ /** The event a wrapped API route receives: its own `APIEvent` with typed `locals`. */
20
+ type SolidStartPermDockEvent<TEvent extends FetchEvent = APIEvent, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TEvent & {
21
+ readonly locals: SolidStartPermDockLocals<TData, V>;
22
+ };
23
+ /** Wraps an API route handler. */
24
+ type SolidStartGuarded<TData, V extends PolicyVocabulary = PolicyVocabulary> = <TEvent extends FetchEvent = APIEvent, R = Response>(handler: (event: SolidStartPermDockEvent<TEvent, TData, V>) => R | Promise<R>) => (event: TEvent) => Promise<R | Response>;
25
+ type SolidStartProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
26
+ <T = unknown>(permission: Permission | null, data?: ContextReader<APIEvent, T | null | undefined>, protectOptions?: ProtectOptions): SolidStartGuarded<NonNullable<T>, V>;
27
+ <TOperation extends Operation>(operation: TOperation, input?: ContextReader<APIEvent, OperationInput<TOperation>>, protectOptions?: ProtectOptions): SolidStartGuarded<unknown, V>;
28
+ };
29
+ /** The decision endpoint, one API route handler per method. */
30
+ type SolidStartPermDockHandlers = {
31
+ readonly GET: (event: FetchEvent) => Promise<Response>;
32
+ readonly POST: (event: FetchEvent) => Promise<Response>;
33
+ };
34
+ type SolidStartPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
35
+ /** Sets `event.context.permdock` on the h3 event; a bad Web Bot Auth signature is a `401`. */
36
+ readonly middleware: () => SolidStartMiddleware;
37
+ /** `export const DELETE = protect(permissions.post.delete, loadPost)(handler)`. */
38
+ readonly protect: SolidStartProtect<V>;
39
+ /** Types `event.locals.permdock` for an API route and answers a thrown PermDock error with Problem Details. */
40
+ readonly withPermDock: SolidStartGuarded<unknown, V>;
41
+ /** The instance for an API route, or a server function through `getRequestEvent()`. */
42
+ readonly getPermDock: (event: FetchEvent) => Promise<PermDock<V>>;
43
+ /** The snapshot a route `query` returns for `permdock/solid`. */
44
+ readonly getSnapshot: (event: FetchEvent, query?: SnapshotQuery) => Promise<Snapshot>;
45
+ readonly connection: (event: FetchEvent, connectionOptions?: ConnectionOptions) => Promise<Connection>;
46
+ /** `export const { GET, POST } = permdockHandler()` in `src/routes/api/permdock.ts`. */
47
+ readonly permdockHandler: () => SolidStartPermDockHandlers;
48
+ readonly openapi: OpenApiHooks;
49
+ };
50
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: SolidStartPermDockOptions<TUser>): SolidStartPermDock<V>;
51
+ //#endregion
52
+ export { type ContextReader, InvalidSignatureError, type ProtectTarget, type SolidStartGuarded, type SolidStartMiddleware, type SolidStartNativeEvent, type SolidStartPermDock, type SolidStartPermDockEvent, type SolidStartPermDockHandlers, type SolidStartPermDockLocals, type SolidStartPermDockOptions, type SolidStartProtect, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -0,0 +1,49 @@
1
+ import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
2
+ import { i as decorate } from "../bind-CZzhx-Vj.js";
3
+ import { n as guardedRoute, t as fetchAdapter } from "../fetch-adapter-g0ypLkID.js";
4
+ //#region src/solid-start/create.ts
5
+ /**
6
+ * `event.locals`. Its type, `App.RequestEventLocals`, is declared by
7
+ * `@solidjs/start/env`, which only an app's own `tsconfig` loads.
8
+ */
9
+ function localsOf(event) {
10
+ return Reflect.get(event, "locals");
11
+ }
12
+ const route = {
13
+ context: (event) => event.nativeEvent,
14
+ locals: localsOf
15
+ };
16
+ function createPermDock(policy, options) {
17
+ const adapter = fetchAdapter(policy, options, "solid-start", (event) => event.req);
18
+ const middleware = () => async (event, next) => {
19
+ const attached = await adapter.ensure(event.context, event);
20
+ if (!attached.ok) return attached.response;
21
+ return adapter.mapErrors(event, next);
22
+ };
23
+ const protect = ((target, data, protectOptions) => guardedRoute(adapter, route, target, data, protectOptions));
24
+ const withPermDock = (handler) => async (event) => {
25
+ const attached = await adapter.ensure(event.nativeEvent.context, event.nativeEvent);
26
+ if (!attached.ok) return attached.response;
27
+ decorate(localsOf(event), attached.permdock);
28
+ return adapter.mapErrors(event.nativeEvent, () => handler(event));
29
+ };
30
+ const handlers = () => {
31
+ const { GET, POST } = adapter.handlers();
32
+ return {
33
+ GET: (event) => GET(event.nativeEvent),
34
+ POST: (event) => POST(event.nativeEvent)
35
+ };
36
+ };
37
+ return {
38
+ middleware,
39
+ protect,
40
+ withPermDock,
41
+ getPermDock: (event) => adapter.getPermDock(event.nativeEvent),
42
+ getSnapshot: (event, query) => adapter.getSnapshot(event.nativeEvent, query),
43
+ connection: (event, connectionOptions) => adapter.connection(event.nativeEvent, connectionOptions),
44
+ permdockHandler: handlers,
45
+ openapi: adapter.kernel.openapi
46
+ };
47
+ }
48
+ //#endregion
49
+ export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
@@ -1,6 +1,6 @@
1
- import { Z as MembershipSource } from "./policy-types-sp9P1iIV.js";
2
- import { n as RoleThrough, y as SupabaseSuspension } from "./types-CqrjB9o6.js";
3
- import { o as SupabaseManifestMembership } from "./manifest-uDS9y5de.js";
1
+ import { et as MembershipSource } from "./policy-types-DzwivBgR.js";
2
+ import { n as RoleThrough, y as SupabaseSuspension } from "./types-CdlxsYQh.js";
3
+ import { o as SupabaseManifestMembership } from "./manifest-mx5ghSFM.js";
4
4
  //#region src/supabase/roles.d.ts
5
5
  /** A roles table a role column references, by `schema.table`. */
6
6
  type RoleKeys = {
@@ -163,26 +163,20 @@ type SqlMembershipSource = MembershipSource & {
163
163
  type SupabasePostgres = {
164
164
  readonly queryRaw: (text: string, params?: unknown[]) => Promise<readonly Record<string, unknown>[]>;
165
165
  };
166
- /**
167
- * `ctx.postgres` (from `withPostgresClient`) or `ctx.postgresAdmin` as a
168
- * `SqlQuery` for `fromTable`, `fromJunction` and `supabaseApprovalStore`.
169
- * `ctx.postgres` runs as the caller under RLS, so the membership tables must
170
- * be readable by `authenticated`; `ctx.postgresAdmin` bypasses RLS.
171
- */
172
- declare function fromSupabasePostgres(postgres: SupabasePostgres): SqlQuery;
166
+ declare function supabasePostgresQuery(postgres: SupabasePostgres): SqlQuery;
173
167
  /**
174
168
  * Memberships from one table holding every scope: a row per user, scope,
175
169
  * instance and role (`user_id, scope, scope_id, role`), with optional
176
170
  * `within`, `via`, expiry, owner and seat columns. Rows of the same instance
177
171
  * merge into one membership.
178
172
  */
179
- declare function fromTable(options: MembershipTableOptions): SqlMembershipSource;
173
+ declare function tableMembershipSource(options: MembershipTableOptions): SqlMembershipSource;
180
174
  /**
181
175
  * Memberships from a table of one scope (`customer_contacts`): every row is a
182
176
  * membership of `scope`, with roles from a column or fixed (`['contact']`), a
183
177
  * fixed `via`, and ancestor ids from `within` columns.
184
178
  */
185
- declare function fromJunction(options: MembershipJunctionOptions): SqlMembershipSource;
179
+ declare function junctionMembershipSource(options: MembershipJunctionOptions): SqlMembershipSource;
186
180
  declare const AUTHZ_VERSION_TABLE = "permdock_authz_version";
187
181
  /**
188
182
  * Reads the authorization version `permdock supabase hook generate` keeps in
@@ -193,4 +187,4 @@ declare function authzVersion(options: {
193
187
  readonly schema?: string;
194
188
  }): NonNullable<MembershipSource["version"]>;
195
189
  //#endregion
196
- export { MembershipTableOptions as a, SupabasePostgres as c, fromSupabasePostgres as d, fromTable as f, MembershipSql as i, authzVersion as l, MembershipHolders as n, SqlMembershipSource as o, MembershipJunctionOptions as r, SqlQuery as s, AUTHZ_VERSION_TABLE as t, fromJunction as u };
190
+ export { MembershipTableOptions as a, SupabasePostgres as c, supabasePostgresQuery as d, tableMembershipSource as f, MembershipSql as i, authzVersion as l, MembershipHolders as n, SqlMembershipSource as o, MembershipJunctionOptions as r, SqlQuery as s, AUTHZ_VERSION_TABLE as t, junctionMembershipSource as u };
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { i as readAppData } from "./app-data-CV8pqqMi.js";
3
- import { a as quoteSqlIdent, i as quoteQualifiedTable, l as sqlTextArray, o as quoteSqlLiteral, r as qualifySqlTable, s as quoteSqlTable } from "./sql-t8teWOfo.js";
2
+ import { i as readAppData } from "./app-data-MuyzVqX8.js";
3
+ import { a as quoteQualifiedTable, c as quoteSqlTable, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, u as sqlTextArray } from "./sql-B5T1IL83.js";
4
4
  //#region src/supabase/keep.ts
5
5
  /** The permission keys of a suspended scope's `keep`, references read by `key`, sorted and unique. */
6
6
  function keptKeys(row) {
@@ -12,111 +12,19 @@ function keptKeys(row) {
12
12
  return [...new Set(valid)].toSorted();
13
13
  }
14
14
  //#endregion
15
- //#region src/supabase/roles.ts
16
- function isRoleList(role) {
17
- return Array.isArray(role);
18
- }
19
- /**
20
- * Resolves the role sources of `table` (`schema.table`, or `public`). An
21
- * unqualified `through` table is in `table`'s schema. `label` names the
22
- * option in the error for an `on` that is not exactly one column; `prefix`
23
- * starts every error. A row with several sources holds the union of their
24
- * non-null keys.
25
- */
26
- function roleColumn(role, table, alias, options) {
27
- if (!isRoleList(role)) return singleRole(role, table, alias, options);
28
- const prefix = options.prefix ?? "PermDock";
29
- const parts = role.map((part, index) => singleRole(part, table, alias, {
30
- ...options,
31
- label: `${options.label}[${String(index)}]`
32
- }));
33
- const [first] = parts;
34
- if (first === void 0) throw new TypeError(`${prefix}: ${options.label} needs at least one role source`);
35
- if (parts.length === 1) return first;
36
- const rows = quoteSqlIdent(`${alias}r`, prefix);
37
- const values = quoteSqlIdent(`${alias}v`, prefix);
38
- const sql = `${rows}.permdock_role`;
39
- return {
40
- column: first.column,
41
- sql,
42
- join: `${options.indent === void 0 ? " " : `\n${options.indent}`}cross join lateral (select ${values}.role from (values ${parts.map((part) => `(${part.lookup})`).join(", ")}) ${values}(role) where ${values}.role is not null) ${rows}(permdock_role)`,
43
- lookup: sql,
44
- columns: [...new Set(parts.map((part) => part.column))],
45
- throughs: parts.flatMap((part) => part.throughs),
46
- lateral: true
47
- };
48
- }
49
- function singleRole(role, table, alias, options) {
50
- const prefix = options.prefix ?? "PermDock";
51
- const q = (name) => quoteSqlIdent(name, prefix);
52
- if (typeof role === "string") return {
53
- column: role,
54
- sql: `${alias}.${q(role)}::text`,
55
- join: "",
56
- lookup: `${alias}.${q(role)}::text`,
57
- columns: [role],
58
- throughs: [],
59
- lateral: false
60
- };
61
- const pairs = Object.entries(role.on);
62
- const [pair] = pairs;
63
- if (pair === void 0 || pairs.length !== 1) throw new TypeError(`${prefix}: ${options.label}.on must map exactly one column of ${table} to ${role.through}, for example ${options.example ?? "{ role_id: 'id' }"}`);
64
- const [ref, id] = pair;
65
- const schema = table.includes(".") ? table.split(".")[0] ?? "public" : "public";
66
- const through = role.through.includes(".") ? role.through : `${schema}.${role.through}`;
67
- const keys = options.joined ?? `${alias}k`;
68
- const target = quoteSqlTable(through, prefix);
69
- const keyed = {
70
- table: through,
71
- id,
72
- key: role.column,
73
- ref
74
- };
75
- return {
76
- column: ref,
77
- sql: `${keys}.${q(role.column)}::text`,
78
- join: `${options.indent === void 0 ? " " : `\n${options.indent}`}join ${target} ${keys} on ${keys}.${q(id)} = ${alias}.${q(ref)}`,
79
- lookup: `(select ${keys}.${q(role.column)}::text from ${target} ${keys} where ${keys}.${q(id)} = ${alias}.${q(ref)})`,
80
- through: keyed,
81
- columns: [ref],
82
- throughs: [keyed],
83
- lateral: false
84
- };
85
- }
86
- /** The manifest entry of one role source: the column, and the roles table it references. */
87
- function sourceManifest(column, through) {
88
- return through === void 0 ? { column } : {
89
- column,
90
- through: {
91
- table: through.table,
92
- id: through.id,
93
- column: through.key
94
- }
95
- };
96
- }
97
- /** The manifest entry of a single-source column, such as a membership's user. */
98
- function columnManifest(role) {
99
- return sourceManifest(role.column, role.through);
100
- }
101
- /** The manifest entry of a role column, or one entry per source of a row with several. */
102
- function roleManifest(role) {
103
- if (!role.lateral) return sourceManifest(role.column, role.through);
104
- return role.columns.map((column) => sourceManifest(column, role.throughs.find((through) => through.ref === column)));
105
- }
106
- //#endregion
107
- //#region src/supabase/sources.ts
108
- const ident = (name) => quoteSqlIdent(name);
109
- const literal = quoteSqlLiteral;
15
+ //#region src/supabase/membership-sql.ts
16
+ const ident$1 = (name) => quoteSqlIdent(name);
17
+ const literal$1 = quoteSqlLiteral;
110
18
  function col(name) {
111
- return `m.${ident(name)}`;
19
+ return `m.${ident$1(name)}`;
112
20
  }
113
21
  function activeRow(row, id) {
114
- const parts = [`s.${ident(row.id)}::text = (${id})::text`];
115
- if (row.disabledAt !== void 0) parts.push(`s.${ident(row.disabledAt)} is null`);
22
+ const parts = [`s.${ident$1(row.id)}::text = (${id})::text`];
23
+ if (row.disabledAt !== void 0) parts.push(`s.${ident$1(row.disabledAt)} is null`);
116
24
  if (row.status !== void 0) {
117
25
  const values = row.active ?? [];
118
26
  if (values.length === 0) throw new TypeError("PermDock: a suspension status column needs its active values");
119
- parts.push(`s.${ident(row.status)}::text = any(array[${values.map(literal).join(", ")}]::text[])`);
27
+ parts.push(`s.${ident$1(row.status)}::text = any(array[${values.map(literal$1).join(", ")}]::text[])`);
120
28
  }
121
29
  if (row.disabledAt === void 0 && row.status === void 0) throw new TypeError("PermDock: a suspension table needs disabledAt or status");
122
30
  return `exists (select 1 from ${quoteQualifiedTable(row.table)} s where ${parts.join(" and ")})`;
@@ -210,7 +118,7 @@ where ${where.join("\n and ")}
210
118
  group by ${group.join(", ")}`;
211
119
  }
212
120
  function holdersOf(shape) {
213
- const id = ident(shape.idColumn);
121
+ const id = ident$1(shape.idColumn);
214
122
  return {
215
123
  idType: `${quoteQualifiedTable(shape.table)}.${id}%type`,
216
124
  id: (scope, row) => {
@@ -235,7 +143,7 @@ function sqlOf(shape) {
235
143
  table: shape.table,
236
144
  user: shape.user,
237
145
  userThrough: shape.userThrough,
238
- userType: shape.userThrough === void 0 ? `${quoteQualifiedTable(shape.table)}.${ident(shape.user)}%type` : `${quoteSqlTable(shape.userThrough.table)}.${ident(shape.userThrough.key)}%type`,
146
+ userType: shape.userThrough === void 0 ? `${quoteQualifiedTable(shape.table)}.${ident$1(shape.user)}%type` : `${quoteSqlTable(shape.userThrough.table)}.${ident$1(shape.userThrough.key)}%type`,
239
147
  reads: [...new Set([suspension?.users, ...Object.values(suspension?.scopes ?? {})].flatMap((row) => row === void 0 ? [] : [row.table]))],
240
148
  managed: shape.managedColumn,
241
149
  through: shape.through,
@@ -251,6 +159,102 @@ function sqlOf(shape) {
251
159
  list: (keep = keptSql(shape) !== void 0) => selectOf(shape, filters(shape, `${shape.scope} = $1::text and ${shape.id} = $2::text`), true, keep)
252
160
  });
253
161
  }
162
+ //#endregion
163
+ //#region src/supabase/roles.ts
164
+ function isRoleList(role) {
165
+ return Array.isArray(role);
166
+ }
167
+ /**
168
+ * Resolves the role sources of `table` (`schema.table`, or `public`). An
169
+ * unqualified `through` table is in `table`'s schema. `label` names the
170
+ * option in the error for an `on` that is not exactly one column; `prefix`
171
+ * starts every error. A row with several sources holds the union of their
172
+ * non-null keys.
173
+ */
174
+ function roleColumn(role, table, alias, options) {
175
+ if (!isRoleList(role)) return singleRole(role, table, alias, options);
176
+ const prefix = options.prefix ?? "PermDock";
177
+ const parts = role.map((part, index) => singleRole(part, table, alias, {
178
+ ...options,
179
+ label: `${options.label}[${String(index)}]`
180
+ }));
181
+ const [first] = parts;
182
+ if (first === void 0) throw new TypeError(`${prefix}: ${options.label} needs at least one role source`);
183
+ if (parts.length === 1) return first;
184
+ const rows = quoteSqlIdent(`${alias}r`, prefix);
185
+ const values = quoteSqlIdent(`${alias}v`, prefix);
186
+ const sql = `${rows}.permdock_role`;
187
+ return {
188
+ column: first.column,
189
+ sql,
190
+ join: `${options.indent === void 0 ? " " : `\n${options.indent}`}cross join lateral (select ${values}.role from (values ${parts.map((part) => `(${part.lookup})`).join(", ")}) ${values}(role) where ${values}.role is not null) ${rows}(permdock_role)`,
191
+ lookup: sql,
192
+ columns: [...new Set(parts.map((part) => part.column))],
193
+ throughs: parts.flatMap((part) => part.throughs),
194
+ lateral: true
195
+ };
196
+ }
197
+ function singleRole(role, table, alias, options) {
198
+ const prefix = options.prefix ?? "PermDock";
199
+ const q = (name) => quoteSqlIdent(name, prefix);
200
+ if (typeof role === "string") return {
201
+ column: role,
202
+ sql: `${alias}.${q(role)}::text`,
203
+ join: "",
204
+ lookup: `${alias}.${q(role)}::text`,
205
+ columns: [role],
206
+ throughs: [],
207
+ lateral: false
208
+ };
209
+ const pairs = Object.entries(role.on);
210
+ const [pair] = pairs;
211
+ if (pair === void 0 || pairs.length !== 1) throw new TypeError(`${prefix}: ${options.label}.on must map exactly one column of ${table} to ${role.through}, for example ${options.example ?? "{ role_id: 'id' }"}`);
212
+ const [ref, id] = pair;
213
+ const schema = table.includes(".") ? table.split(".")[0] ?? "public" : "public";
214
+ const through = role.through.includes(".") ? role.through : `${schema}.${role.through}`;
215
+ const keys = options.joined ?? `${alias}k`;
216
+ const target = quoteSqlTable(through, prefix);
217
+ const keyed = {
218
+ table: through,
219
+ id,
220
+ key: role.column,
221
+ ref
222
+ };
223
+ return {
224
+ column: ref,
225
+ sql: `${keys}.${q(role.column)}::text`,
226
+ join: `${options.indent === void 0 ? " " : `\n${options.indent}`}join ${target} ${keys} on ${keys}.${q(id)} = ${alias}.${q(ref)}`,
227
+ lookup: `(select ${keys}.${q(role.column)}::text from ${target} ${keys} where ${keys}.${q(id)} = ${alias}.${q(ref)})`,
228
+ through: keyed,
229
+ columns: [ref],
230
+ throughs: [keyed],
231
+ lateral: false
232
+ };
233
+ }
234
+ /** The manifest entry of one role source: the column, and the roles table it references. */
235
+ function sourceManifest(column, through) {
236
+ return through === void 0 ? { column } : {
237
+ column,
238
+ through: {
239
+ table: through.table,
240
+ id: through.id,
241
+ column: through.key
242
+ }
243
+ };
244
+ }
245
+ /** The manifest entry of a single-source column, such as a membership's user. */
246
+ function columnManifest(role) {
247
+ return sourceManifest(role.column, role.through);
248
+ }
249
+ /** The manifest entry of a role column, or one entry per source of a row with several. */
250
+ function roleManifest(role) {
251
+ if (!role.lateral) return sourceManifest(role.column, role.through);
252
+ return role.columns.map((column) => sourceManifest(column, role.throughs.find((through) => through.ref === column)));
253
+ }
254
+ //#endregion
255
+ //#region src/supabase/sources.ts
256
+ const ident = (name) => quoteSqlIdent(name);
257
+ const literal = quoteSqlLiteral;
254
258
  function isFixed(roles) {
255
259
  return Array.isArray(roles);
256
260
  }
@@ -335,11 +339,14 @@ function sourceOf(sql, query) {
335
339
  }
336
340
  /**
337
341
  * `ctx.postgres` (from `withPostgresClient`) or `ctx.postgresAdmin` as a
338
- * `SqlQuery` for `fromTable`, `fromJunction` and `supabaseApprovalStore`.
342
+ * `SqlQuery` for `tableMembershipSource`, `junctionMembershipSource` and `supabaseApprovalStore`.
339
343
  * `ctx.postgres` runs as the caller under RLS, so the membership tables must
340
344
  * be readable by `authenticated`; `ctx.postgresAdmin` bypasses RLS.
341
345
  */
342
- function fromSupabasePostgres(postgres) {
346
+ function optionalColumn(name, cast) {
347
+ return name === void 0 ? `null::${cast}` : `${col(name)}::${cast}`;
348
+ }
349
+ function supabasePostgresQuery(postgres) {
343
350
  return (text, values) => postgres.queryRaw(text, [...values]);
344
351
  }
345
352
  /**
@@ -348,14 +355,13 @@ function fromSupabasePostgres(postgres) {
348
355
  * `within`, `via`, expiry, owner and seat columns. Rows of the same instance
349
356
  * merge into one membership.
350
357
  */
351
- function fromTable(options) {
358
+ function tableMembershipSource(options) {
352
359
  const c = options.columns ?? {};
353
360
  const scope = `${col(c.scope ?? "scope")}::text`;
354
361
  const id = `${col(c.id ?? "scope_id")}::text`;
355
362
  const within = c.within === void 0 ? "null::jsonb" : col(c.within);
356
- const optional = (name, cast) => name === void 0 ? `null::${cast}` : `${col(name)}::${cast}`;
357
- const user = memberUser(c.user ?? "user_id", options.table, "fromTable columns.user");
358
- const role = memberRole(c.role ?? "role", options.table, "fromTable columns.role");
363
+ const user = memberUser(c.user ?? "user_id", options.table, "tableMembershipSource columns.user");
364
+ const role = memberRole(c.role ?? "role", options.table, "tableMembershipSource columns.role");
359
365
  return sourceOf(sqlOf({
360
366
  table: options.table,
361
367
  join: `${user.column.join}${role.join}`,
@@ -368,13 +374,13 @@ function fromTable(options) {
368
374
  id,
369
375
  within,
370
376
  roles: roleAgg(role),
371
- via: optional(c.via, "text"),
377
+ via: optionalColumn(c.via, "text"),
372
378
  expiresAt: c.expiresAt,
373
379
  disabledAt: c.disabledAt,
374
- grantedBy: optional(c.grantedBy, "text"),
375
- reason: optional(c.reason, "text"),
376
- memberGroup: optional(c.group, "text"),
377
- managed: optional(c.managedBy, "text"),
380
+ grantedBy: optionalColumn(c.grantedBy, "text"),
381
+ reason: optionalColumn(c.reason, "text"),
382
+ memberGroup: optionalColumn(c.group, "text"),
383
+ managed: optionalColumn(c.managedBy, "text"),
378
384
  managedColumn: c.managedBy,
379
385
  seats: c.seats === void 0 ? "null::jsonb" : `to_jsonb(${col(c.seats)})`,
380
386
  x: c.x,
@@ -428,15 +434,15 @@ function fromTable(options) {
428
434
  * membership of `scope`, with roles from a column or fixed (`['contact']`), a
429
435
  * fixed `via`, and ancestor ids from `within` columns.
430
436
  */
431
- function fromJunction(options) {
437
+ function junctionMembershipSource(options) {
432
438
  if (!/^[a-z][a-z0-9_]*$/u.test(options.scope)) throw new TypeError(`PermDock: unsafe scope name '${options.scope}'`);
433
439
  const idColumn = options.id ?? `${options.scope}_id`;
434
440
  const withinEntries = Object.entries(options.within ?? {});
435
441
  const roles = options.roles;
436
442
  const fixed = isFixed(roles) ? roles : void 0;
437
- if (fixed?.length === 0) throw new TypeError("PermDock: fromJunction needs at least one role");
438
- const role = isFixed(roles) ? void 0 : memberRole(typeof roles === "object" && "sources" in roles ? roles.sources : roles, options.table, "fromJunction roles");
439
- const user = memberUser(options.user ?? "user_id", options.table, "fromJunction user");
443
+ if (fixed?.length === 0) throw new TypeError("PermDock: junctionMembershipSource needs at least one role");
444
+ const role = isFixed(roles) ? void 0 : memberRole(typeof roles === "object" && "sources" in roles ? roles.sources : roles, options.table, "junctionMembershipSource roles");
445
+ const user = memberUser(options.user ?? "user_id", options.table, "junctionMembershipSource user");
440
446
  const managedColumn = options.managedBy === void 0 ? void 0 : options.managedBy === "idp" ? "" : options.managedBy.column;
441
447
  const groupColumn = options.group === void 0 || typeof options.group === "string" ? void 0 : options.group.column;
442
448
  const shape = {
@@ -541,4 +547,4 @@ function authzVersion(options) {
541
547
  };
542
548
  }
543
549
  //#endregion
544
- export { fromJunction as a, hookApiNames as c, keptKeys as d, authzVersion as i, roleColumn as l, HOOK_API_SCHEMA as n, fromSupabasePostgres as o, PERMDOCK_SCHEMA as r, fromTable as s, AUTHZ_VERSION_TABLE as t, roleManifest as u };
550
+ export { hookApiNames as a, tableMembershipSource as c, keptKeys as d, authzVersion as i, roleColumn as l, HOOK_API_SCHEMA as n, junctionMembershipSource as o, PERMDOCK_SCHEMA as r, supabasePostgresQuery as s, AUTHZ_VERSION_TABLE as t, roleManifest as u };
@@ -39,5 +39,17 @@ function quoteQualifiedTable(name, prefix = "PermDock") {
39
39
  function sqlTextArray(values) {
40
40
  return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteSqlLiteral).join(", ")}]::text[]`;
41
41
  }
42
+ /** The SQL command a default verb runs: `read`, `list` and `get` select, `create` inserts, `update` and `delete` keep their name. */
43
+ function defaultSqlCommand(action) {
44
+ switch (action) {
45
+ case "read":
46
+ case "list":
47
+ case "get": return "select";
48
+ case "create": return "insert";
49
+ case "update": return "update";
50
+ case "delete": return "delete";
51
+ default: return;
52
+ }
53
+ }
42
54
  //#endregion
43
- export { quoteSqlIdent as a, sqlIdent as c, quoteQualifiedTable as i, sqlTextArray as l, escapeSqlIdent as n, quoteSqlLiteral as o, qualifySqlTable as r, quoteSqlTable as s, SQL_IDENT as t };
55
+ export { quoteQualifiedTable as a, quoteSqlTable as c, qualifySqlTable as i, sqlIdent as l, defaultSqlCommand as n, quoteSqlIdent as o, escapeSqlIdent as r, quoteSqlLiteral as s, SQL_IDENT as t, sqlTextArray as u };