permdock 0.1.0 → 0.2.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 (349) hide show
  1. package/README.md +106 -47
  2. package/dist/a2a/index.d.ts +7 -16
  3. package/dist/a2a/index.js +59 -98
  4. package/dist/adapter-context-mlWsVGGg.js +23 -0
  5. package/dist/ai-sdk/index.d.ts +37 -16
  6. package/dist/ai-sdk/index.js +30 -13
  7. package/dist/approvals/index.d.ts +3 -3
  8. package/dist/approvals/index.js +5 -4
  9. package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
  10. package/dist/approvers-DT4AVyIg.js +52 -0
  11. package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
  12. package/dist/{arazzo-aoTkqYsJ.js → arazzo-cmvX2jDe.js} +2 -2
  13. package/dist/authzen/index.d.ts +4 -13
  14. package/dist/authzen/index.js +16 -50
  15. package/dist/better-auth/index.d.ts +20 -3
  16. package/dist/better-auth/index.js +27 -7
  17. package/dist/better-supabase/index.d.ts +206 -0
  18. package/dist/better-supabase/index.js +620 -0
  19. package/dist/bind-CVy3Espv.d.ts +25 -0
  20. package/dist/bind-VnYn2HKq.js +97 -0
  21. package/dist/boundary-BM8a_P6E.js +13 -0
  22. package/dist/boundary-BmHxVH1J.d.ts +15 -0
  23. package/dist/canonical-json-DemiK4Vp.js +26 -0
  24. package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
  25. package/dist/{capability-BDG_nkxt.d.ts → capability-Dq43tT1u.d.ts} +2 -2
  26. package/dist/catalog/index.d.ts +1 -1
  27. package/dist/catalog/index.js +1 -1
  28. package/dist/catalog-BjZSovXQ.js +2 -0
  29. package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-Dsc9y7sd.js} +23 -12
  30. package/dist/{catalog-B0E6bggc.js → catalog-h2tlKFkq.js} +2 -2
  31. package/dist/{catalog-H-vFGwWK.js → catalog-z8q6bi_r.js} +4 -4
  32. package/dist/claude-agent/index.d.ts +5 -14
  33. package/dist/claude-agent/index.js +4 -10
  34. package/dist/clerk/index.d.ts +12 -3
  35. package/dist/clerk/index.js +26 -5
  36. package/dist/cli/bin.js +1 -1
  37. package/dist/cli/index.d.ts +3 -3
  38. package/dist/cli/index.js +2 -2
  39. package/dist/clients-C7zLFuWT.d.ts +12 -0
  40. package/dist/clients-DjU5ABMy.js +23 -0
  41. package/dist/cloud/index.d.ts +4 -5
  42. package/dist/cloud/index.js +20 -6
  43. package/dist/{cloud-BNQTrmrr.js → cloud-BGhHS-lY.js} +2 -2
  44. package/dist/{cloud-Cuxr6Czw.js → cloud-Bo3e9Ak3.js} +7 -6
  45. package/dist/{collect-O-tOtbnk.js → collect-DDDv_ESs.js} +194 -42
  46. package/dist/collect-DLlujdHC.js +83 -0
  47. package/dist/collect-rG2IQ3t0.js +2 -0
  48. package/dist/{commands-BMh_Etm2.js → commands-DWOrSQic.js} +16 -12
  49. package/dist/compile/index.d.ts +3 -0
  50. package/dist/compile/index.js +2 -0
  51. package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
  52. package/dist/compile-CNnl6uIt.d.ts +94 -0
  53. package/dist/config-BJiM-xAm.js +157 -0
  54. package/dist/config-Bn00Z3ks.js +36 -0
  55. package/dist/config-report-Dw_JcUqT.js +44 -0
  56. package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
  57. package/dist/{context-CKEAabd7.js → context-Ttp0ekMT.js} +36 -27
  58. package/dist/convex/index.d.ts +9 -4
  59. package/dist/convex/index.js +14 -4
  60. package/dist/create-BWyx3jua.d.ts +245 -0
  61. package/dist/create-CPhDL6qx.js +253 -0
  62. package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
  63. package/dist/delegation-D8pUEuce.js +103 -0
  64. package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
  65. package/dist/{describe-DernyItf.d.ts → describe-PdoqESvg.d.ts} +9 -10
  66. package/dist/{diff-x5Il8LVa.js → diff-B8Tunc3o.js} +44 -11
  67. package/dist/{diff-BUzf5Poi.js → diff-CzqLxZ77.js} +2 -2
  68. package/dist/doctor-WpvG6p4k.js +1194 -0
  69. package/dist/doctor-collect-ByfYlNv1.js +664 -0
  70. package/dist/{doctor-Bqo6FwUa.js → doctor-rOr-4ZfS.js} +2 -2
  71. package/dist/drizzle/index.d.ts +4 -3
  72. package/dist/drizzle/index.js +3 -3
  73. package/dist/elysia/index.d.ts +6 -28
  74. package/dist/elysia/index.js +16 -60
  75. package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
  76. package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
  77. package/dist/{errors-DbZ1YOnb.d.ts → errors-DAqevpNk.d.ts} +8 -21
  78. package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
  79. package/dist/evaluation-items-CfCCejQd.js +40 -0
  80. package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
  81. package/dist/eve/index.d.ts +6 -15
  82. package/dist/eve/index.js +7 -12
  83. package/dist/expiry-BoBJ8Tvc.js +7 -0
  84. package/dist/express/index.d.ts +6 -29
  85. package/dist/express/index.js +28 -58
  86. package/dist/fastify/index.d.ts +6 -29
  87. package/dist/fastify/index.js +16 -65
  88. package/dist/fields-BMl1RxoX.js +26 -0
  89. package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
  90. package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
  91. package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
  92. package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-C3sHpZNS.js} +65 -48
  93. package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
  94. package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
  95. package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
  96. package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
  97. package/dist/helpers-H_KARDVC.js +421 -0
  98. package/dist/hono/index.d.ts +6 -28
  99. package/dist/hono/index.js +11 -43
  100. package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
  101. package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
  102. package/dist/http-SO7qGttf.js +44 -0
  103. package/dist/ids-DC4V4CFu.js +18 -0
  104. package/dist/{index-LF_hS-yn.d.ts → index-A0YNL8jZ.d.ts} +1 -1
  105. package/dist/index-CtE07CBF.d.ts +6 -0
  106. package/dist/{index-xIxJLwOQ.d.ts → index-D3vbkoSI.d.ts} +75 -7
  107. package/dist/{index-CltcQ4Bf.d.ts → index-D6_cSa1z.d.ts} +68 -5
  108. package/dist/index.d.ts +14 -9
  109. package/dist/index.js +22 -17
  110. package/dist/instance-options-BK_rNOSC.d.ts +11 -0
  111. package/dist/instance-options-Dhhcnm3y.js +22 -0
  112. package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
  113. package/dist/jwt/index.d.ts +10 -6
  114. package/dist/jwt/index.js +32 -13
  115. package/dist/kernel-GSQnMz3O.js +208 -0
  116. package/dist/kysely/index.d.ts +4 -3
  117. package/dist/kysely/index.js +3 -3
  118. package/dist/live-options-H2eG8dfJ.js +60 -0
  119. package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
  120. package/dist/load-DwJUafYN.js +2 -0
  121. package/dist/manifest-iaoBXHKc.js +783 -0
  122. package/dist/manifest-uDS9y5de.d.ts +206 -0
  123. package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
  124. package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
  125. package/dist/map-error-pgUWNNtG.js +23 -0
  126. package/dist/may-use-DndQ5tQ-.js +77 -0
  127. package/dist/mcp/index.d.ts +54 -22
  128. package/dist/mcp/index.js +218 -178
  129. package/dist/nest/index.d.ts +26 -31
  130. package/dist/nest/index.js +75 -84
  131. package/dist/next/client.d.ts +7 -8
  132. package/dist/next/client.js +11 -9
  133. package/dist/next/index.d.ts +30 -47
  134. package/dist/next/index.js +45 -60
  135. package/dist/next/plugin.d.ts +1 -1
  136. package/dist/next/plugin.js +32 -1
  137. package/dist/node/index.d.ts +9 -28
  138. package/dist/node/index.js +11 -43
  139. package/dist/openai/index.d.ts +6 -15
  140. package/dist/openai/index.js +7 -20
  141. package/dist/openapi/index.d.ts +87 -4
  142. package/dist/openapi/index.js +3 -3
  143. package/dist/{openapi-CwePaF7C.js → openapi-Bbg4wGVL.js} +3 -3
  144. package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
  145. package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
  146. package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
  147. package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
  148. package/dist/orpc/index.d.ts +15 -28
  149. package/dist/orpc/index.js +74 -117
  150. package/dist/otel/index.d.ts +2 -2
  151. package/dist/parse-BuyjxhZV.js +53 -0
  152. package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
  153. package/dist/parse-local-manifest-BrMozJCo.js +36 -0
  154. package/dist/pdp/index.d.ts +2 -2
  155. package/dist/pdp/index.js +14 -127
  156. package/dist/{permdock-yoZ7EjxX.js → permdock-CzqXjCpU.js} +641 -126
  157. package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
  158. package/dist/{permissions-CofRqesP.js → permissions-CpZrivYv.js} +3 -3
  159. package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
  160. package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
  161. package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
  162. package/dist/{policy-CInmNGkM.d.ts → policy-CFZAr_Al.d.ts} +330 -37
  163. package/dist/{policy-Cq2fB8Q5.d.ts → policy-D8UFyERw.d.ts} +2 -2
  164. package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
  165. package/dist/powersync-A8x_Yyvh.js +2 -0
  166. package/dist/powersync-C7kLglqX.js +540 -0
  167. package/dist/powersync-yW1UUFzp.js +62 -0
  168. package/dist/prisma/index.d.ts +3 -2
  169. package/dist/prisma/index.js +45 -20
  170. package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
  171. package/dist/problem-details-CkL50EEf.d.ts +7 -0
  172. package/dist/problem-details-_AMOYz-w.js +144 -0
  173. package/dist/{protected-BuPAycJT.d.ts → protected-CNsMzrVd.d.ts} +5 -4
  174. package/dist/protected-Cs6kTaHo.js +100 -0
  175. package/dist/protected-bZs6rbT1.d.ts +40 -0
  176. package/dist/{provider-wTAUda2v.d.ts → provider-Cjr62YMV.d.ts} +1 -1
  177. package/dist/provider-DLzpb2Xz.js +52 -0
  178. package/dist/provider-store-DNyC1y48.js +43 -0
  179. package/dist/react/index.d.ts +7 -5
  180. package/dist/react/index.js +5 -4
  181. package/dist/react/provider-client.d.ts +1 -1
  182. package/dist/react/provider-client.js +1 -1
  183. package/dist/react-native/index.d.ts +166 -10
  184. package/dist/react-native/index.js +607 -85
  185. package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
  186. package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
  187. package/dist/replay-BsOyTrdV.js +28 -0
  188. package/dist/replay-sqBGMnNs.d.ts +5 -0
  189. package/dist/resource-ref-CaS9yVPi.js +20 -0
  190. package/dist/revocations-Bhr0aMIC.js +27 -0
  191. package/dist/rls-BMNydpHk.js +2521 -0
  192. package/dist/{rls-BOFU3chG.js → rls-CEvs64Kj.js} +8 -3
  193. package/dist/rls-fields-BMasREhR.js +3502 -0
  194. package/dist/{rls-graph-DxQ39PJj.js → rls-graph-pc9fuXYm.js} +100 -36
  195. package/dist/{rls-import-CXV6LBlS.js → rls-import-D8F7j35Q.js} +7 -6
  196. package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-7wikfrVI.js} +6 -5
  197. package/dist/rls-ownership-B5Lkq62W.js +843 -0
  198. package/dist/rls-shared-aOQ4hGTO.js +493 -0
  199. package/dist/rls-verify-D8B7dOTh.js +745 -0
  200. package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
  201. package/dist/rpc-DOK54_CS.js +89 -0
  202. package/dist/{run-CJ6UvS3a.js → run-YXCJDNYk.js} +31 -12
  203. package/dist/runtime-CB8gQFvS.js +11 -0
  204. package/dist/{saas-BRrZzJkM.js → saas-Bj_FFkjN.js} +17 -7
  205. package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
  206. package/dist/scim/index.d.ts +1 -1
  207. package/dist/scim/index.js +1 -1
  208. package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
  209. package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
  210. package/dist/server/index.d.ts +22 -11
  211. package/dist/server/index.js +11 -8
  212. package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
  213. package/dist/shared-DRu8VFVM.js +123 -0
  214. package/dist/{sink-Cfr9-7YC.d.ts → sink-Gs6TTVa-.d.ts} +1 -1
  215. package/dist/skills-Biq5uup3.js +192 -0
  216. package/dist/{skills-C_lpV4Jx.js → skills-JaymNCdK.js} +10 -4
  217. package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
  218. package/dist/snapshot-cache-D6jLelln.js +44 -0
  219. package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
  220. package/dist/solid/index.d.ts +39 -9
  221. package/dist/solid/index.js +76 -85
  222. package/dist/sources-B0UvrJ21.js +534 -0
  223. package/dist/sources-BcJgw0lt.d.ts +192 -0
  224. package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
  225. package/dist/{src-CTNT-PBW.js → src-CSbUiozF.js} +149 -11
  226. package/dist/ssf/index.d.ts +3 -2
  227. package/dist/ssf/index.js +3 -29
  228. package/dist/store-DMAWwAJV.js +371 -0
  229. package/dist/{store-Bq90395i.d.ts → store-D_pjn91-.d.ts} +13 -4
  230. package/dist/store-options-yO0V6gRn.js +716 -0
  231. package/dist/{stores-CkG2HrSg.js → stores-4_sqiOA1.js} +10 -63
  232. package/dist/{stores-CvOnu_2T.d.ts → stores-DVR5NHLE.d.ts} +20 -9
  233. package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
  234. package/dist/{stream-BhMfZOwr.d.ts → stream-DlvG2hs-.d.ts} +2 -2
  235. package/dist/subject-settings-BwBmCdTR.js +128 -0
  236. package/dist/supabase/index.d.ts +122 -6
  237. package/dist/supabase/index.js +4 -3
  238. package/dist/supabase/middleware.d.ts +32 -27
  239. package/dist/supabase/middleware.js +56 -22
  240. package/dist/{supabase-D8UlBA7Z.js → supabase-CwafwxxF.js} +3 -3
  241. package/dist/{supabase-DTxGtYdi.js → supabase-DTBaC20O.js} +345 -367
  242. package/dist/supabase-config-Bs44dare.js +472 -0
  243. package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-BuxLQLpU.js} +994 -708
  244. package/dist/supabase-hook-D5qVd_D8.js +2 -0
  245. package/dist/supautils-DYZnzRWV.js +91 -0
  246. package/dist/svelte/PermissionBoundary.svelte +37 -0
  247. package/dist/svelte/Protected.svelte +8 -2
  248. package/dist/svelte/index.d.ts +9 -6
  249. package/dist/svelte/index.js +61 -7
  250. package/dist/svelte/runtime.d.ts +4 -3
  251. package/dist/svelte/runtime.js +4 -3
  252. package/dist/svelte/source.d.ts +9 -6
  253. package/dist/svelte/source.js +7 -4
  254. package/dist/terminal/index.d.ts +6 -14
  255. package/dist/terminal/index.js +44 -32
  256. package/dist/testing/index.d.ts +105 -16
  257. package/dist/testing/index.js +504 -40
  258. package/dist/testing/saas/index.d.ts +4 -4
  259. package/dist/testing/saas/index.js +2 -2
  260. package/dist/testing/saas/permissions.d.ts +1 -1
  261. package/dist/testing/saas/permissions.js +1 -1
  262. package/dist/token-CIWxJOCh.js +50 -0
  263. package/dist/trpc/index.d.ts +7 -26
  264. package/dist/trpc/index.js +17 -100
  265. package/dist/types-9AWO9EGt.d.ts +197 -0
  266. package/dist/{types-D6Z6-rKJ.d.ts → types-BPxgszlT.d.ts} +260 -22
  267. package/dist/{types-BvBk1wgn.d.ts → types-BVyImy5I.d.ts} +5 -3
  268. package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
  269. package/dist/types-C3s9xVJG.d.ts +48 -0
  270. package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
  271. package/dist/types-kxznc7cn.d.ts +52 -0
  272. package/dist/{types-B8w5PFtS.d.ts → types-vKyAMtcX.d.ts} +17 -1
  273. package/dist/{types-B9dmiiab.d.ts → types-vNSDF7Dq.d.ts} +1 -1
  274. package/dist/{sources-DOpW5Ila.d.ts → types-yF5LmQVD.d.ts} +86 -127
  275. package/dist/unplugin/index.d.ts +1 -1
  276. package/dist/unplugin/index.js +10 -9
  277. package/dist/{usage-1ozMubLY.js → usage-D07N9QJ3.js} +2 -2
  278. package/dist/usage-D82l1CwK.js +2 -0
  279. package/dist/{usage-CUnK6Ou9.js → usage-DG1oeCca.js} +225 -62
  280. package/dist/validation-error-CnjZ4t92.js +33 -0
  281. package/dist/validation-error-CtF23SrC.d.ts +26 -0
  282. package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
  283. package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
  284. package/dist/version-BvacVTZR.js +17 -0
  285. package/dist/views-Soe7bGSC.js +95 -0
  286. package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
  287. package/dist/vue/index.d.ts +35 -13
  288. package/dist/vue/index.js +86 -93
  289. package/dist/watch-Etoa_Mvr.js +2 -0
  290. package/dist/watch-UihESpsJ.js +128 -0
  291. package/dist/webmcp/index.d.ts +2 -2
  292. package/dist/webmcp/index.js +7 -13
  293. package/package.json +62 -36
  294. package/schemas/approval-request-v1.json +175 -0
  295. package/schemas/catalog-v1.json +29 -1
  296. package/schemas/supabase-claims-v1.json +6 -1
  297. package/schemas/supabase-manifest-v1.json +150 -6
  298. package/skills/permdock/SKILL.md +7 -7
  299. package/skills/permdock-agents/SKILL.md +5 -5
  300. package/skills/permdock-agents/references/runtimes.md +12 -10
  301. package/skills/permdock-approvals/SKILL.md +4 -4
  302. package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
  303. package/skills/permdock-audit/SKILL.md +3 -3
  304. package/skills/permdock-credentials/SKILL.md +4 -4
  305. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  306. package/skills/permdock-data/SKILL.md +4 -4
  307. package/skills/permdock-data/references/queries-and-rls.md +14 -6
  308. package/skills/permdock-data/references/relationships.md +5 -3
  309. package/skills/permdock-tenancy/SKILL.md +9 -6
  310. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
  311. package/skills/permdock-wire/SKILL.md +4 -4
  312. package/skills/permdock-wire/references/adapters.md +42 -30
  313. package/skills/permdock-wire/references/policy-options.md +5 -3
  314. package/dist/approvers-aH0PJkmf.js +0 -20
  315. package/dist/catalog-idsHc0vo.js +0 -2
  316. package/dist/collect-B7_TIfmg.js +0 -49
  317. package/dist/collect-fRPAQIWb.js +0 -2
  318. package/dist/compile-CQbvyIBr.d.ts +0 -30
  319. package/dist/config-BPYmjTOp.js +0 -26
  320. package/dist/context-gtAwAILx.js +0 -6
  321. package/dist/create-BKF3dgFk.d.ts +0 -162
  322. package/dist/create-CSkhDU9T.js +0 -222
  323. package/dist/doctor-BGle8Gqi.js +0 -1314
  324. package/dist/helpers-DnSOrhB9.js +0 -682
  325. package/dist/index-fG6NSXlc.d.ts +0 -9
  326. package/dist/kernel-YOGCWNLf.js +0 -211
  327. package/dist/load-QOOm1z70.js +0 -2
  328. package/dist/manifest-DDQbC6K0.d.ts +0 -118
  329. package/dist/map-error-RJ3ZsUyA.js +0 -16
  330. package/dist/may-use-CnFEjVEp.js +0 -37
  331. package/dist/pg-4GJWDUxG.js +0 -953
  332. package/dist/plugin-4gr7IxFJ.js +0 -65
  333. package/dist/protected-B4K3BKoX.js +0 -138
  334. package/dist/protected-wY7nXhY9.d.ts +0 -23
  335. package/dist/provider-_wx46HpB.js +0 -48
  336. package/dist/rls-CJVja9Ww.js +0 -2119
  337. package/dist/rls-helpers-BxRuif0l.js +0 -1346
  338. package/dist/runtime-DP9ttFh1.js +0 -27
  339. package/dist/skills-Dx3QLnMY.js +0 -110
  340. package/dist/source-DoBBYJi2.js +0 -6
  341. package/dist/sources-DVHM3Mwq.js +0 -284
  342. package/dist/store-C6hFW6ta.js +0 -508
  343. package/dist/subject-settings-xt7V845g.js +0 -82
  344. package/dist/supabase-hook-DW-xP4hU.js +0 -2
  345. package/dist/types-DbWdEfcm.d.ts +0 -87
  346. package/dist/types-bva3i4Gf.d.ts +0 -98
  347. package/dist/types-i4BAOvdb.d.ts +0 -97
  348. package/dist/usage-PyEor6GA.js +0 -2
  349. package/dist/version-CnSh33Fj.js +0 -16
