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,29 +1,35 @@
1
1
  import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { n as freezeDeep } from "./freeze-y1_jQL4v.js";
3
- import { g as listPermissions } from "./permissions-DC7GROPA.js";
4
- import { a as resolveScope, f as tenantOf, i as normalizeMemberships, t as activeFor, u as scopeList } from "./scopes-cKVp_WTw.js";
5
- import { T as synthesiseRole, b as findRole, l as matchGrantee, w as listRoles } from "./grantee-Bv04_Vzf.js";
6
- import { a as approvalMessage, n as PermDockDeniedError, o as deniedMessage, t as PermDockApprovalRequiredError } from "./errors-Iy71s7Oj.js";
7
- import { a as whereFromGrants, f as resourceIdOf, g as evaluateCondition, h as simulateArazzo, m as isArazzoSimulateInput, o as decisionToken, s as payloadDigest, u as coveredByDelegation } from "./snapshot-DE8dE_hz.js";
8
- import { d as rowInScope, i as isMembershipExpired, m as pickVisible, p as grantCoversField, r as inTeam, s as nowSeconds, t as isActive, u as resolveActiveTenant } from "./validity-D0uRmJKJ.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { _ as listPermissions } from "./permissions-DVoF6dMt.js";
4
+ import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-Cz5zn0mW.js";
5
+ import { n as sameId } from "./ids-DC4V4CFu.js";
6
+ import { a as normalizeMemberships, d as scopeList, m as tenantOf, o as resolveScope, t as activeFor } from "./scopes-CVdPrWN-.js";
7
+ import { a as whereFromGrants, c as rowIdOf, d as isArazzoSimulateInput, f as simulateArazzo, i as signSnapshot, l as rowValues, p as evaluateCondition } from "./snapshot-Enxd0n-s.js";
8
+ import { D as synthesiseRole, E as listRoles, S as findRole, d as matchGrantee } from "./grantee-Cv5Sogfv.js";
9
+ import { n as pickVisible, t as grantCoversField } from "./fields-BMl1RxoX.js";
10
+ import { a as isMembershipExpired, i as inTeam, l as nestedAppliesWithoutRow, m as rowInScope, p as resolveActiveTenant, t as isActive, u as nowSeconds } from "./validity-uOp8UpYn.js";
9
11
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
12
+ import { t as coveredByDelegation } from "./delegation-D8pUEuce.js";
13
+ import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
14
+ import { n as payloadDigest, t as decisionToken } from "./token-CIWxJOCh.js";
10
15
  //#region src/core/snapshot-evaluate.ts
11
- function isRowPair(value) {
12
- return value !== null && typeof value === "object" && "current" in value && "next" in value;
13
- }
14
16
  function coveredByInclude(snapshot, permission) {
15
17
  const include = snapshot.include;
16
18
  if (include === void 0 || include.length === 0) return true;
17
19
  return include.some((prefix) => permission.key === prefix || permission.key.startsWith(`${prefix}.`) || permission.resource === prefix);
18
20
  }
