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 { 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-9AWO9EGt.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 };