@@ -1,5 +1,5 @@
1
- import { J as AuthEvent, ct as MembershipSource, mr as Principal } from "./policy-CInmNGkM.js";
2
- import { a as SupabaseManifestMembership } from "./manifest-DDQbC6K0.js";
1
+ import { Nr as Principal, et as AuthEvent } from "./policy-CFZAr_Al.js";
2
+ import { t as ClientNames } from "./clients-C7zLFuWT.js";
3
3
  import { StandardSchemaV1 } from "@standard-schema/spec";
4
4
  //#region src/supabase/claims.d.ts
5
5
  /** One entry of the `memberships` claim, as `schemas/supabase-claims-v1.json` defines it. */
@@ -27,6 +27,8 @@ type SupabaseMembershipClaim = {
27
27
  };
28
28
  readonly managedBy?: "idp";
29
29
  readonly entitlements?: readonly string[];
30
+ /** The instance or an ancestor is suspended: the permission keys the membership still grants. */
31
+ readonly keep?: readonly string[];
30
32
  /** Custom roles in compact form, read by the RLS helpers in `jwt` mode. */
31
33
  readonly grants?: Readonly<Record<string, unknown>>;
32
34
  };
@@ -96,16 +98,36 @@ type SupabasePrincipal = Principal & {
96
98
  readonly is_anonymous?: boolean;
97
99
  };
