permdock 0.3.0 → 0.4.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 (323) hide show
  1. package/dist/a2a/index.d.ts +7 -5
  2. package/dist/a2a/index.js +14 -21
  3. package/dist/ai-sdk/index.d.ts +18 -6
  4. package/dist/ai-sdk/index.js +8 -5
  5. package/dist/app-data-CV8pqqMi.js +59 -0
  6. package/dist/approvals/index.d.ts +2 -2
  7. package/dist/approvals/index.js +3 -3
  8. package/dist/{approvals-DbYAuNkG.js → approvals-DZL76lKW.js} +35 -19
  9. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  10. package/dist/{arazzo-BAgw9ap6.js → arazzo-C4BcskbX.js} +6 -5
  11. package/dist/{arazzo-CKwwqFWz.js → arazzo-CD8d0WLb.js} +2 -2
  12. package/dist/authzen/index.d.ts +3 -3
  13. package/dist/authzen/index.js +161 -23
  14. package/dist/better-auth/index.d.ts +2 -2
  15. package/dist/better-auth/index.js +6 -19
  16. package/dist/better-supabase/index.d.ts +112 -87
  17. package/dist/better-supabase/index.js +257 -156
  18. package/dist/{bind-C_ob3LKa.d.ts → bind-BzqG8SMb.d.ts} +16 -5
  19. package/dist/{bind-CuzGytRf.js → bind-kk-uyCwH.js} +14 -6
  20. package/dist/build-instance-DIIV9DbC.js +51 -0
  21. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-CFKyFOke.js} +1 -3
  22. package/dist/{capability-2kYTMWDv.d.ts → capability-CksyCWDH.d.ts} +2 -2
  23. package/dist/{capability-4qPdO9gk.js → capability-txATtKV4.js} +3 -2
  24. package/dist/catalog/index.d.ts +1 -1
  25. package/dist/catalog/index.js +1 -1
  26. package/dist/catalog-6yWAX6Ps.js +2 -0
  27. package/dist/{catalog-dFZdWCGN.js → catalog-WHG4kBq7.js} +2 -2
  28. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-DWtg0gGR.js} +17 -10
  29. package/dist/{catalog-DWF5cYqB.js → catalog-tZUyOfOv.js} +4 -4
  30. package/dist/claude-agent/index.d.ts +4 -4
  31. package/dist/claude-agent/index.js +4 -5
  32. package/dist/clerk/index.d.ts +3 -3
  33. package/dist/clerk/index.js +8 -33
  34. package/dist/cli/bin.js +1 -1
  35. package/dist/cli/index.d.ts +3 -3
  36. package/dist/cli/index.js +3 -3
  37. package/dist/cloud/index.d.ts +4 -4
  38. package/dist/cloud/index.js +9 -15
  39. package/dist/{cloud-CB_ELYuX.js → cloud-C7bSDgX4.js} +2 -2
  40. package/dist/{cloud-DWLXO2af.js → cloud-PeBN3IEn.js} +5 -5
  41. package/dist/{collect-DSTE3ml9.js → collect-2SrB7lfk.js} +6 -8
  42. package/dist/collect-Bw2Jdq1q.js +2 -0
  43. package/dist/{collect-DClJsheJ.js → collect-CQx4hX4N.js} +3 -3
  44. package/dist/{commands-DSxCqG9A.js → commands-Cpip4ULx.js} +13 -13
  45. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  46. package/dist/compile/index.d.ts +1 -1
  47. package/dist/compile/index.js +1 -1
  48. package/dist/{compile-Ba4blROR.js → compile-CcEu2ZQ1.js} +6 -5
  49. package/dist/{compile-BkRyBDBw.d.ts → compile-CtTP7eur.d.ts} +2 -2
  50. package/dist/{config-BJiM-xAm.js → config-BIjREpyE.js} +4 -4
  51. package/dist/{config-Dnszbv-6.js → config-DLt6BvV7.js} +2 -2
  52. package/dist/{config-report-DMvWKUxL.js → config-report--Xb9APJS.js} +5 -6
  53. package/dist/{connection-CU8MQxRi.js → connection-DUsczpB5.js} +3 -2
  54. package/dist/constants-DcJABbLW.js +20 -0
  55. package/dist/{context-Bcy85rGi.js → context-DieZVJXu.js} +16 -5
  56. package/dist/convex/index.d.ts +4 -4
  57. package/dist/convex/index.js +14 -16
  58. package/dist/create-BBO24vj6.js +324 -0
  59. package/dist/{credential-8P81ff4u.js → credential-kue0qpbm.js} +4 -4
  60. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  61. package/dist/delegation-input-FTxMK3ji.js +19 -0
  62. package/dist/denied-text-DfRk15uw.d.ts +19 -0
  63. package/dist/{describe-DMYiCjJV.d.ts → describe-C3ldA9os.d.ts} +11 -2
  64. package/dist/{describe-B_gVZEVi.js → describe-Cgkp7eP0.js} +5 -4
  65. package/dist/{diff-DBIhz_f2.js → diff-Cnghh_Ip.js} +2 -2
  66. package/dist/{diff-2VaeChzX.js → diff-rpqoe7Ag.js} +9 -9
  67. package/dist/{doctor-BwCAMLx_.js → doctor-CuVJvhV_.js} +2 -2
  68. package/dist/doctor-owlv6ddh.js +2166 -0
  69. package/dist/drizzle/index.d.ts +2 -2
  70. package/dist/drizzle/index.js +6 -14
  71. package/dist/elysia/index.d.ts +4 -4
  72. package/dist/elysia/index.js +7 -7
  73. package/dist/{errors-DPdqI50v.d.ts → errors-OD_4c__H.d.ts} +2 -2
  74. package/dist/{errors-Cz5zn0mW.js → errors-drnfxYtm.js} +3 -3
  75. package/dist/{evaluations-tz6D9A2G.js → evaluations-C9YJsv3H.js} +45 -7
  76. package/dist/eve/index.d.ts +5 -5
  77. package/dist/eve/index.js +5 -5
  78. package/dist/express/index.d.ts +4 -4
  79. package/dist/express/index.js +8 -7
  80. package/dist/fastify/index.d.ts +15 -5
  81. package/dist/fastify/index.js +9 -29
  82. package/dist/fields-fwfXN01n.js +1016 -0
  83. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  84. package/dist/{fixtures-ht28Cplr.js → fixtures-h2eG2OZV.js} +5 -6
  85. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-7REQZe0H.js} +32 -22
  86. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  87. package/dist/grantee-CXY-0C87.js +254 -0
  88. package/dist/grantee-conditions-MQs5NIuX.js +270 -0
  89. package/dist/grantee-match-fxYp9Nmt.js +141 -0
  90. package/dist/{helpers-H_KARDVC.js → helpers-C9YmyBIa.js} +7 -6
  91. package/dist/hono/index.d.ts +4 -4
  92. package/dist/hono/index.js +8 -8
  93. package/dist/hosted-CBHgkzDl.js +655 -0
  94. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  95. package/dist/{http-BIhmLfCc.js → http-BEbdMZ05.js} +2 -24
  96. package/dist/{rls-import-BTFVk3jH.js → import-BFIlhetD.js} +86 -80
  97. package/dist/{openapi-import-cmwetbzw.js → import-UHk1N7vH.js} +6 -7
  98. package/dist/{index-C8z4RjQV.d.ts → index-BwMe94Xq.d.ts} +1 -1
  99. package/dist/{index-0nNqHspG.d.ts → index-DgM7w96K.d.ts} +2 -2
  100. package/dist/{index-C7Tw7MaW.d.ts → index-Dz7didpC.d.ts} +3 -3
  101. package/dist/{index-BNc7Wer_.d.ts → index-UdVQgq48.d.ts} +105 -38
  102. package/dist/index.d.ts +15 -13
  103. package/dist/index.js +22 -22
  104. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-plkrsAog.d.ts} +1 -1
  105. package/dist/{json-schema-BsAflUGW.js → json-schema-DBkdUuCO.js} +1 -3
  106. package/dist/jwt/index.d.ts +4 -4
  107. package/dist/jwt/index.js +13 -13
  108. package/dist/{kernel-_RRHmnMY.js → kernel-CB3LrIJM.js} +81 -32
  109. package/dist/kysely/index.d.ts +2 -2
  110. package/dist/kysely/index.js +6 -14
  111. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  112. package/dist/load-B_shHrmd.js +2 -0
  113. package/dist/{load-DhWEB9P1.js → load-C3_oTHyO.js} +11 -3
  114. package/dist/{manifest-iaoBXHKc.js → manifest-BngWKryL.js} +5 -18
  115. package/dist/{map-claims-Z4QZOiFF.js → map-claims-AVlBaJoa.js} +7 -16
  116. package/dist/{map-error-pgUWNNtG.js → map-error-BE27PYkE.js} +5 -5
  117. package/dist/{markers-B0hYLvMD.js → markers-CiwAOZtO.js} +6 -2
  118. package/dist/{may-use-DndQ5tQ-.js → may-use-BOn_dR_w.js} +4 -3
  119. package/dist/mcp/index.d.ts +26 -9
  120. package/dist/mcp/index.js +456 -446
  121. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BwlB5-Wk.js} +75 -15
  122. package/dist/nest/index.d.ts +4 -4
  123. package/dist/nest/index.js +11 -12
  124. package/dist/next/index.d.ts +31 -8
  125. package/dist/next/index.js +29 -33
  126. package/dist/next/plugin.d.ts +1 -1
  127. package/dist/next/plugin.js +1 -1
  128. package/dist/node/index.d.ts +4 -4
  129. package/dist/node/index.js +4 -4
  130. package/dist/ocsf-uYFXGVw2.js +115 -0
  131. package/dist/openai/index.d.ts +5 -5
  132. package/dist/openai/index.js +4 -4
  133. package/dist/openapi/index.d.ts +3 -3
  134. package/dist/openapi/index.js +1 -1
  135. package/dist/{openapi-CqqEbHsL.js → openapi-BJdBmYDG.js} +19 -23
  136. package/dist/{openapi-BqRBvAng.js → openapi-DBzHQbov.js} +2 -5
  137. package/dist/{openapi-l0xYHkcv.js → openapi-DcQ1Kg40.js} +3 -3
  138. package/dist/orpc/index.d.ts +5 -5
  139. package/dist/orpc/index.js +9 -11
  140. package/dist/otel/index.d.ts +2 -2
  141. package/dist/otel/index.js +26 -23
  142. package/dist/output-files-CgIsvdSa.js +140 -0
  143. package/dist/{rls-ownership-RuFqaqGz.js → ownership-BgnbOJFT.js} +387 -379
  144. package/dist/{package-root-zGkxO3oN.js → package-root-DtNnpmUd.js} +3 -2
  145. package/dist/{parse-BuyjxhZV.js → parse-CVFQHk6c.js} +3 -3
  146. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-C-q02Pal.js} +2 -4
  147. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DvYUR0QL.d.ts} +1 -1
  148. package/dist/pdp/index.d.ts +2 -2
  149. package/dist/pdp/index.js +8 -9
  150. package/dist/{permdock-CbgvLnuo.js → permdock-L26udHSk.js} +1387 -1220
  151. package/dist/{rls-fields-74oZPXWL.js → permission-keys-B26jeyUv.js} +1289 -2066
  152. package/dist/permission-registry-BsblpB-z.js +385 -0
  153. package/dist/{permissions-DttnqqxC.d.ts → permission-types-Dg39z9Kv.d.ts} +59 -31
  154. package/dist/{permissions-RJrovw98.js → permissions-CCJ6lmxB.js} +3 -3
  155. package/dist/{permissions-CDgvKG5L.d.ts → permissions-COH-KRgT.d.ts} +2 -2
  156. package/dist/{policy-IB6yxpC3.d.ts → policy-types-sp9P1iIV.d.ts} +661 -582
  157. package/dist/{policy-D2W7uv19.d.ts → policy-ur0BBK_e.d.ts} +2 -2
  158. package/dist/{powersync-DliZK_-y.js → powersync-BFSbSElQ.js} +2 -2
  159. package/dist/powersync-DCDgZgfZ.js +2 -0
  160. package/dist/{powersync-BylawD_U.js → powersync-cZe4kzhL.js} +26 -27
  161. package/dist/prisma/index.d.ts +1 -1
  162. package/dist/prisma/index.js +6 -12
  163. package/dist/{problem-B43ztKIm.js → problem-CnWraVhC.js} +8 -7
  164. package/dist/{problem-details-_AMOYz-w.js → problem-details-DECUnXAn.js} +2 -2
  165. package/dist/{problem-details-DX075l9V.d.ts → problem-details-rIIo8B2C.d.ts} +1 -1
  166. package/dist/{protected-BdnIEFkY.d.ts → protected-B3_P7xuw.d.ts} +9 -6
  167. package/dist/{protected-utU-SLuy.js → protected-BN7BUdY1.js} +20 -8
  168. package/dist/{provider-CSQd7m92.js → provider-Bi-0HNL3.js} +23 -10
  169. package/dist/{provider-DZY281jO.d.ts → provider-kwHC9CZD.d.ts} +1 -1
  170. package/dist/{provider-store-Cfbvo4DE.js → provider-store-Ctt-81Ni.js} +6 -3
  171. package/dist/react/index.d.ts +7 -7
  172. package/dist/react/index.js +5 -5
  173. package/dist/react/provider-client.d.ts +1 -1
  174. package/dist/react/provider-client.js +1 -1
  175. package/dist/react-native/index.d.ts +20 -11
  176. package/dist/react-native/index.js +33 -17
  177. package/dist/{refs-KYb4ntaz.js → refs-f3imMjNW.js} +1 -1
  178. package/dist/relation-walk-BXnlLtg2.js +186 -0
  179. package/dist/relations-CvmSpG67.js +163 -0
  180. package/dist/{replay-CYyiLiwO.d.ts → replay-COpmZUfx.d.ts} +1 -1
  181. package/dist/request-context-BVM7aWNs.js +71 -0
  182. package/dist/request-context-C2_1lchh.d.ts +5 -0
  183. package/dist/resource-relations-D1Un3pcz.js +243 -0
  184. package/dist/retire-BFcxL6un.js +240 -0
  185. package/dist/{rls-B4ur8nKQ.js → rls-55DQTuf5.js} +14 -2
  186. package/dist/{rls-DQtdgTHB.js → rls-BEktUaqg.js} +884 -484
  187. package/dist/{policy-xyWg7QdR.js → role-builder-B4GbKM-i.js} +235 -541
  188. package/dist/{rpc-DL9Sqvb1.js → rpc-nYC3cR_u.js} +15 -5
  189. package/dist/{run-DKDbM4Du.js → run-DMcNW_8T.js} +3 -3
  190. package/dist/{runtime-CB8gQFvS.js → runtime-D_tMXnsq.js} +1 -1
  191. package/dist/{saas-DhpJjnBA.js → saas-DtaA4JuW.js} +9 -8
  192. package/dist/{openapi-schema--ARjyfQr.js → schema-Bol6gqXA.js} +3 -5
  193. package/dist/{schema-D3MnDMxa.js → schema-DjQBcAP9.js} +4 -2
  194. package/dist/scim/index.d.ts +1 -1
  195. package/dist/scim/index.js +1 -1
  196. package/dist/{scim-BFGBBAqR.js → scim-vFR1O5oG.js} +6 -12
  197. package/dist/{scopes-CVdPrWN-.js → scopes-tvpa34ep.js} +10 -2
  198. package/dist/server/index.d.ts +18 -8
  199. package/dist/server/index.js +8 -8
  200. package/dist/{server-DlZ28Oz5.js → server-ZYEHtNHS.js} +4 -4
  201. package/dist/{create-B1d519XK.d.ts → server-types-DdqBwZN_.d.ts} +69 -33
  202. package/dist/shared-1uhI-e-b.js +294 -0
  203. package/dist/{shared-DRu8VFVM.js → shared-JhMeOsDF.js} +1 -1
  204. package/dist/{sink-Bd9PSyfq.js → sink-BTtmfPnE.js} +1 -1
  205. package/dist/{sink-B1fZzIMf.d.ts → sink-CPN4zLfs.d.ts} +1 -1
  206. package/dist/{skills-Biq5uup3.js → skills-BZdRQkxs.js} +4 -3
  207. package/dist/{skills-Bx-U0irG.js → skills-Dle4ZoLF.js} +2 -2
  208. package/dist/{snapshot-Enxd0n-s.js → snapshot-Dc9CHPME.js} +116 -13
  209. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-Cod40D-X.js} +1 -1
  210. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-J5T7t_vD.d.ts} +1 -1
  211. package/dist/solid/index.d.ts +22 -22
  212. package/dist/solid/index.js +40 -10
  213. package/dist/{sources-4p0-4xQm.js → sources-B1-b-R0t.js} +25 -26
  214. package/dist/{sources-BdOYLw9j.d.ts → sources-Dljy06zL.d.ts} +6 -2
  215. package/dist/{sql-xdg5f4Fi.js → sql-t8teWOfo.js} +19 -3
  216. package/dist/{src-BDwEZWrZ.js → src-Bb7no-hS.js} +194 -123
  217. package/dist/ssf/index.d.ts +3 -3
  218. package/dist/ssf/index.js +58 -61
  219. package/dist/store-9KO4BlkB.d.ts +147 -0
  220. package/dist/{store-DMAWwAJV.js → store-ILkLUj_o.js} +4 -4
  221. package/dist/{store-options-ByhZq1jV.js → store-options-CbUHDoSe.js} +16 -7
  222. package/dist/{stores-BT2pSCub.js → stores-BHXdSbw9.js} +7 -3
  223. package/dist/stores-Cxz_80g-.d.ts +31 -0
  224. package/dist/{stream-DDpvynSB.js → stream-BMui98KK.js} +2 -1
  225. package/dist/{stream-D1RXubw2.d.ts → stream-Dwsg6WwE.d.ts} +2 -2
  226. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  227. package/dist/supabase/index.d.ts +4 -4
  228. package/dist/supabase/index.js +3 -3
  229. package/dist/supabase/middleware.d.ts +11 -5
  230. package/dist/supabase/middleware.js +10 -7
  231. package/dist/{supabase-C0qESOa-.js → supabase-C1TWlnYt.js} +36 -52
  232. package/dist/{supabase-Boqb9a_Y.js → supabase-Dbqr141s.js} +2 -2
  233. package/dist/supabase-hook-BULg7Ut_.js +2 -0
  234. package/dist/{supabase-hook-CSLQ4zJ3.js → supabase-hook-Cva3ikXz.js} +731 -782
  235. package/dist/{supautils-Cn4R4cJ4.js → supautils-B6HYL9eL.js} +2 -2
  236. package/dist/svelte/Protected.svelte +9 -2
  237. package/dist/svelte/index.d.ts +6 -6
  238. package/dist/svelte/index.js +25 -11
  239. package/dist/svelte/runtime.d.ts +10 -3
  240. package/dist/svelte/runtime.js +4 -3
  241. package/dist/svelte/source.d.ts +6 -6
  242. package/dist/svelte/source.js +4 -4
  243. package/dist/{validity-uOp8UpYn.js → tenancy-DshjqY0n.js} +3 -39
  244. package/dist/terminal/index.d.ts +5 -5
  245. package/dist/terminal/index.js +18 -34
  246. package/dist/testing/index.d.ts +89 -77
  247. package/dist/testing/index.js +1276 -1262
  248. package/dist/testing/saas/index.d.ts +4 -4
  249. package/dist/testing/saas/index.js +2 -2
  250. package/dist/testing/saas/permissions.d.ts +1 -1
  251. package/dist/testing/saas/permissions.js +1 -1
  252. package/dist/thenable-QSmvt-vZ.js +65 -0
  253. package/dist/{token-CIWxJOCh.js → token-Bx9qy30p.js} +1 -1
  254. package/dist/tool-refusal-CQ7OEia9.js +41 -0
  255. package/dist/trpc/index.d.ts +5 -5
  256. package/dist/trpc/index.js +7 -8
  257. package/dist/{types-DbjRN55U.d.ts → types-7rJVLWe5.d.ts} +82 -4
  258. package/dist/{types-aqOHTHcp.d.ts → types-Br9IXUBG.d.ts} +1 -1
  259. package/dist/types-ByUo56un.d.ts +88 -0
  260. package/dist/{types-Cq_H8N_X.d.ts → types-C0dee0Qf.d.ts} +2 -2
  261. package/dist/{types-DxiCGmmd.d.ts → types-CIlTojhq.d.ts} +2 -2
  262. package/dist/{types-QCuYJh4q.d.ts → types-CUcFZfpU.d.ts} +1 -1
  263. package/dist/{types-C97IskBw.d.ts → types-CqrjB9o6.d.ts} +1 -1
  264. package/dist/{types-BnIEz1sU.d.ts → types-DHrmBJLH.d.ts} +24 -6
  265. package/dist/{types-Dnemwd77.d.ts → types-DpWfQdSh.d.ts} +5 -1
  266. package/dist/{types-Bvc4oWT6.d.ts → types-DvupZE0w.d.ts} +1 -1
  267. package/dist/unplugin/index.d.ts +1 -1
  268. package/dist/unplugin/index.js +1 -1
  269. package/dist/{usage-GTixvDDU.js → usage-4G6t643F.js} +2 -2
  270. package/dist/{usage-ItS7nLcl.js → usage-CG9nOYZw.js} +7 -7
  271. package/dist/usage-iFLJ0-rr.js +2 -0
  272. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-BSSw0l_8.d.ts} +1 -1
  273. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  274. package/dist/validity-dVrUEPJt.js +62 -0
  275. package/dist/{verifier-BxBo6I44.js → verifier-DMr_Zmb_.js} +51 -15
  276. package/dist/{rls-verify-CVQTHTh5.js → verify-BztUB3GX.js} +668 -239
  277. package/dist/{version-BvacVTZR.js → version-BEogC-rB.js} +1 -1
  278. package/dist/{views-Soe7bGSC.js → views-CJsrBS1f.js} +23 -1
  279. package/dist/{vocabulary-DA8a8zif.d.ts → vocabulary-hhEFLFoL.d.ts} +15 -6
  280. package/dist/vue/index.d.ts +24 -19
  281. package/dist/vue/index.js +24 -8
  282. package/dist/watch-C8TpsAl4.js +2 -0
  283. package/dist/{watch-DVBJ9cBq.js → watch-zeucB7eF.js} +6 -6
  284. package/dist/webmcp/index.d.ts +2 -2
  285. package/dist/webmcp/index.js +13 -37
  286. package/dist/wrap-Cr93qqdP.d.ts +14 -0
  287. package/dist/wrap-DWsU_5Bd.js +26 -0
  288. package/package.json +8 -8
  289. package/schemas/catalog-v1.json +6 -0
  290. package/skills/permdock-credentials/SKILL.md +1 -1
  291. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  292. package/skills/permdock-data/references/queries-and-rls.md +4 -0
  293. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
  294. package/skills/permdock-wire/SKILL.md +2 -2
  295. package/skills/permdock-wire/references/adapters.md +9 -1
  296. package/skills/permdock-wire/references/policy-options.md +10 -1
  297. package/dist/catalog-CRW5Mx_B.js +0 -2
  298. package/dist/collect-DSWOk19R.js +0 -2
  299. package/dist/create-CMwIl-w2.js +0 -253
  300. package/dist/delegation-D8pUEuce.js +0 -103
  301. package/dist/doctor-collect-CHk6XWOA.js +0 -665
  302. package/dist/doctor-igIiM_Hl.js +0 -1194
  303. package/dist/evaluation-items-CfCCejQd.js +0 -40
  304. package/dist/fields-BMl1RxoX.js +0 -26
  305. package/dist/grantee-Cv5Sogfv.js +0 -602
  306. package/dist/hosted-DJQw46hn.js +0 -266
  307. package/dist/instance-options-Dhhcnm3y.js +0 -22
  308. package/dist/load-DwJUafYN.js +0 -2
  309. package/dist/map-AcxK9o_D.js +0 -147
  310. package/dist/permissions-DVoF6dMt.js +0 -662
  311. package/dist/powersync-e_AZrKbg.js +0 -2
  312. package/dist/protected-xAr24FEC.d.ts +0 -40
  313. package/dist/relations-cjOL01hZ.js +0 -505
  314. package/dist/rls-graph-CHwx0V8q.js +0 -435
  315. package/dist/rls-shared-Cewd_-zI.js +0 -495
  316. package/dist/store-jOBYpiXC.d.ts +0 -36
  317. package/dist/stores-C0IMQrGI.d.ts +0 -52
  318. package/dist/supabase-config-BpPXt3x1.js +0 -472
  319. package/dist/supabase-hook-6sYLXg_u.js +0 -2
  320. package/dist/thenable-okc2xDsj.js +0 -10
  321. package/dist/types-CKNSyIf_.d.ts +0 -52
  322. package/dist/usage-DorAJiU_.js +0 -2
  323. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -1,266 +0,0 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { T as isForbiddenKey, c as getResource, g as isSelfParented, i as findPermission, k as splitPath } from "./permissions-DVoF6dMt.js";
