permdock 0.1.0 → 0.3.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 (350) 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-CKwwqFWz.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 +223 -0
  18. package/dist/better-supabase/index.js +648 -0
  19. package/dist/bind-C_ob3LKa.d.ts +25 -0
  20. package/dist/bind-CuzGytRf.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-BDG_nkxt.d.ts → capability-2kYTMWDv.d.ts} +2 -2
  25. package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
  26. package/dist/catalog/index.d.ts +1 -1
  27. package/dist/catalog/index.js +1 -1
  28. package/dist/catalog-CRW5Mx_B.js +2 -0
  29. package/dist/{catalog-H-vFGwWK.js → catalog-DWF5cYqB.js} +4 -4
  30. package/dist/{catalog-B0E6bggc.js → catalog-dFZdWCGN.js} +2 -2
  31. package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-DdGm82XT.js} +20 -32
  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-CB_ELYuX.js} +2 -2
  44. package/dist/{cloud-Cuxr6Czw.js → cloud-DWLXO2af.js} +7 -6
  45. package/dist/collect-DClJsheJ.js +83 -0
  46. package/dist/{collect-O-tOtbnk.js → collect-DSTE3ml9.js} +194 -42
  47. package/dist/collect-DSWOk19R.js +2 -0
  48. package/dist/{commands-BMh_Etm2.js → commands-DSxCqG9A.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-BkRyBDBw.d.ts +94 -0
  53. package/dist/config-BJiM-xAm.js +157 -0
  54. package/dist/config-Dnszbv-6.js +36 -0
  55. package/dist/config-report-DMvWKUxL.js +44 -0
  56. package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
  57. package/dist/{context-CKEAabd7.js → context-Bcy85rGi.js} +36 -27
  58. package/dist/convex/index.d.ts +9 -4
  59. package/dist/convex/index.js +14 -4
  60. package/dist/create-B1d519XK.d.ts +245 -0
  61. package/dist/create-CMwIl-w2.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-DMYiCjJV.d.ts} +9 -10
  66. package/dist/{diff-x5Il8LVa.js → diff-2VaeChzX.js} +44 -11
  67. package/dist/{diff-BUzf5Poi.js → diff-DBIhz_f2.js} +2 -2
  68. package/dist/{doctor-Bqo6FwUa.js → doctor-BwCAMLx_.js} +2 -2
  69. package/dist/doctor-collect-CHk6XWOA.js +665 -0
  70. package/dist/doctor-igIiM_Hl.js +1194 -0
  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-DPdqI50v.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-CTLijvdm.js} +66 -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-0nNqHspG.d.ts +6 -0
  105. package/dist/{index-xIxJLwOQ.d.ts → index-BNc7Wer_.d.ts} +75 -7
  106. package/dist/{index-CltcQ4Bf.d.ts → index-C7Tw7MaW.d.ts} +68 -5
  107. package/dist/{index-LF_hS-yn.d.ts → index-C8z4RjQV.d.ts} +1 -1
  108. package/dist/index.d.ts +14 -9
  109. package/dist/index.js +22 -17
  110. package/dist/instance-options-Dhhcnm3y.js +22 -0
  111. package/dist/instance-options-jARdwfPN.d.ts +11 -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-_RRHmnMY.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-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
  144. package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
  145. package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
  146. package/dist/{openapi-CwePaF7C.js → openapi-l0xYHkcv.js} +3 -3
  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-BrMozJCo.js +36 -0
  153. package/dist/parse-local-manifest-JLnaBH0S.d.ts +10 -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-CbgvLnuo.js} +672 -149
  157. package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
  158. package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
  159. package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
  160. package/dist/{permissions-CofRqesP.js → permissions-RJrovw98.js} +3 -3
  161. package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
  162. package/dist/{policy-Cq2fB8Q5.d.ts → policy-D2W7uv19.d.ts} +2 -2
  163. package/dist/{policy-CInmNGkM.d.ts → policy-IB6yxpC3.d.ts} +351 -42
  164. package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
  165. package/dist/powersync-BylawD_U.js +540 -0
  166. package/dist/powersync-DliZK_-y.js +62 -0
  167. package/dist/powersync-e_AZrKbg.js +2 -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-DX075l9V.d.ts +7 -0
  172. package/dist/problem-details-_AMOYz-w.js +144 -0
  173. package/dist/{protected-BuPAycJT.d.ts → protected-BdnIEFkY.d.ts} +5 -4
  174. package/dist/protected-utU-SLuy.js +100 -0
  175. package/dist/protected-xAr24FEC.d.ts +40 -0
  176. package/dist/provider-CSQd7m92.js +52 -0
  177. package/dist/{provider-wTAUda2v.d.ts → provider-DZY281jO.d.ts} +1 -1
  178. package/dist/provider-store-Cfbvo4DE.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-CYyiLiwO.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-BOFU3chG.js → rls-B4ur8nKQ.js} +8 -3
  192. package/dist/rls-DQtdgTHB.js +2521 -0
  193. package/dist/rls-fields-74oZPXWL.js +3582 -0
  194. package/dist/{rls-graph-DxQ39PJj.js → rls-graph-CHwx0V8q.js} +100 -36
  195. package/dist/{rls-import-CXV6LBlS.js → rls-import-BTFVk3jH.js} +7 -6
  196. package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-CN4TlJTO.js} +6 -5
  197. package/dist/rls-ownership-RuFqaqGz.js +843 -0
  198. package/dist/rls-shared-Cewd_-zI.js +495 -0
  199. package/dist/rls-verify-CVQTHTh5.js +746 -0
  200. package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
  201. package/dist/row-conditions-h2HythXQ.js +27 -0
  202. package/dist/rpc-DL9Sqvb1.js +89 -0
  203. package/dist/{run-CJ6UvS3a.js → run-DKDbM4Du.js} +31 -12
  204. package/dist/runtime-CB8gQFvS.js +11 -0
  205. package/dist/{saas-BRrZzJkM.js → saas-DhpJjnBA.js} +17 -7
  206. package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
  207. package/dist/scim/index.d.ts +1 -1
  208. package/dist/scim/index.js +1 -1
  209. package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
  210. package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
  211. package/dist/server/index.d.ts +22 -11
  212. package/dist/server/index.js +11 -8
  213. package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
  214. package/dist/shared-DRu8VFVM.js +123 -0
  215. package/dist/{sink-Cfr9-7YC.d.ts → sink-B1fZzIMf.d.ts} +1 -1
  216. package/dist/skills-Biq5uup3.js +192 -0
  217. package/dist/{skills-C_lpV4Jx.js → skills-Bx-U0irG.js} +10 -4
  218. package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
  219. package/dist/snapshot-cache-B-LxUahj.d.ts +45 -0
  220. package/dist/snapshot-cache-D6jLelln.js +44 -0
  221. package/dist/solid/index.d.ts +39 -9
  222. package/dist/solid/index.js +76 -85
  223. package/dist/sources-4p0-4xQm.js +545 -0
  224. package/dist/sources-BdOYLw9j.d.ts +192 -0
  225. package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
  226. package/dist/{src-CTNT-PBW.js → src-BDwEZWrZ.js} +149 -11
  227. package/dist/ssf/index.d.ts +3 -2
  228. package/dist/ssf/index.js +3 -29
  229. package/dist/store-DMAWwAJV.js +371 -0
  230. package/dist/{store-Bq90395i.d.ts → store-jOBYpiXC.d.ts} +13 -4
  231. package/dist/store-options-ByhZq1jV.js +716 -0
  232. package/dist/{stores-CkG2HrSg.js → stores-BT2pSCub.js} +10 -63
  233. package/dist/{stores-CvOnu_2T.d.ts → stores-C0IMQrGI.d.ts} +20 -9
  234. package/dist/{stream-BhMfZOwr.d.ts → stream-D1RXubw2.d.ts} +2 -2
  235. package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
  236. package/dist/subject-settings-BwBmCdTR.js +128 -0
  237. package/dist/supabase/index.d.ts +133 -6
  238. package/dist/supabase/index.js +4 -3
  239. package/dist/supabase/middleware.d.ts +32 -27
  240. package/dist/supabase/middleware.js +56 -22
  241. package/dist/{supabase-D8UlBA7Z.js → supabase-Boqb9a_Y.js} +3 -3
  242. package/dist/{supabase-DTxGtYdi.js → supabase-C0qESOa-.js} +347 -367
  243. package/dist/supabase-config-BpPXt3x1.js +472 -0
  244. package/dist/supabase-hook-6sYLXg_u.js +2 -0
  245. package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-CSLQ4zJ3.js} +1037 -705
  246. package/dist/supautils-Cn4R4cJ4.js +91 -0
  247. package/dist/svelte/PermissionBoundary.svelte +37 -0
  248. package/dist/svelte/Protected.svelte +8 -2
  249. package/dist/svelte/index.d.ts +9 -6
  250. package/dist/svelte/index.js +61 -7
  251. package/dist/svelte/runtime.d.ts +4 -3
  252. package/dist/svelte/runtime.js +4 -3
  253. package/dist/svelte/source.d.ts +9 -6
  254. package/dist/svelte/source.js +7 -4
  255. package/dist/terminal/index.d.ts +6 -14
  256. package/dist/terminal/index.js +44 -32
  257. package/dist/testing/index.d.ts +105 -16
  258. package/dist/testing/index.js +504 -40
  259. package/dist/testing/saas/index.d.ts +4 -4
  260. package/dist/testing/saas/index.js +2 -2
  261. package/dist/testing/saas/permissions.d.ts +1 -1
  262. package/dist/testing/saas/permissions.js +1 -1
  263. package/dist/token-CIWxJOCh.js +50 -0
  264. package/dist/trpc/index.d.ts +7 -26
  265. package/dist/trpc/index.js +17 -100
  266. package/dist/types-BnIEz1sU.d.ts +48 -0
  267. package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
  268. package/dist/{sources-DOpW5Ila.d.ts → types-C97IskBw.d.ts} +86 -127
  269. package/dist/types-CKNSyIf_.d.ts +52 -0
  270. package/dist/types-Cq_H8N_X.d.ts +197 -0
  271. package/dist/{types-D6Z6-rKJ.d.ts → types-DbjRN55U.d.ts} +273 -22
  272. package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
  273. package/dist/{types-BvBk1wgn.d.ts → types-DxiCGmmd.d.ts} +5 -3
  274. package/dist/{types-B9dmiiab.d.ts → types-QCuYJh4q.d.ts} +1 -1
  275. package/dist/{types-B8w5PFtS.d.ts → types-aqOHTHcp.d.ts} +17 -1
  276. package/dist/unplugin/index.d.ts +1 -1
  277. package/dist/unplugin/index.js +10 -9
  278. package/dist/usage-DorAJiU_.js +2 -0
  279. package/dist/{usage-1ozMubLY.js → usage-GTixvDDU.js} +2 -2
  280. package/dist/{usage-CUnK6Ou9.js → usage-ItS7nLcl.js} +225 -62
  281. package/dist/validation-error-Ba264OaJ.d.ts +26 -0
  282. package/dist/validation-error-CnjZ4t92.js +33 -0
  283. package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
  284. package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
  285. package/dist/version-BvacVTZR.js +17 -0
  286. package/dist/views-Soe7bGSC.js +95 -0
  287. package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
  288. package/dist/vue/index.d.ts +35 -13
  289. package/dist/vue/index.js +86 -93
  290. package/dist/watch-BwxLTYMZ.js +2 -0
  291. package/dist/watch-DVBJ9cBq.js +128 -0
  292. package/dist/webmcp/index.d.ts +2 -2
  293. package/dist/webmcp/index.js +7 -13
  294. package/package.json +62 -36
  295. package/schemas/approval-request-v1.json +175 -0
  296. package/schemas/catalog-v1.json +29 -1
  297. package/schemas/supabase-claims-v1.json +6 -1
  298. package/schemas/supabase-manifest-v1.json +150 -6
  299. package/skills/permdock/SKILL.md +7 -7
  300. package/skills/permdock-agents/SKILL.md +5 -5
  301. package/skills/permdock-agents/references/runtimes.md +12 -10
  302. package/skills/permdock-approvals/SKILL.md +4 -4
  303. package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
  304. package/skills/permdock-audit/SKILL.md +3 -3
  305. package/skills/permdock-credentials/SKILL.md +4 -4
  306. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  307. package/skills/permdock-data/SKILL.md +4 -4
  308. package/skills/permdock-data/references/queries-and-rls.md +14 -6
  309. package/skills/permdock-data/references/relationships.md +5 -3
  310. package/skills/permdock-tenancy/SKILL.md +9 -6
  311. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
  312. package/skills/permdock-wire/SKILL.md +4 -4
  313. package/skills/permdock-wire/references/adapters.md +42 -30
  314. package/skills/permdock-wire/references/policy-options.md +5 -3
  315. package/dist/approvers-aH0PJkmf.js +0 -20
  316. package/dist/catalog-idsHc0vo.js +0 -2
  317. package/dist/collect-B7_TIfmg.js +0 -49
  318. package/dist/collect-fRPAQIWb.js +0 -2
  319. package/dist/compile-CQbvyIBr.d.ts +0 -30
  320. package/dist/config-BPYmjTOp.js +0 -26
  321. package/dist/context-gtAwAILx.js +0 -6
  322. package/dist/create-BKF3dgFk.d.ts +0 -162
  323. package/dist/create-CSkhDU9T.js +0 -222
  324. package/dist/doctor-BGle8Gqi.js +0 -1314
  325. package/dist/helpers-DnSOrhB9.js +0 -682
  326. package/dist/index-fG6NSXlc.d.ts +0 -9
  327. package/dist/kernel-YOGCWNLf.js +0 -211
  328. package/dist/load-QOOm1z70.js +0 -2
  329. package/dist/manifest-DDQbC6K0.d.ts +0 -118
  330. package/dist/map-error-RJ3ZsUyA.js +0 -16
  331. package/dist/may-use-CnFEjVEp.js +0 -37
  332. package/dist/pg-4GJWDUxG.js +0 -953
  333. package/dist/plugin-4gr7IxFJ.js +0 -65
  334. package/dist/protected-B4K3BKoX.js +0 -138
  335. package/dist/protected-wY7nXhY9.d.ts +0 -23
  336. package/dist/provider-_wx46HpB.js +0 -48
  337. package/dist/rls-CJVja9Ww.js +0 -2119
  338. package/dist/rls-helpers-BxRuif0l.js +0 -1346
  339. package/dist/runtime-DP9ttFh1.js +0 -27
  340. package/dist/skills-Dx3QLnMY.js +0 -110
  341. package/dist/source-DoBBYJi2.js +0 -6
  342. package/dist/sources-DVHM3Mwq.js +0 -284
  343. package/dist/store-C6hFW6ta.js +0 -508
  344. package/dist/subject-settings-xt7V845g.js +0 -82
  345. package/dist/supabase-hook-DW-xP4hU.js +0 -2
  346. package/dist/types-DbWdEfcm.d.ts +0 -87
  347. package/dist/types-bva3i4Gf.d.ts +0 -98
  348. package/dist/types-i4BAOvdb.d.ts +0 -97
  349. package/dist/usage-PyEor6GA.js +0 -2
  350. package/dist/version-CnSh33Fj.js +0 -16