98
100
  type SupabaseInclude = "email" | "phone" | "is_anonymous";
101
+ /**
102
+ * A column that holds a foreign key: the value is `column` of `through`,
103
+ * joined on `on`. A role reads its key from a roles table
104
+ * (`{ through: 'roles', on: { role_id: 'id' }, column: 'key' }`); a
105
+ * membership source's user can read its user id from a profile table
106
+ * (`{ through: 'contact_profiles', on: { contact_profile_id: 'id' }, column: 'user_id' }`).
107
+ */
108
+ type RoleThrough = {
109
+ /** The referenced table; unqualified, it is in the schema of the table that references it. */
110
+ readonly through: string;
111
+ /** One entry: the referencing column to the column of `through` it references. */
112
+ readonly on: Readonly<Record<string, string>>;
113
+ /** The column of `through` that holds the value: the role key, or the user id. */
114
+ readonly column: string;
115
+ };
99
116
  type SupabaseMembershipTable = {
100
117
  readonly table: string;
101
118
  readonly user: string;
102
- readonly role: string;
119
+ /**
120
+ * The role key column, a reference to a roles table that holds the key, or
121
+ * several of them: the row holds every non-null key.
122
+ */
123
+ readonly role: string | RoleThrough | readonly (string | RoleThrough)[];
103
124
  /** Per scope name, the column holding that scope's id: the table's own scope and its ancestors. */
104
125
  readonly columns?: Readonly<Record<string, string>>;
105
126
  readonly tenant?: string;
106
127
  readonly team?: string;
107
128
  readonly id?: string;
108
129
  readonly expiresAt?: string;
130
+ readonly disabledAt?: string;
109
131
  };