4
- import { c as indexPolicy, i as declaredRoleNames, m as role, o as deny, r as completeGrant, t as allow, v as normalizeWhere } from "./policy-xyWg7QdR.js";
5
- import { t as parseDuration } from "./duration-xK2jGFVc.js";
6
- import { S as findRole, T as listPlans, s as flattenGrantee } from "./grantee-Cv5Sogfv.js";
7
- import { n as sha256, t as bytesToBase64Url } from "./sha256-BO0swRXL.js";
8
- //#region src/core/hosted.ts
9
- function memoryPolicySource(document = null) {
10
- const current = document === null ? null : parsePolicyDocument(document);
11
- return Object.freeze({
12
- current: () => current,
13
- refresh: () => Promise.resolve()
14
- });
15
- }
16
- function isRecord(value) {
17
- return value !== null && typeof value === "object" && !Array.isArray(value);
18
- }
19
- function rejectUnsafe(value) {
20
- if (value === null || typeof value !== "object") return;
21
- if (Array.isArray(value)) {
22
- for (const item of value) rejectUnsafe(item);
23
- return;
24
- }
25
- for (const key of Object.keys(value)) {
26
- if (isForbiddenKey(key)) throw new Error(`PermDock: unsafe policy document key '${key}'`);
27
- rejectUnsafe(value[key]);
28
- }
29
- }
30
- /** Validates the document envelope; per-grant checks happen at merge time. */
31
- function parsePolicyDocument(json) {
32
- const input = typeof json === "string" ? JSON.parse(json) : json;
33
- if (!isRecord(input)) throw new TypeError("PermDock: policy document must be an object");
34
- const copy = JSON.parse(JSON.stringify(input));
35
- rejectUnsafe(copy);
36
- if (copy["v"] !== 1) throw new Error(`PermDock: unsupported policy document version '${String(copy["v"])}'`);
37
- if (typeof copy["id"] !== "string" || typeof copy["fingerprint"] !== "string" || typeof copy["catalog"] !== "string" || typeof copy["issuedAt"] !== "number" || !Array.isArray(copy["grants"])) throw new TypeError("PermDock: malformed policy document");
38
- return freezeDeep(copy);
39
- }
40
- const COMPARISONS = /* @__PURE__ */ new Set([
41
- "eq",
42
- "ne",
43
- "gt",
44
- "gte",
45
- "lt",
46
- "lte",
47
- "contains"
48
- ]);
49
- function safePath(path) {
50
- if (typeof path !== "string" || path.length === 0) return false;
51
- return splitPath(path).every((segment) => !isForbiddenKey(segment));
52
- }
53
- function portableValue(value) {
54
- if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return true;
55
- if (Array.isArray(value)) return value.every(portableValue);
56
- if (!isRecord(value)) return false;
57
- const keys = Object.keys(value);
58
- if (keys.length !== 1) return false;
59
- if (keys[0] === "ref") return safePath(value["ref"]);
60
- return keys[0] === "date" && typeof value["date"] === "string";
61
- }
62
- /** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
63
- function isPortableCondition(value) {
64
- if (!isRecord(value) || typeof value["op"] !== "string") return false;
65
- const op = value["op"];
66
- if (COMPARISONS.has(op)) return safePath(value["field"]) && portableValue(value["value"]);
67
- switch (op) {
68
- case "in":
69
- case "notIn": return safePath(value["field"]) && (Array.isArray(value["value"]) || isRecord(value["value"])) && portableValue(value["value"]);
70
- case "isNull": return safePath(value["field"]) && typeof value["value"] === "boolean";
71
- case "and":
72
- case "or": return Array.isArray(value["conditions"]) && value["conditions"].every(isPortableCondition);
73
- case "not": return isPortableCondition(value["condition"]);
74
- case "memberOf": return (value["scope"] === "tenant" || value["scope"] === "team" || value["scope"] === "resource") && safePath(value["field"]) && Array.isArray(value["roles"]) && value["roles"].every((item) => typeof item === "string") && (value["resource"] === void 0 || typeof value["resource"] === "string") && (value["parents"] === void 0 || Array.isArray(value["parents"]) && value["parents"].every((parent) => safePath(parent) || isRecord(parent) && safePath(parent["field"]) && typeof parent["resource"] === "string"));
75
- default: return false;
76
- }
77
- }
78
- function approvalRank(approval) {
79
- if (approval === void 0) return;
80
- if (approval === "human") return {
81
- distinct: true,
82
- stale: false,
83
- quorum: 1,
84
- ttl: Number.POSITIVE_INFINITY,
85
- escalates: false
86
- };
87
- return {
88
- by: approval.stages === void 0 ? JSON.stringify(approval.by) : JSON.stringify([approval.mode, approval.stages]),
89
- distinct: approval.distinct !== false,
90
- stale: approval.staleOn === "resource-change",
91
- quorum: approval.quorum ?? 1,
92
- ttl: parseDuration(approval.ttl) ?? Number.POSITIVE_INFINITY,
93
- escalates: approval.escalation !== void 0
94
- };
95
- }
96
- /** A hosted approval must meet every approval a code allow requires on the permission. */
97
- function approvalAtLeast(hosted, code) {
98
- const mine = approvalRank(hosted);
99
- for (const required of code) {
100
- const theirs = approvalRank(required);
101
- if (theirs === void 0) continue;
102
- if (mine === void 0) return false;
103
- if (theirs.distinct && !mine.distinct) return false;
104
- if (theirs.stale && !mine.stale) return false;
105
- if (theirs.by !== void 0 && mine.by !== theirs.by) return false;
106
- if (mine.quorum < theirs.quorum || mine.ttl > theirs.ttl) return false;
107
- if (mine.escalates && !theirs.escalates) return false;
108
- }
109
- return true;
110
- }
111
- /** A grantee kind this build does not know is never declared, so the hosted grant is dropped. */
112
- function undeclaredKind(_grantee) {
113
- return false;
114
- }
115
- function declaredGrantee(policy, grantee, permissionResource) {
116
- switch (grantee.kind) {
117
- case "role": return declaredRoleNames(policy).has(grantee.role);
118
- case "plan": return listPlans(policy.vocabulary.plans).some((leaf) => leaf.key === grantee.plan);
119
- case "relation": return grantee.resource === permissionResource && getResource(policy.permissions, grantee.resource)?.relations[grantee.relation] !== void 0 && (grantee.through === void 0 || grantee.through === "parent" && isSelfParented(getResource(policy.permissions, grantee.resource))) && (grantee.depth === void 0 || grantee.through === "parent" && Number.isInteger(grantee.depth) && grantee.depth >= 0 && grantee.depth <= 32);
120
- case "anyone":
121
- case "authenticated":
122
- case "actor":
123
- case "assurance":
124
- case "inherit": return false;
125
- default: return undeclaredKind(grantee);
126
- }
127
- }
128
- /** Approvers are declared roles, plans or relations, or any authenticated human. */
129
- function approvalAcceptable(policy, approval, permissionResource) {
130
- if (approval === void 0 || approval === "human") return true;
131
- if (!isRecord(approval)) return false;
132
- if (approval["mode"] !== void 0 || approval["stages"] !== void 0) return false;
133
- if (approval["distinct"] !== void 0 && typeof approval["distinct"] !== "boolean") return false;
134
- if (approval["staleOn"] !== void 0 && (approval["staleOn"] !== "resource-change" || getResource(policy.permissions, permissionResource)?.version === void 0)) return false;
135
- if (approval["quorum"] !== void 0 && (!Number.isInteger(approval["quorum"]) || approval["quorum"] < 1)) return false;
136
- if (approval["ttl"] !== void 0 && (typeof approval["ttl"] !== "string" || parseDuration(approval["ttl"]) === void 0)) return false;
137
- const escalation = approval["escalation"];
138
- if (escalation !== void 0 && (!isRecord(escalation) || typeof escalation["after"] !== "string" || parseDuration(escalation["after"]) === void 0 || !granteesAcceptable(policy, escalation["to"], permissionResource))) return false;
139
- if (approval["by"] === void 0) return true;
140
- return granteesAcceptable(policy, approval["by"], permissionResource);
141
- }
142
- function granteesAcceptable(policy, raw, permissionResource) {
143
- if (raw === void 0) return false;
144
- const items = flattenGrantee(raw);
145
- return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
146
- }
147
- function buildGrant(policy, document, raw) {
148
- if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
149
- ok: false,
150
- reason: "invalid"
151
- };
152
- const permission = findPermission(policy.permissions, raw["permission"]);
153
- if (permission === void 0) return {
154
- ok: false,
155
- reason: "unknown-permission"
156
- };
157
- if (!policy.hostable.includes(permission.key)) return {
158
- ok: false,
159
- reason: "not-hostable"
160
- };
161
- const to = flattenGrantee(raw["to"]);
162
- if (to.length === 0 || !to.every((item) => isRecord(item) && declaredGrantee(policy, item, permission.resource))) return {
163
- ok: false,
164
- reason: "unknown-grantee"
165
- };
166
- for (const condition of [raw["where"], raw["check"]]) if (condition !== void 0 && !isPortableCondition(condition)) return {
167
- ok: false,
168
- reason: "non-portable"
169
- };
170
- if (!approvalAcceptable(policy, raw["approval"], permission.resource)) return {
171
- ok: false,
172
- reason: "invalid"
173
- };
174
- if (raw["fields"] !== void 0 && !(Array.isArray(raw["fields"]) && raw["fields"].every((field) => typeof field === "string"))) return {
175
- ok: false,
176
- reason: "invalid"
177
- };
178
- const effect = raw["effect"] ?? "allow";
179
- const options = compact({
180
- where: raw["where"] === void 0 ? void 0 : normalizeWhere(raw["where"]),
181
- check: raw["check"] === void 0 ? void 0 : normalizeWhere(raw["check"]),
182
- approval: raw["approval"],
183
- fields: raw["fields"]
184
- });
185
- let built;
186
- try {
187
- const roleItem = to.length === 1 && to[0]?.kind === "role" ? to[0] : null;
188
- if (roleItem === null) {
189
- const partial = (effect === "allow" ? allow : deny)(permission, {
190
- ...options,
191
- to
192
- });
193
- built = completeGrant(partial);
194
- } else {
195
- const binding = policy.rolesByName.get(roleItem.role);
196
- const leaf = findRole(policy.vocabulary.roles, roleItem.role);
197
- const [first] = role(leaf ?? roleItem.role, [(effect === "allow" ? allow : deny)(permission, options)], binding?.on === void 0 ? {} : { on: binding.on }).grants;
198
- if (first === void 0) throw new TypeError("PermDock: role produced no grant");
199
- built = first;
200
- }
201
- } catch {
202
- return {
203
- ok: false,
204
- reason: "invalid"
205
- };
206
- }
207
- if (effect === "allow") {
208
- const codeApprovals = policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === permission.key).map((grant) => grant.approval);
209
- if (!approvalAtLeast(built.approval, codeApprovals)) return {
210
- ok: false,
211
- reason: "weaker-approval"
212
- };
213
- }
214
- return {
215
- ok: true,
216
- grant: freezeDeep({
217
- ...built,
218
- hosted: {
219
- document: document.fingerprint,
220
- grant: raw["id"]
221
- }
222
- })
223
- };
224
- }
225
- /**
226
- * The code policy plus the hosted grants that pass every rule. Hosted
227
- * allows OR with code allows and any deny still wins, so a hosted grant can
228
- * never override a code deny; one that fails a rule is dropped, not thrown.
229
- */
230
- function mergeHostedGrants(policy, document) {
231
- if (document === null || document.grants.length === 0) return {
232
- policy,
233
- dropped: []
234
- };
235
- const merged = [];
236
- const dropped = [];
237
- for (const raw of document.grants) {
238
- const result = buildGrant(policy, document, raw);
239
- if (result.ok) {
240
- merged.push(result.grant);
241
- continue;
242
- }
243
- dropped.push(freezeDeep({
244
- kind: "hosted-grant-dropped",
245
- document: document.fingerprint,
246
- grant: isRecord(raw) && typeof raw.id === "string" ? raw.id : "",
247
- reason: result.reason
248
- }));
249
- }
250
- if (merged.length === 0) return {
251
- policy,
252
- dropped
253
- };
254
- const grants = [...policy.grants, ...merged];
255
- return {
256
- policy: freezeDeep({
257
- ...policy,
258
- grants,
259
- index: indexPolicy(policy.roles, grants, policy.vocabulary),
260
- fingerprint: bytesToBase64Url(sha256(`${policy.fingerprint}:${document.fingerprint}`))
261
- }),
262
- dropped
263
- };
264
- }
265
- //#endregion
266
- export { parsePolicyDocument as i, memoryPolicySource as n, mergeHostedGrants as r, isPortableCondition as t };
@@ -1,22 +0,0 @@
1
- //#region src/core/instance-options.ts
2
- const INSTANCE_KEYS = {
3
- memberships: true,
4
- relations: true,
5
- entitlements: true,
6
- customRoles: true,
7
- policies: true,
8
- approvalPolicies: true,
9
- sink: true,
10
- limits: true
11
- };
12
- /** The `InstanceOptions` set on `options`, without the adapter's own keys. */
13
- function instanceOptions(options) {
14
- const picked = {};
15
- for (const key of Object.keys(INSTANCE_KEYS)) {
16
- const name = key;
17
- if (options[name] !== void 0) picked[name] = options[name];
18
- }
19
- return picked;
20
- }
21
- //#endregion
22
- export { instanceOptions as t };
@@ -1,2 +0,0 @@
1
- import { a as loadModule, o as pickNamed } from "./load-DhWEB9P1.js";
2
- export { loadModule, pickNamed };
@@ -1,147 +0,0 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { t as itemResourceData } from "./evaluation-items-CfCCejQd.js";
3
- //#region src/authzen/map.ts
4
- const UNKNOWN = {
5
- outcome: "denied",
6
- denials: [{
7
- role: null,
8
- reason: "no-grant",
9
- detail: "unknown-permission"
10
- }],
11
- alternatives: []
12
- };
13
- const UNAVAILABLE = {
14
- outcome: "denied",
15
- denials: [{
16
- role: null,
17
- reason: "no-grant",
18
- detail: "resource-unavailable"
19
- }],
20
- alternatives: []
21
- };
22
- function isRecord(value) {
23
- return value !== null && typeof value === "object" && !Array.isArray(value);
24
- }
25
- function actionNameOf(item) {
26
- if (typeof item.action?.name === "string") return item.action.name;
27
- if (!isRecord(item.action?.properties)) return;
28
- const scope = item.action.properties["scope"];
29
- return typeof scope === "string" ? scope : void 0;
30
- }
31
- function permissionOf(lookup, item) {
32
- return lookup(actionNameOf(item), item.resource);
33
- }
34
- function resourceData(item) {
35
- return itemResourceData(item.resource);
36
- }
37
- function resourceIdOf(item) {
38
- const id = item.resource?.id;
39
- if (typeof id === "string" || typeof id === "number") return String(id);
40
- }
41
- function userFromEntity(entity) {
42
- if (entity === void 0) return null;
43
- const result = {};
44
- if (typeof entity.id === "string" || typeof entity.id === "number") result["id"] = String(entity.id);
45
- if (isRecord(entity.properties)) for (const [key, value] of Object.entries(entity.properties)) {
46
- if (key === "actor" || key === "delegation") continue;
47
- result[key] = value;
48
- }
49
- return Object.keys(result).length === 0 ? null : result;
50
- }
51
- function actorOf(item) {
52
- const context = isRecord(item.context) ? item.context : {};
53
- const fromSubject = isRecord(item.subject?.properties) ? item.subject.properties["actor"] : void 0;
54
- const raw = context["actor"] ?? fromSubject;
55
- if (!isRecord(raw) || typeof raw["id"] !== "string") return;
56
- const kind = typeof raw["kind"] === "string" ? raw["kind"] : "oauth-client";
57
- return {
58
- id: raw["id"],
59
- kind
60
- };
61
- }
62
- function delegationOf(item) {
63
- const context = isRecord(item.context) ? item.context : {};
64
- const fromSubject = isRecord(item.subject?.properties) ? item.subject.properties["delegation"] : void 0;
65
- const raw = context["delegation"] ?? fromSubject;
66
- if (!isRecord(raw)) return;
67
- const scopes = raw["scopes"];
68
- const authorizationDetails = raw["authorizationDetails"];
69
- return compact({
70
- scopes: Array.isArray(scopes) ? scopes.filter((scope) => typeof scope === "string") : void 0,
71
- authorizationDetails: Array.isArray(authorizationDetails) ? authorizationDetails : void 0
72
- });
73
- }
74
- function tenantOf(item) {
75
- if (!isRecord(item.context) || typeof item.context["tenant"] !== "string") return;
76
- return item.context["tenant"];
77
- }
78
- function permdockContext(decision) {
79
- switch (decision.outcome) {
80
- case "granted": return { outcome: "granted" };
81
- case "denied": {
82
- const unknown = decision.denials.some((denial) => denial.detail === "unknown-permission");
83
- return compact({
84
- outcome: "denied",
85
- denials: decision.denials.map((denial) => ({
86
- role: denial.role,
87
- reason: denial.reason
88
- })),
89
- reason: unknown ? "unknown-permission" : void 0
90
- });
91
- }
92
- case "approval-required": return {
93
- outcome: "approval-required",
94
- token: decision.token
95
- };
96
- default: return decision;
97
- }
98
- }
99
- function evaluationContext(decision) {
100
- return { permdock: permdockContext(decision) };
101
- }
102
- function evaluationRow(decision) {
103
- return {
104
- decision: decision.outcome === "granted",
105
- context: evaluationContext(decision)
106
- };
107
- }
108
- function pathnameOf(request) {
109
- return new URL(request.url).pathname;
110
- }
111
- function endsWithPath(pathname, suffix) {
112
- return pathname === suffix || pathname.endsWith(suffix);
113
- }
114
- function mergeItem(shared, item) {
115
- if (!isRecord(item)) return shared;
116
- return compact({
117
- subject: isRecord(item["subject"]) ? item["subject"] : shared.subject,
118
- action: isRecord(item["action"]) ? item["action"] : shared.action,
119
- resource: isRecord(item["resource"]) ? item["resource"] : shared.resource,
120
- context: item["context"] ?? shared.context
121
- });
122
- }
123
- function pageOf(body) {
124
- const page = isRecord(body["page"]) ? body["page"] : {};
125
- const raw = typeof page["token"] === "string" ? page["token"] : typeof page["next_token"] === "string" ? page["next_token"] : "0";
126
- const parsed = Math.trunc(Number(raw));
127
- const sizeRaw = page["limit"] ?? page["size"];
128
- const size = typeof sizeRaw === "number" && sizeRaw > 0 ? Math.min(sizeRaw, 200) : 50;
129
- return {
130
- offset: Number.isFinite(parsed) && parsed > 0 ? parsed : 0,
131
- size
132
- };
133
- }
134
- function paged(items, offset, size) {
135
- const slice = items.slice(offset, offset + size);
136
- const next = offset + slice.length;
137
- return {
138
- results: slice,
139
- page: {
140
- next_token: next < items.length ? String(next) : "",
141
- count: slice.length,
142
- total: items.length
143
- }
144
- };
145
- }
146
- //#endregion
147
- export { endsWithPath as a, mergeItem as c, pathnameOf as d, permissionOf as f, userFromEntity as g, tenantOf as h, delegationOf as i, pageOf as l, resourceIdOf as m, UNKNOWN as n, evaluationRow as o, resourceData as p, actorOf as r, isRecord as s, UNAVAILABLE as t, paged as u };