@@ -1,5 +1,5 @@
1
- import { n as freezeDeep } from "./freeze-y1_jQL4v.js";
2
- import { E as splitPath, T as readPath, x as assertSafeKey } from "./permissions-DC7GROPA.js";
1
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
2
+ import { O as readPath, k as splitPath, w as assertSafeKey } from "./permissions-DVoF6dMt.js";
3
3
  //#region src/conditions/ast.ts
4
4
  function parentHop(parent) {
5
5
  return typeof parent === "string" ? { field: parent } : parent;
@@ -36,7 +36,8 @@ function hasConditionOp(condition, op) {
36
36
  case "isNull":
37
37
  case "memberOf":
38
38
  case "related":
39
- case "opaque": return false;
39
+ case "opaque":
40
+ case "liveSession": return false;
40
41
  default:
41
42
  /* v8 ignore next */
42
43
  return condition;
@@ -1,4 +1,5 @@
1
- import { C as ownGet, l as isComputedRelation, p as isPrincipalRelation, r as expandRelation, s as getRegistry, u as isEdgeRelation } from "./permissions-DC7GROPA.js";
1
+ import { C as restrictedStops, E as ownGet, d as isEdgeRelation, l as groupEntries, m as isPrincipalRelation, r as expandRelation, s as getRegistry, u as isComputedRelation } from "./permissions-DVoF6dMt.js";
2
+ import { t as idText } from "./ids-DC4V4CFu.js";
2
3
  import { n as isThenable } from "./thenable-okc2xDsj.js";
3
4
  function isRecord(value) {
4
5
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -22,6 +23,10 @@ function asChain(value) {
22
23
  ...value["truncated"] === true ? { truncated: true } : {}
23
24
  };
24
25
  }
26
+ function asRow(value) {
27
+ if (value === null || value === void 0) return { row: null };
28
+ return isRecord(value) ? { row: value } : void 0;
29
+ }
25
30
  function asGroup(value) {
26
31
  if (!isRecord(value) || typeof value["resource"] !== "string" || typeof value["id"] !== "string" || typeof value["relation"] !== "string" || value["id"] === "") return;
27
32
  return {
@@ -100,6 +105,17 @@ function relationReader(source, cache, resources) {
100
105
  }), asHolders);
101
106
  return {
102
107
  available: source !== void 0,
108
+ row(query) {
109
+ const load = source?.row?.bind(source);
110
+ return read(cache, JSON.stringify([
111
+ "row",
112
+ query.resource,
113
+ query.id
114
+ ]), load === void 0 ? void 0 : () => load({
115
+ resource: query.resource,
116
+ id: query.id
117
+ }), asRow);
118
+ },
103
119
  chain(query) {
104
120
  const through = query.through ?? "parent";
105
121
  return read(cache, JSON.stringify([
@@ -142,9 +158,7 @@ function pendingRelations(cache) {
142
158
  return out;
143
159
  }
144
160
  function relationId(value) {
145
- if (typeof value === "string") return value === "" ? void 0 : value;
146
- if (typeof value === "number" && Number.isFinite(value)) return String(value);
147
- if (typeof value === "bigint") return String(value);
161
+ return idText(value);
148
162
  }
149
163
  /** Whether the holder's period covers `now`. */
150
164
  function activeNow(holder, now) {
@@ -176,6 +190,27 @@ function followHops(condition, first, reader) {
176
190
  }
177
191
  return { id };
178
192
  }
193
+ function restrictedAbove(condition, row, reader) {
194
+ const above = condition.restrictedAncestors;
195
+ if (above === void 0) return false;
196
+ const parent = relationId(ownGet(row, above.parent));
197
+ if (parent === void 0) return false;
198
+ const chain = reader.chain({
199
+ resource: above.resource,
200
+ id: parent,
201
+ depth: above.depth - 1
202
+ });
203
+ if (chain === "pending" || chain === "failed") return "relation-unavailable";
204
+ if (chain.restricted === true || chain.ancestors.some((ancestor) => ancestor.restricted === true)) return;
205
+ const own = relationId(ownGet(row, above.id));
206
+ const ids = [
207
+ ...own === void 0 ? [] : [own],
208
+ parent,
209
+ ...chain.ancestors.map((ancestor) => ancestor.id)
210
+ ];
211
+ if (new Set(ids).size !== ids.length || chain.truncated === true || chain.ancestors.length > above.depth - 1) return "relation-depth";
212
+ return false;
213
+ }
179
214
  /** The instances a graph relation reads: the start, then ancestors until a restricted one or `depth`. */
180
215
  function relationWalk(condition, row, reader) {
181
216
  if (!isRecord(row)) return;
@@ -184,6 +219,8 @@ function relationWalk(condition, row, reader) {
184
219
  const rowRestricted = condition.restricted !== void 0 && ownGet(row, condition.restricted) === true;
185
220
  const hopped = condition.hops !== void 0 && condition.hops.length > 0;
186
221
  if ((condition.parent === true || hopped) && rowRestricted) return;
222
+ const above = restrictedAbove(condition, row, reader);
223
+ if (above !== false) return above;
187
224
  const start = hopped ? followHops(condition, first, reader) : { id: first };
188
225
  if (start === void 0 || start === "relation-unavailable") return start;
189
226
  const id = start.id;
@@ -198,10 +235,11 @@ function relationWalk(condition, row, reader) {
198
235
  });
199
236
  if (chain === "pending" || chain === "failed") return "relation-unavailable";
200
237
  const ids = [id];
201
- let stopped = chain.restricted === true;
238
+ const stops = condition.passRestricted !== true;
239
+ let stopped = stops && chain.restricted === true;
202
240
  if (!stopped) for (const ancestor of chain.ancestors.slice(0, condition.depth)) {
203
241
  ids.push(ancestor.id);
204
- if (ancestor.restricted === true) {
242
+ if (stops && ancestor.restricted === true) {
205
243
  stopped = true;
206
244
  break;
207
245
  }
@@ -218,7 +256,8 @@ function relationWalk(condition, row, reader) {
218
256
  * goes on past `depth` with no holder below it. Any read the instance could
219
257
  * not answer is `relation-unavailable` unless a holder was found elsewhere.
220
258
  */
221
- function resolveRelated(condition, row, subject, now, reader) {
259
+ function resolveRelated(condition, row, subject, now, reader, permitted) {
260
+ if (condition.permission !== void 0) return resolveInherited(condition, condition.permission, row, reader, permitted);
222
261
  const principal = subject.principal;
223
262
  if (principal === null) return false;
224
263
  const walk = relationWalk(condition, row, reader);
@@ -245,6 +284,19 @@ function resolveRelated(condition, row, subject, now, reader) {
245
284
  if (unavailable) return "relation-unavailable";
246
285
  return walk.truncated || deep ? "relation-depth" : false;
247
286
  }
287
+ function resolveInherited(condition, permission, row, reader, permitted) {
288
+ const walk = relationWalk(condition, row, reader);
289
+ if (walk === void 0) return false;
290
+ if (walk === "relation-depth" || walk === "relation-unavailable") return walk;
291
+ if (permitted === void 0) return "relation-unavailable";
292
+ let unknown = false;
293
+ for (const id of walk.ids) {
294
+ const verdict = permitted(condition.resource, id, permission);
295
+ if (verdict === true) return true;
296
+ if (verdict !== false && unknown === false) unknown = verdict;
297
+ }
298
+ return unknown;
299
+ }
248
300
  function groupKey(group) {
249
301
  return JSON.stringify([
250
302
  group.resource,
@@ -288,29 +340,51 @@ function holdsRelation(at, principalId, now, reader, budget, seen, explored) {
288
340
  if (unavailable) return "relation-unavailable";
289
341
  return deep ? "relation-depth" : false;
290
342
  }
291
- /** The holder one edge-table row names for `spec`, or `undefined` when the row does not belong to it. */
292
- function tableHolder(resourceName, spec, row, id) {
293
- if (relationId(ownGet(row, spec.object ?? `${resourceName}_id`)) !== id) return;
294
- for (const [column, value] of Object.entries(spec.match ?? {})) if (ownGet(row, column) !== value) return;
295
- const subject = relationId(ownGet(row, spec.subject ?? "user_id"));
296
- if (subject === void 0) return;
343
+ /** The holders one edge-table row names for `spec`: none when the row does not belong to it. */
344
+ function tableHolders(resourceName, spec, row, id) {
345
+ if (relationId(ownGet(row, spec.object ?? `${resourceName}_id`)) !== id) return [];
346
+ for (const [column, value] of Object.entries(spec.match ?? {})) if (ownGet(row, column) !== value) return [];
297
347
  const expiresAt = spec.expiresAt === void 0 ? void 0 : seconds(ownGet(row, spec.expiresAt));
298
348
  const period = expiresAt === void 0 ? {} : { expiresAt };
299
349
  const groups = spec.groups;
300
- const kind = groups === void 0 ? null : ownGet(row, groups.column);
301
- if (groups === void 0 || kind === null || kind === void 0 || kind === groups.direct) return {
302
- principal: { id: subject },
350
+ const direct = relationId(ownGet(row, spec.subject ?? "user_id"));
351
+ if (groups === void 0) return direct === void 0 ? [] : [{
352
+ principal: { id: direct },
303
353
  ...period
304
- };
305
- const relation = typeof kind === "string" && Object.hasOwn(groups.resources, kind) ? groups.resources[kind] : void 0;
306
- return relation === void 0 ? void 0 : {
354
+ }];
355
+ if (groups.column === void 0) {
356
+ const out = direct === void 0 ? [] : [{
357
+ principal: { id: direct },
358
+ ...period
359
+ }];
360
+ for (const group of groupEntries(spec)) {
361
+ const groupId = relationId(ownGet(row, group.subject));
362
+ if (groupId !== void 0) out.push({
363
+ group: {
364
+ resource: group.resource,
365
+ id: groupId,
366
+ relation: group.relation
367
+ },
368
+ ...period
369
+ });
370
+ }
371
+ return out;
372
+ }
373
+ const kind = ownGet(row, groups.column);
374
+ if (kind === null || kind === void 0 || kind === groups.direct) return direct === void 0 ? [] : [{
375
+ principal: { id: direct },
376
+ ...period
377
+ }];
378
+ const group = groupEntries(spec).find((entry) => entry.resource === kind);
379
+ const groupId = group === void 0 ? void 0 : relationId(ownGet(row, group.subject));
380
+ return group === void 0 || groupId === void 0 ? [] : [{
307
381
  group: {
308
- resource: kind,
309
- id: subject,
310
- relation
382
+ resource: group.resource,
383
+ id: groupId,
384
+ relation: group.relation
311
385
  },
312
386
  ...period
313
- };
387
+ }];
314
388
  }
315
389
  function seconds(value) {
316
390
  if (value instanceof Date) {
@@ -350,6 +424,9 @@ function memoryRelations(permissions, data = {}) {
350
424
  }
351
425
  const rowOf = (resource, id) => byId.get(resource)?.get(id);
352
426
  return {
427
+ row({ resource, id }) {
428
+ return rowOf(resource, id) ?? null;
429
+ },
353
430
  ancestors({ resource, id, depth, through }) {
354
431
  const node = registry.get(resource);
355
432
  const start = rowOf(resource, id);
@@ -361,7 +438,8 @@ function memoryRelations(permissions, data = {}) {
361
438
  return { ancestors: [{ id: next }] };
362
439
  }
363
440
  const restricted = restrictedOf(node, start);
364
- if (restricted || node.parent === void 0 || node.parent.resource !== resource) return restricted ? {
441
+ const stops = restrictedStops(node, "parent");
442
+ if (restricted && stops || node.parent === void 0 || node.parent.resource !== resource) return restricted ? {
365
443
  restricted: true,
366
444
  ancestors: []
367
445
  } : { ancestors: [] };
@@ -380,15 +458,19 @@ function memoryRelations(permissions, data = {}) {
380
458
  id: next,
381
459
  restricted: true
382
460
  } : { id: next });
383
- if (seen.has(next) || hidden) {
461
+ if (seen.has(next) || hidden && stops) {
384
462
  next = void 0;
385
463
  break;
386
464
  }
387
465
  seen.add(next);
388
466
  next = relationId(ownGet(row, field));
389
467
  }
390
- return next === void 0 ? { ancestors } : {
391
- ancestors,
468
+ const chain = restricted ? {
469
+ restricted: true,
470
+ ancestors
471
+ } : { ancestors };
472
+ return next === void 0 || rowOf(resource, next) === void 0 ? chain : {
473
+ ...chain,
392
474
  truncated: true
393
475
  };
394
476
  },
@@ -397,10 +479,7 @@ function memoryRelations(permissions, data = {}) {
397
479
  if (spec === void 0 || isComputedRelation(spec)) return [];
398
480
  if (isEdgeRelation(spec)) {
399
481
  const table = data.tables?.[spec.edge];
400
- if (table !== void 0) return table.flatMap((row) => {
401
- const holder = tableHolder(resource, spec, row, id);
402
- return holder === void 0 ? [] : [holder];
403
- });
482
+ if (table !== void 0) return table.flatMap((row) => tableHolders(resource, spec, row, id));
404
483
  return (data.edges?.[resource]?.[relation] ?? []).filter((edge) => edge.id === id).map(edgeHolder);
405
484
  }
406
485
  const row = rowOf(resource, id);
@@ -0,0 +1,28 @@
1
+ //#region src/ssf/replay.ts
2
+ function memoryReplayStore() {
3
+ const seen = /* @__PURE__ */ new Map();
4
+ function evict(now = Date.now() / 1e3) {
5
+ for (const [jti, expiresAt] of seen) if (expiresAt !== void 0 && expiresAt <= now) seen.delete(jti);
6
+ }
7
+ return {
8
+ seen(jti) {
9
+ evict();
10
+ return seen.has(jti);
11
+ },
12
+ remember(jti, expiresAt) {
13
+ evict();
14
+ seen.set(jti, expiresAt);
15
+ },
16
+ claim(key, expiresAt) {
17
+ evict();
18
+ if (seen.has(key)) return false;
19
+ seen.set(key, expiresAt);
20
+ return true;
21
+ },
22
+ release(key) {
23
+ seen.delete(key);
24
+ }
25
+ };
26
+ }
27
+ //#endregion
28
+ export { memoryReplayStore as t };
@@ -0,0 +1,5 @@
1
+ import { g as ReplayStore } from "./types-Cq_H8N_X.js";
2
+ //#region src/ssf/replay.d.ts
3
+ declare function memoryReplayStore(): ReplayStore;
4
+ //#endregion
5
+ export { memoryReplayStore as t };
@@ -0,0 +1,20 @@
1
+ //#region src/core/resource-ref.ts
2
+ /** The row's `id` as a string, when it is a string or a number. */
3
+ function resourceIdOf(data) {
4
+ if (data === null || typeof data !== "object" || !("id" in data)) return;
5
+ const id = data.id;
6
+ return typeof id === "string" || typeof id === "number" ? String(id) : void 0;
7
+ }
8
+ /**
9
+ * The `resource` of a decision event: the permission's resource type and the
10
+ * row's `id`, or `wireId` (the id the request named) when the row has none.
11
+ */
12
+ function resourceRef(permission, data, wireId) {
13
+ const id = resourceIdOf(data) ?? (typeof wireId === "string" || typeof wireId === "number" ? String(wireId) : void 0);
14
+ return id === void 0 ? { type: permission.resource } : {
15
+ type: permission.resource,
16
+ id
17
+ };
18
+ }
19
+ //#endregion
20
+ export { resourceRef as n, resourceIdOf as t };
@@ -0,0 +1,27 @@
1
+ //#region src/core/revocations.ts
2
+ function isRevocationEvent(value) {
3
+ if (value === null || typeof value !== "object") return false;
4
+ const event = value;
5
+ return typeof event["principal"] === "string" && event["principal"].length > 0 && (event["kind"] === "session-revoked" || event["kind"] === "changed") && (event["session"] === void 0 || typeof event["session"] === "string") && (event["tenant"] === void 0 || typeof event["tenant"] === "string");
6
+ }
7
+ /** In-process feed; a multi-replica app bridges `revoke` to its own pub/sub. */
8
+ function memoryRevocationFeed() {
9
+ const listeners = /* @__PURE__ */ new Set();
10
+ return Object.freeze({
11
+ subscribe(listener) {
12
+ listeners.add(listener);
13
+ return () => {
14
+ listeners.delete(listener);
15
+ };
16
+ },
17
+ revoke(event) {
18
+ if (!isRevocationEvent(event)) throw new TypeError("PermDock: invalid revocation event.");
19
+ const frozen = Object.freeze({ ...event });
20
+ for (const listener of listeners) try {
21
+ listener(frozen);
22
+ } catch {}
23
+ }
24
+ });
25
+ }
26
+ //#endregion
27
+ export { memoryRevocationFeed as t };
@@ -1,4 +1,4 @@
1
- import { i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-BMh_Etm2.js";
1
+ import { i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-DSxCqG9A.js";
2
2
  import { defineCommand } from "citty";
3
3
  //#region src/cli/commands/rls.ts
4
4
  function rls(ctx) {
@@ -156,6 +156,10 @@ function rls(ctx) {
156
156
  type: "boolean",
157
157
  description: "verify: compare against the live database"
158
158
  },
159
+ advisors: {
160
+ type: "boolean",
161
+ description: "verify: run the Supabase security advisors"
162
+ },
159
163
  split: {
160
164
  type: "string",
161
165
  description: "Write helpers, seeds, policies and hook as separate parts",
@@ -163,7 +167,7 @@ function rls(ctx) {
163
167
  },
164
168
  "grants-out": {
165
169
  type: "string",
166
- description: "File for the supabase_auth_admin grants",
170
+ description: "File for the helper and hook privileges db diff drops",
167
171
  valueHint: "file"
168
172
  },
169
173
  "seeds-out": {
@@ -185,7 +189,7 @@ function rls(ctx) {
185
189
  }
186
190
  },
187
191
  async run({ args: parsed }) {
188
- const result = await (await import("./rls-CJVja9Ww.js")).runRls({
192
+ const result = await (await import("./rls-DQtdgTHB.js")).runRls({
189
193
  cwd: ctx.cwd,
190
194
  config: ctx.config,
191
195
  rest: parsed._,
@@ -216,6 +220,7 @@ function rls(ctx) {
216
220
  revokeColumns: parsed["revoke-columns"] === true,
217
221
  tree: parsed.tree === true,
218
222
  introspect: parsed.introspect === true,
223
+ advisors: parsed.advisors === true,
219
224
  split: stringArg(parsed.split),
220
225
  grantsOut: stringArg(parsed["grants-out"]),
221
226
  seedsOut: stringArg(parsed["seeds-out"]),