19
- function rowId(data) {
20
- if (data === null || typeof data !== "object") return "*";
21
- const id = data["id"];
22
- return typeof id === "string" || typeof id === "number" ? String(id) : "*";
21
+ /** The field of `resource` that holds scope `name`'s id in a snapshot: its `fields` entry, else the scope's key. */
22
+ function snapshotField(snapshot, name, resource) {
23
+ const entry = snapshot.scopes?.find((item) => item.name === name);
24
+ return entry?.fields?.[resource] ?? entry?.key;
23
25
  }
24
- function scopeOk(snapshot, grant, permission, subject, data, team, now) {
26
+ function scopeOk(snapshot, grant, permission, subject, data, team, now, only) {
25
27
  const scope = grant.scope;
26
28
  if (scope === void 0) return { ok: true };
29
+ if (only !== void 0 && scope !== only) return {
30
+ ok: false,
31
+ reason: "scope"
32
+ };
27
33
  const principal = subject.principal;
28
34
  const membership = grant.membership;
29
35
  if (principal === null || membership === void 0) return {
@@ -48,16 +54,19 @@ function scopeOk(snapshot, grant, permission, subject, data, team, now) {
48
54
  ok: false,
49
55
  reason: "scope"
50
56
  };
51
- if (permission.kind !== "instance" && (data === null || typeof data !== "object")) return { ok: true };
57
+ if (data === null || typeof data !== "object") return permission.kind !== "instance" || nestedAppliesWithoutRow(membership, scopes, data, team) ? { ok: true } : {
58
+ ok: false,
59
+ reason: "scope"
60
+ };
52
61
  const partitioned = (name) => snapshot.scopes?.find((entry) => entry.name === name)?.resources?.includes(permission.resource) === true;
53
- return rowInScope(membership, scopes, data !== null && typeof data === "object" ? data : {}, partitioned);
62
+ return rowInScope(membership, scopes, data, partitioned, (name) => snapshotField(snapshot, name, permission.resource));
54
63
  }
55
64
  const on = membership.on;
56
65
  if (on === void 0 || on.resource !== scope.resource || on.resource !== permission.resource) return {
57
66
  ok: false,
58
67
  reason: "scope"
59
68
  };
60
- if (on.id !== rowId(data)) return {
69
+ if (on.id !== rowIdOf(data, snapshot.ids?.[permission.resource])) return {
61
70
  ok: false,
62
71
  reason: "scope"
63
72
  };
@@ -123,15 +132,16 @@ function matchedOf(grant) {
123
132
  approval: grant.approval
124
133
  });
125
134
  }
126
- function evaluateSnapshot(snapshot, subject, permission, data, team, options) {
127
- const now = options.now ?? nowSeconds();
135
+ function evaluateSnapshot(snapshot, subject, permission, data, team, options, outcomeOnly = false) {
136
+ let clock = options.now;
137
+ const now = () => clock ??= nowSeconds();
128
138
  const tracer = options.explain === true ? {
129
139
  evaluated: 0,
130
140
  allows: [],
131
141
  denies: [],
132
142
  skipped: []
133
143
  } : void 0;
134
- const done = (decision) => freezeDeep(tracer === void 0 ? decision : {
144
+ const done = (decision) => outcomeOnly ? decision : freezeDeep(tracer === void 0 ? decision : {
135
145
  ...decision,
136
146
  trace: {
137
147
  evaluated: tracer.evaluated,
@@ -156,22 +166,14 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options) {
156
166
  }],
157
167
  alternatives: []
158
168
  });
159
- let current = data;
160
- let next = data;
161
- if (permission.kind === "instance" && isRowPair(data)) {
162
- current = data.current;
163
- next = data.next;
164
- }
165
- if (permission.kind === "collection") {
166
- current = void 0;
167
- next = data;
168
- }
169
+ const { current, next } = rowValues(permission, data);
170
+ const scopes = scopeList(snapshot.scopes);
169
171
  const denials = [];
170
172
  const allows = [];
171
173
  for (const grant of snapshot.grants) {
172
174
  if (grant.permission !== permission.key) continue;
173
175
  if (tracer !== void 0) tracer.evaluated += 1;
174
- const match = matchGrantee(grant.to, subject, now, void 0, void 0, void 0, grant.effect === "deny");
176
+ const match = matchGrantee(grant.to, subject, now(), void 0, scopes, void 0, grant.effect === "deny");
175
177
  if (!match.matched) {
176
178
  denials.push(compact({
177
179
  role: grant.role,
@@ -180,8 +182,8 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options) {
180
182
  }));
181
183
  continue;
182
184
  }
183
- let scoped = scopeOk(snapshot, grant, permission, subject, permission.kind === "instance" ? current : next, team, now);
184
- if (scoped.ok && permission.kind === "instance" && next !== current) scoped = scopeOk(snapshot, grant, permission, subject, next, team, now);
185
+ let scoped = scopeOk(snapshot, grant, permission, subject, permission.kind === "instance" ? current : next, team, now(), options.scope);
186
+ if (scoped.ok && permission.kind === "instance" && next !== current) scoped = scopeOk(snapshot, grant, permission, subject, next, team, now(), options.scope);
185
187
  if (!scoped.ok) {
186
188
  denials.push(compact({
187
189
  role: grant.role,
@@ -190,7 +192,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options) {
190
192
  }));
191
193
  continue;
192
194
  }
193
- if (!isActive(grant.validity, now)) {
195
+ if (!isActive(grant.validity, now())) {
194
196
  if (grant.effect === "allow") denials.push({
195
197
  role: grant.role,
196
198
  reason: "inactive-grant",
@@ -214,7 +216,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options) {
214
216
  alternatives: []
215
217
  });
216
218
  }
217
- const condition = conditionOk(grant, permission, current, next, subject, now, scopeList(snapshot.scopes));
219
+ const condition = conditionOk(grant, permission, current, next, subject, now(), scopes);
218
220
  if (!condition.matched && grant.effect === "deny" && condition.reason === "opaque-condition" && grantCoversField(grant.fields, options.field, grant.effect)) {
219
221
  tracer?.denies.push(matchedOf(grant));
220
222
  return done({
@@ -284,8 +286,8 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options) {
284
286
  }],
285
287
  alternatives: []
286
288
  });
287
- const resourceId = permission.kind === "collection" ? "*" : rowId(current);
288
- const token = decisionToken({
289
+ const resourceId = permission.kind === "collection" ? "*" : rowIdOf(current, snapshot.ids?.[permission.resource]);
290
+ const token = outcomeOnly ? "" : decisionToken({
289
291
  key: permission.key,
290
292
  resourceId,
291
293
  principal: subject.principal,
@@ -312,6 +314,7 @@ function whereFromSnapshot(snapshot, subject, permission, team) {
312
314
  resource: permission.resource,
313
315
  scopes: scopeList(snapshot.scopes),
314
316
  partitioned: (name) => snapshot.scopes?.find((entry) => entry.name === name)?.resources?.includes(permission.resource) === true,
317
+ fieldOf: (name) => snapshotField(snapshot, name, permission.resource),
315
318
  tenant: subject.principal?.tenant,
316
319
  team,
317
320
  now: nowSeconds(),
@@ -346,7 +349,7 @@ function heldRoleNames(subject, tenant, scopes, only, now) {
346
349
  const names = new Set(scope === void 0 ? subject.principal?.roles ?? [] : []);
347
350
  for (const membership of subject.principal?.memberships ?? []) {
348
351
  if (isMembershipExpired(membership, now)) continue;
349
- if (!(scope === void 0 ? tenantOf(membership, scopes) === tenant : membership.scope === scope && (only?.id === void 0 || membership.id === only.id))) continue;
352
+ if (!(scope === void 0 ? tenantOf(membership, scopes) === tenant : membership.scope === scope && (only?.id === void 0 || sameId(membership.id, only.id)))) continue;
350
353
  for (const role of membership.roles) names.add(role);
351
354
  }
352
355
  const rank = only?.rank ?? [];
@@ -358,8 +361,8 @@ function heldRoleNames(subject, tenant, scopes, only, now) {
358
361
  }
359
362
  //#endregion
360
363
  //#region src/core/from-snapshot.ts
361
- function resourceRef(permission, data) {
362
- const id = permission.kind === "collection" ? void 0 : rowId(data);
364
+ function resourceRef(snapshot, permission, data) {
365
+ const id = permission.kind === "collection" ? void 0 : rowIdOf(data, snapshot.ids?.[permission.resource]);
363
366
  return id === void 0 || id === "*" ? { type: permission.resource } : {
364
367
  type: permission.resource,
365
368
  id
@@ -374,7 +377,13 @@ function fromSnapshot(snapshot, options = {}) {
374
377
  const team = options.team;
375
378
  const run = (permission, data, decideOptions = {}) => evaluateSnapshot(snapshot, subject, permission, data, team, decideOptions);
376
379
  const decide = ((permission, data, decideOptions = {}) => run(permission, data, decideOptions));
377
- const can = ((permission, data, decideOptions) => run(permission, data, decideOptions).outcome === "granted");
380
+ const can = ((permission, data, decideOptions) => {
381
+ try {
382
+ return evaluateSnapshot(snapshot, subject, permission, data, team, decideOptions ?? {}, true).outcome === "granted";
383
+ } catch {
384
+ return false;
385
+ }
386
+ });
378
387
  const assert = ((permission, data, decideOptions) => {
379
388
  const decision = run(permission, data, decideOptions);
380
389
  if (decision.outcome === "granted") return decision;
@@ -382,14 +391,14 @@ function fromSnapshot(snapshot, options = {}) {
382
391
  decision,
383
392
  permission: permission.key,
384
393
  scope: permission.scope,
385
- resource: resourceRef(permission, data),
394
+ resource: resourceRef(snapshot, permission, data),
386
395
  message: approvalMessage(permission.key, decision.reason, decision.token)
387
396
  });
388
397
  throw new PermDockDeniedError({
389
398
  decision,
390
399
  permission: permission.key,
391
400
  scope: permission.scope,
392
- resource: resourceRef(permission, data),
401
+ resource: resourceRef(snapshot, permission, data),
393
402
  subject,
394
403
  message: deniedMessage(permission.key, subject.principal?.id, decision.denials, [])
395
404
  });
@@ -446,9 +455,7 @@ function fromSnapshot(snapshot, options = {}) {
446
455
  }
447
456
  }), options);
448
457
  }),
449
- snapshot() {
450
- return snapshot;
451
- },
458
+ snapshot: ((signing) => signing?.signer === void 0 ? snapshot : signSnapshot(snapshot, signing.signer, signing.audience)),
452
459
  on() {
453
460
  return () => void 0;
454
461
  },
@@ -510,6 +517,9 @@ function fromSnapshot(snapshot, options = {}) {
510
517
  }]
511
518
  });
512
519
  },
520
+ derive() {
521
+ return instance;
522
+ },
513
523
  activate() {
514
524
  return freezeDeep({
515
525
  outcome: "denied",
@@ -531,6 +541,13 @@ function fromSnapshot(snapshot, options = {}) {
531
541
  if (query?.scope === "global") return [];
532
542
  return assignableEntry(snapshot, query?.tenant ?? subject.principal?.tenant)?.permissions ?? [];
533
543
  },
544
+ assignableLevels(permission, query) {
545
+ if (query?.scope === "global") return [];
546
+ const levels = assignableEntry(snapshot, query?.tenant ?? subject.principal?.tenant)?.levels;
547
+ if (levels === void 0 || !Object.hasOwn(levels, permission.key)) return [];
548
+ const names = levels[permission.key];
549
+ return Array.isArray(names) ? names.filter((name) => typeof name === "string") : [];
550
+ },
534
551
  subject
535
552
  };
536
553
  return Object.freeze(instance);
@@ -549,4 +566,4 @@ function emptySnapshot() {
549
566
  });
550
567
  }
551
568
  //#endregion
552
- export { fromSnapshot as n, emptySnapshot as t };
569
+ export { fromSnapshot as n, heldRoleNames as r, emptySnapshot as t };
@@ -1,7 +1,7 @@
1
1
  import { r as sole, t as compact } from "./compact-y6vfu2_f.js";
2
- import { n as freezeDeep } from "./freeze-y1_jQL4v.js";
3
- import { S as isForbiddenKey, d as isFieldRelation, g as listPermissions, h as isSelfParented, l as isComputedRelation, p as isPrincipalRelation, r as expandRelation, u as isEdgeRelation, w as ownKeys, x as assertSafeKey } from "./permissions-DC7GROPA.js";
4
- import { a as resolveScope, s as rootScope, t as activeFor, u as scopeList } from "./scopes-cKVp_WTw.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { C as restrictedStops, D as ownKeys, S as restrictedFor, T as isForbiddenKey, _ as listPermissions, d as isEdgeRelation, f as isFieldRelation, g as isSelfParented, m as isPrincipalRelation, p as isPermission, r as expandRelation, u as isComputedRelation, w as assertSafeKey } from "./permissions-DVoF6dMt.js";
4
+ import { c as rootScope, d as scopeList, o as resolveScope, t as activeFor } from "./scopes-CVdPrWN-.js";
5
5
  //#region src/core/vocabulary.ts
6
6
  const ROLE_KIND = "role";
7
7
  const PLAN_KIND = "plan";
@@ -127,6 +127,18 @@ function relation(resource, name, options) {
127
127
  depth
128
128
  }));
129
129
  }
130
+ function inherit(permission, options) {
131
+ if (!isPermission(permission) || permission.kind === "collection") throw new Error("PermDock: inherit() takes an instance permission leaf");
132
+ const through = options.through;
133
+ const links = Array.isArray(through) ? through : void 0;
134
+ if (through !== "parent" && (links === void 0 || links.length === 0 || !links.every((link) => typeof link === "string" && link !== "" && link !== "parent"))) throw new Error("PermDock: inherit() through must be 'parent' or a non-empty list of link names");
135
+ return freezeDeep({
136
+ kind: "inherit",
137
+ permission: permission.key,
138
+ resource: permission.resource,
139
+ through: links === void 0 ? "parent" : links.map(String)
140
+ });
141
+ }
130
142
  function plan(name) {
131
143
  return freezeDeep({
132
144
  kind: "plan",
@@ -233,9 +245,29 @@ function resourceRoleCondition(resource, membershipResource, ids, resources) {
233
245
  field: start.field,
234
246
  depth: DEFAULT_RELATION_DEPTH,
235
247
  parent: start.parent ? true : void 0,
236
- restricted: resource.restricted
248
+ restricted: restrictedFor(resource, "parent"),
249
+ passRestricted: passesRestricted(resources.get(membershipResource))
237
250
  });
238
251
  }
252
+ function passesRestricted(node) {
253
+ return node?.restricted !== void 0 && !restrictedStops(node, "parent") ? true : void 0;
254
+ }
255
+ function linkStop(resource, link) {
256
+ const restricted = restrictedFor(resource, link);
257
+ if (restricted === void 0) return {};
258
+ const parent = resource.parent;
259
+ if (parent === void 0 || !isSelfParented(resource)) return { restricted };
260
+ return {
261
+ restricted,
262
+ restrictedAncestors: {
263
+ resource: resource.name,
264
+ id: resource.id,
265
+ parent: parent.field,
266
+ field: restricted,
267
+ depth: 32
268
+ }
269
+ };
270
+ }
239
271
  /**
240
272
  * The link path from the row to the grantee's resource: the row field of
241
273
  * the first link and each hop. `undefined` when a link is not declared or
@@ -320,7 +352,8 @@ function relationCondition(grantee, resource, scopes = scopeList(void 0), option
320
352
  field: path.field,
321
353
  depth: path.depth,
322
354
  hops: path.hops,
323
- restricted: resource?.restricted
355
+ ...resource === void 0 ? {} : linkStop(resource, firstLink(path)),
356
+ passRestricted: path.depth > 0 ? passesRestricted(target) : void 0
324
357
  });
325
358
  }
326
359
  const start = relationStart(grantee, resource, target);
@@ -332,7 +365,8 @@ function relationCondition(grantee, resource, scopes = scopeList(void 0), option
332
365
  field: start.field,
333
366
  depth: start.depth,
334
367
  parent: start.parent ? true : void 0,
335
- restricted: start.parent || start.depth > 0 ? resource?.restricted : void 0
368
+ restricted: start.parent || start.depth > 0 ? restrictedFor(resource, "parent") : void 0,
369
+ passRestricted: start.depth > 0 ? passesRestricted(target) : void 0
336
370
  });
337
371
  }
338
372
  const spec = resource?.relations?.[grantee.relation];
@@ -390,6 +424,43 @@ function relationCondition(grantee, resource, scopes = scopeList(void 0), option
390
424
  value: { ref: "principal.id" }
391
425
  };
392
426
  }
427
+ function inheritCondition(grantee, resource, resources) {
428
+ if (resource === void 0) return;
429
+ if (grantee.through === "parent") {
430
+ const parent = resource.parent;
431
+ if (parent === void 0 || parent.resource !== grantee.resource) return;
432
+ return compact({
433
+ op: "related",
434
+ resource: grantee.resource,
435
+ relation: "",
436
+ permission: grantee.permission,
437
+ field: parent.field,
438
+ depth: 0,
439
+ parent: true,
440
+ restricted: restrictedFor(resource, "parent")
441
+ });
442
+ }
443
+ const path = relationHops({
444
+ kind: "relation",
445
+ resource: grantee.resource,
446
+ relation: "",
447
+ through: grantee.through
448
+ }, resource, resources);
449
+ if (path === void 0) return;
450
+ return compact({
451
+ op: "related",
452
+ resource: grantee.resource,
453
+ relation: "",
454
+ permission: grantee.permission,
455
+ field: path.field,
456
+ depth: 0,
457
+ hops: path.hops,
458
+ ...linkStop(resource, firstLink(path))
459
+ });
460
+ }
461
+ function firstLink(path) {
462
+ return path.hops[0]?.link ?? "";
463
+ }
393
464
  function targetMap(target) {
394
465
  return target === void 0 ? void 0 : /* @__PURE__ */ new Map([[target.name, target]]);
395
466
  }
@@ -480,6 +551,16 @@ function matchOne(grantee, subject, now, resource, scopes, resources) {
480
551
  where
481
552
  });
482
553
  }
554
+ case "inherit": {
555
+ const where = inheritCondition(grantee, resource, resources);
556
+ return where === void 0 ? {
557
+ matched: false,
558
+ reason: "condition"
559
+ } : {
560
+ matched: true,
561
+ where
562
+ };
563
+ }
483
564
  case "role":
484
565
  if (subject.principal === null) return {
485
566
  matched: false,
@@ -518,4 +599,4 @@ function matchGrantee(to, subject, now, resource, scopes, resources, unknownMatc
518
599
  });
519
600
  }
520
601
  //#endregion
521
- export { listPlans as C, isRole as S, synthesiseRole as T, roleScopeOf as _, authenticated as a, findRole as b, isGraphRelation as c, relation as d, relationCondition as f, roleNameOf as g, resourceRoleCondition as h, assurance as i, matchGrantee as l, relationStart as m, anyone as n, combineWhere as o, relationHops as p, asGrantee as r, flattenGrantee as s, actor as t, plan as u, definePlans as v, listRoles as w, isPlan as x, defineRoles as y };
602
+ export { isPlan as C, synthesiseRole as D, listRoles as E, findRole as S, listPlans as T, resourceRoleCondition as _, authenticated as a, definePlans as b, inherit as c, matchGrantee as d, plan as f, relationStart as g, relationHops as h, assurance as i, inheritCondition as l, relationCondition as m, anyone as n, combineWhere as o, relation as p, asGrantee as r, flattenGrantee as s, actor as t, isGraphRelation as u, roleNameOf as v, isRole as w, defineRoles as x, roleScopeOf as y };
@@ -0,0 +1,29 @@
1
+ //#region src/conditions/graph-sql.d.ts
2
+ /**
3
+ * Postgres SQL as parts, so each compiler binds values and names columns its
4
+ * own way: literal `text`, a bound `value`, the subject's id as text, or a
5
+ * `column` of the row being filtered.
6
+ */
7
+ type GraphSqlPart = {
8
+ readonly text: string;
9
+ } | {
10
+ readonly value: string | number | boolean;
11
+ } | {
12
+ readonly subject: true;
13
+ } | {
14
+ readonly column: string;
15
+ };
16
+ type GraphSql = readonly GraphSqlPart[];
17
+ /** Where the graph lives in the database, as the `toWhere` compilers take it. */
18
+ type RelationsMapping = {
19
+ /** The table of each resource the graph reads; default the resource name. */
20
+ readonly tables?: Readonly<Record<string, string>>;
21
+ /**
22
+ * A closure table (`resource`, `ancestor`, `descendant`, `depth`) such as
23
+ * the one `permdock rls` keeps. Without it, parent walks are a bounded
24
+ * recursive query over the resource's own table.
25
+ */
26
+ readonly closure?: string;
27
+ };
28
+ //#endregion
29
+ export { GraphSqlPart as n, RelationsMapping as r, GraphSql as t };
@@ -1,4 +1,4 @@
1
- //#region src/react/headers.ts
1
+ //#region src/client/headers.ts
2
2
  function approvalHeaders(token) {
3
3
  return { "PermDock-Approval": token };
4
4
  }
@@ -1,4 +1,4 @@
1
- //#region src/react/headers.d.ts
1
+ //#region src/client/headers.d.ts
2
2
  declare function approvalHeaders(token: string): {
3
3
  readonly "PermDock-Approval": string;
4
4
  };