110
132
  /** A table whose row says whether a user or a scope instance is active. A missing row counts as suspended. */
111
133
  type SupabaseActiveRow = {
@@ -118,11 +140,28 @@ type SupabaseActiveRow = {
118
140
  readonly status?: string;
119
141
  readonly active?: readonly string[];
120
142
  };
143
+ /** A scope's active-row table, with the permissions its suspended instances keep. */
144
+ type SupabaseSuspendedScope = SupabaseActiveRow & {
145
+ /**
146
+ * Permissions (references or keys) members of a suspended instance, and of
147
+ * every instance nested in it, still hold; such a membership carries them
148
+ * as `keep`.
149
+ */
150
+ readonly keep?: readonly (string | {
151
+ readonly key: string;
152
+ })[];
153
+ };
154
+ type SupabaseSuspendedMembership = {
155
+ readonly keep?: readonly (string | {
156
+ readonly key: string;
157
+ })[];
158
+ };
121
159
  type SupabaseSuspension = {
122
160
  /** A suspended user holds no role and no membership. */
123
161
  readonly users?: SupabaseActiveRow;
124
- /** Per scope name: a suspended instance voids its memberships and every membership nested under it. */
125
- readonly scopes?: Readonly<Record<string, SupabaseActiveRow>>;
162
+ /** Per scope name: a suspended instance voids its memberships and every membership nested under it, except for `keep`. */
163
+ readonly scopes?: Readonly<Record<string, SupabaseSuspendedScope>>;
164
+ readonly memberships?: SupabaseSuspendedMembership;
126
165
  };
127
166
  type SupabaseMemberships = {
128
167
  /** The membership table of each named scope. */
@@ -147,10 +186,38 @@ type AuthorizeSqlOptions = {
147
186
  */
148
187
  readonly customRoles?: {
149
188
  readonly declared: readonly string[];
189
+ /** Stored allows may carry a level (`custom_role_permissions.level`). */
190
+ readonly levels?: true;
150
191
  };
151
192
  /** A suspended user, or a suspended instance of `scope` for a tenant request, answers `false`. */
152
193
  readonly suspension?: SupabaseSuspension;
153
194
  };
195
+ /** A permission reference; `rls generate` reads only its `key`. */
196
+ type SupabasePermissionRef = {
197
+ readonly key: string;
198
+ };
199
+ /**
200
+ * Private Realtime channels: topic patterns such as `org:{organization}:chat`,
201
+ * with one `{<scope>}` segment that holds a scope instance id.
202
+ */
203
+ type SupabaseRealtime = {
204
+ readonly topics: Readonly<Record<string, {
205
+ /** Receive broadcast and presence: `select` on `realtime.messages`. */
206
+ readonly read: SupabasePermissionRef;
207
+ /** Send broadcast and track presence: `insert`. */
208
+ readonly write?: SupabasePermissionRef;
209
+ }>>;
210
+ };
211
+ /** Storage buckets whose object paths hold a scope instance id in folder `folder` (default 1). */
212
+ type SupabaseStorage = {
213
+ readonly buckets: Readonly<Record<string, {
214
+ readonly scope: string;
215
+ readonly folder?: number;
216
+ readonly read?: SupabasePermissionRef;
217
+ readonly write?: SupabasePermissionRef;
218
+ readonly delete?: SupabasePermissionRef;
219
+ }>>;
220
+ };
154
221
  type SupabaseRlsOptions = {
155
222
  readonly roleClaim?: string;
156
223
  readonly tenantClaim?: string;
@@ -158,6 +225,8 @@ type SupabaseRlsOptions = {
158
225
  readonly tenantType?: string;
159
226
  readonly memberships?: SupabaseMembershipTable | SupabaseMemberships;
160
227
  readonly suspension?: SupabaseSuspension;
228
+ readonly realtime?: SupabaseRealtime;
229
+ readonly storage?: SupabaseStorage;
161
230
  };
162
231
  type SupabaseRlsConfig = {
163
232
  readonly dialect: "supabase";
@@ -166,10 +235,12 @@ type SupabaseRlsConfig = {
166
235
  readonly tenantType?: string;
167
236
  readonly memberships?: SupabaseMemberships;
168
237
  readonly suspension?: SupabaseSuspension;
238
+ readonly realtime?: SupabaseRealtime;
239
+ readonly storage?: SupabaseStorage;
169
240
  };
170
241
  /**
171
242
  * The structural shape `subjectFromSupabaseSession` reads: a discriminant and the verified JWT claims.
172
- * Matches better-supabase's `AuthSession` and similar session objects without importing them.
243
+ * Matches any session object of that shape without importing its library.
173
244
  */
174
245
  type SupabaseSessionLike = {
175
246
  readonly kind: string;
@@ -184,8 +255,16 @@ type SupabaseSubjectOptions = {
184
255
  readonly declared?: readonly string[];
185
256
  /** Claim holding plan names per tenant id; the active tenant's entry becomes `principal.plans`. */
186
257
  readonly plans?: string;
258
+ /** Names for OAuth client ids: an `oauth-client` actor gets `client` set to the name of its id, which a policy delegation matches with `to: { kind: 'oauth-client', client }`. */
259
+ readonly clients?: ClientNames;
187
260
  /** `'deny'` maps a token with `is_anonymous: true` (`signInAnonymously()`) to the anonymous subject, as `rls.anonymousSignIns: 'deny'` does in RLS. */
188
261
  readonly anonymousSignIns?: "deny";
262
+ /**
263
+ * `true` once the caller checked the session against the Auth server for this request
264
+ * (`auth.getUser()` or an equivalent session check): a token with a `session_id` gets
265
+ * `subject.liveSession`, which `{ subject: { session: { live: true } } }` requires. Never read from claims.
266
+ */
267
+ readonly liveSession?: boolean;
189
268
  /** Audit hook: `membership-dropped` for a `memberships` entry that could not be read, `invalid-chain` for a malformed `act`. */
190
269
  readonly onAuth?: (event: AuthEvent) => void;
191
270
  };
@@ -224,124 +303,4 @@ type SupabaseDelegation = {
224
303
  readonly scopes: readonly string[];
225
304
  };
226
305
  //#endregion
227
- //#region src/supabase/sources.d.ts
228
- /**
229
- * Runs one parameterised statement: `pg`'s `client.query` (which resolves
230
- * `{ rows }`) and `postgres`'s `sql.unsafe` (which resolves the rows) both fit.
231
- */
232
- type SqlQuery = (text: string, values: readonly unknown[]) => Promise<readonly Record<string, unknown>[] | {
233
- readonly rows: readonly Record<string, unknown>[];
234
- }>;
235
- type Common = {
236
- readonly table: string;
237
- /** Runs the lookups; without it the source only describes SQL (for `permdock supabase hook generate`). */
238
- readonly query?: SqlQuery;
239
- /** Drop suspended users and memberships under suspended instances, like `rls.suspension`. */
240
- readonly suspension?: SupabaseSuspension;
241
- };
242
- type MembershipTableOptions = Common & {
243
- /** Column names; `user`, `scope`, `id` and `role` default to `user_id`, `scope`, `scope_id`, `role`. */
244
- readonly columns?: {
245
- readonly user?: string;
246
- readonly scope?: string;
247
- readonly id?: string;
248
- /** A `jsonb` column of ancestor ids keyed by scope name. */
249
- readonly within?: string;
250
- readonly role?: string;
251
- readonly via?: string;
252
- readonly expiresAt?: string;
253
- /** The principal id that wrote the membership (`grantedBy`). */
254
- readonly grantedBy?: string;
255
- /** Free-text justification recorded on the membership (`reason`). */
256
- readonly reason?: string;
257
- /** A subgroup column filling `member.group`. */
258
- readonly group?: string;
259
- /** A text column; the value `idp` marks the row as owned by the identity provider. */
260
- readonly managedBy?: string;
261
- /** A `text[]` column of seats. */
262
- readonly seats?: string;
263
- };
264
- };
265
- type MembershipJunctionOptions = Common & {
266
- /** The declared scope every row is a membership of. */
267
- readonly scope: string;
268
- /** Default `user_id`. */
269
- readonly user?: string;
270
- /** The column holding the scope instance id. Default `<scope>_id`. */
271
- readonly id?: string;
272
- /** Ancestor id columns keyed by scope name. */
273
- readonly within?: Readonly<Record<string, string>>;
274
- /** A role column, or fixed roles every row holds (a contact table with no role column). */
275
- readonly roles: string | readonly string[];
276
- /** The membership kind every row has (`contact`, `staff`, `partner`). */
277
- readonly via?: string;
278
- readonly expiresAt?: string;
279
- /** The principal id that wrote the membership (`grantedBy`). */
280
- readonly grantedBy?: string;
281
- /** Free-text justification recorded on the membership (`reason`). */
282
- readonly reason?: string;
283
- /** A subgroup filling `member.group`: a fixed name every row has, or a column. */
284
- readonly group?: string | {
285
- readonly column: string;
286
- };
287
- /** `idp` when the identity provider owns every row, or a text column holding `idp` per row. */
288
- readonly managedBy?: "idp" | {
289
- readonly column: string;
290
- };
291
- /** A `text[]` column of seats. */
292
- readonly seats?: string;
293
- };
294
- /** What `permdock supabase hook generate` compiles; the same SQL the source runs. */
295
- type MembershipSql = {
296
- readonly table: string;
297
- /** Columns of the table that decide a membership; triggers bump the authorization version on them. */
298
- readonly user: string;
299
- /** `<table>.<user>%type`: the PL/pgSQL type of the user column, for a variable `select` compares with. */
300
- readonly userType: string;
301
- /**
302
- * The `select` of claim rows for one user, with every filter applied.
303
- * `user` must have the column's type (a `userType` variable, or an untyped
304
- * `$1` Postgres infers): the column is compared uncast so its index applies.
305
- */
306
- select(user: string): string;
307
- /** The `select` of member rows for one scope instance (`$1` scope, `$2` id). */
308
- list(): string;
309
- /** A text column holding `idp` for rows the identity provider owns; `''` when every row is owned. */
310
- readonly managed?: string;
311
- /** Other tables the `select` reads (suspension tables). */
312
- readonly reads: readonly string[];
313
- /** Every column that decides who holds which membership: user, scope, id, `within`, role, `via` and expiry. */
314
- readonly columns: readonly string[];
315
- /** For a single-scope source: its scope and the scopes whose ids each row carries. */
316
- readonly scope?: string;
317
- readonly holds?: readonly string[];
318
- /** The source's entry in the hook manifest's `memberships`. */
319
- readonly manifest: SupabaseManifestMembership;
320
- };
321
- type SqlMembershipSource = MembershipSource & {
322
- readonly sql: MembershipSql;
323
- };
324
- /**
325
- * Memberships from one table holding every scope: a row per user, scope,
326
- * instance and role (`user_id, scope, scope_id, role`), with optional
327
- * `within`, `via`, expiry, owner and seat columns. Rows of the same instance
328
- * merge into one membership.
329
- */
330
- declare function fromTable(options: MembershipTableOptions): SqlMembershipSource;
331
- /**
332
- * Memberships from a table of one scope (`customer_contacts`): every row is a
333
- * membership of `scope`, with roles from a column or fixed (`['contact']`), a
334
- * fixed `via`, and ancestor ids from `within` columns.
335
- */
336
- declare function fromJunction(options: MembershipJunctionOptions): SqlMembershipSource;
337
- declare const AUTHZ_VERSION_TABLE = "permdock_authz_version";
338
- /**
339
- * Reads the authorization version `permdock supabase hook generate` keeps in
340
- * `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version })`.
341
- */
342
- declare function authzVersion(options: {
343
- readonly query: SqlQuery;
344
- readonly schema?: string;
345
- }): NonNullable<MembershipSource["version"]>;
346
- //#endregion
347
- export { SupabaseActClaim as C, SupabaseMembershipClaim as D, SupabaseClaimsSchema as E, SupabasePermDockClaims as O, SupabaseSuspension as S, SupabaseClaimsOptions as T, SupabasePrincipal as _, SqlMembershipSource as a, SupabaseSessionLike as b, fromJunction as c, SupabaseActiveRow as d, SupabaseActor as f, SupabaseMembershipTable as g, SupabaseInclude as h, MembershipTableOptions as i, supabaseClaims as k, fromTable as l, SupabaseDelegation as m, MembershipJunctionOptions as n, SqlQuery as o, SupabaseActorResult as p, MembershipSql as r, authzVersion as s, AUTHZ_VERSION_TABLE as t, AuthorizeSqlOptions as u, SupabaseRlsConfig as v, SupabaseClaims as w, SupabaseSubjectOptions as x, SupabaseRlsOptions as y };
306
+ export { SupabaseClaimsSchema as C, supabaseClaims as E, SupabaseClaimsOptions as S, SupabasePermDockClaims as T, SupabaseSuspendedMembership as _, SupabaseActorResult as a, SupabaseActClaim as b, SupabaseMembershipTable as c, SupabaseRealtime as d, SupabaseRlsConfig as f, SupabaseSubjectOptions as g, SupabaseStorage as h, SupabaseActor as i, SupabasePermissionRef as l, SupabaseSessionLike as m, RoleThrough as n, SupabaseDelegation as o, SupabaseRlsOptions as p, SupabaseActiveRow as r, SupabaseInclude as s, AuthorizeSqlOptions as t, SupabasePrincipal as u, SupabaseSuspendedScope as v, SupabaseMembershipClaim as w, SupabaseClaims as x, SupabaseSuspension as y };
@@ -1,4 +1,4 @@
1
- import { a as PermDockPluginOptions } from "../types-D6Z6-rKJ.js";
1
+ import { a as PermDockPluginOptions } from "../types-BPxgszlT.js";
2
2
  import { createUnplugin } from "unplugin";
3
3
  //#region src/unplugin/index.d.ts
4
4
  type CreateUnplugin = typeof createUnplugin<PermDockPluginOptions | undefined>;
@@ -1,4 +1,4 @@
1
- import { n as runPluginCollect } from "../plugin-4gr7IxFJ.js";
1
+ import { n as createCollectScheduler, r as report } from "../watch-UihESpsJ.js";
2
2
  import { t as peerHint } from "../peer-BOr_kJE1.js";
3
3
  import { createRequire } from "node:module";
4
4
  //#region src/unplugin/index.ts
@@ -9,19 +9,20 @@ function loadCreateUnplugin() {
9
9
  throw new Error(peerHint("unplugin", "permdock/unplugin"));
10
10
  }
11
11
  }
12
- function report(message) {
13
- if (message !== void 0) process.stderr.write(`permdock: ${message}\n`);
14
- }
15
12
  function collectPlugin(options) {
13
+ const schedulers = /* @__PURE__ */ new Map();
14
+ function schedulerFor(cwd) {
15
+ const scheduler = schedulers.get(cwd) ?? createCollectScheduler(cwd, options);
16
+ schedulers.set(cwd, scheduler);
17
+ return scheduler;
18
+ }
16
19
  return {
17
20
  name: "permdock-collect",
18
21
  async buildStart() {
19
- report(await runPluginCollect(process.cwd(), options, options?.check === true));
22
+ report(await schedulerFor(process.cwd()).run(options?.check === true));
20
23
  },
21
- watchChange() {
22
- runPluginCollect(process.cwd(), options, false).then(report, (error) => {
23
- report(error instanceof Error ? error.message : String(error));
24
- });
24
+ watchChange(id) {
25
+ schedulerFor(process.cwd()).changed(id);
25
26
  }
26
27
  };
27
28
  }
@@ -1,4 +1,4 @@
1
- import { a as listArg, i as globalArgs, t as COMMAND_DESCRIPTIONS } from "./commands-BMh_Etm2.js";
1
+ import { a as listArg, i as globalArgs, t as COMMAND_DESCRIPTIONS } from "./commands-DWOrSQic.js";
2
2
  import { defineCommand } from "citty";
3
3
  //#region src/cli/commands/usage.ts
4
4
  function usage(ctx) {
@@ -24,7 +24,7 @@ function usage(ctx) {
24
24
  }
25
25
  },
26
26
  async run({ args: parsed, rawArgs }) {
27
- const result = await (await import("./usage-PyEor6GA.js")).runUsage({
27
+ const result = await (await import("./usage-D82l1CwK.js")).runUsage({
28
28
  cwd: ctx.cwd,
29
29
  config: ctx.config,
30
30
  ignore: listArg(rawArgs, "ignore"),
@@ -0,0 +1,2 @@
1
+ import { t as runUsage } from "./usage-DG1oeCca.js";
2
+ export { runUsage };