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
@@ -0,0 +1,240 @@
1
+ import { n as escapeSqlIdent } from "./sql-t8teWOfo.js";
2
+ import { a as RETIRE_MARKER } from "./markers-CiwAOZtO.js";
3
+ import { r as tableKey } from "./deciding-columns-Sq12mEA6.js";
4
+ //#region src/cli/rls/retire.ts
5
+ const IDENT = String.raw`(?:"[^"]+"|[A-Za-z_][\w$]*)`;
6
+ const NAME = String.raw`(${IDENT}(?:\s*\.\s*${IDENT})?)`;
7
+ const NAMES = String.raw`(${IDENT}(?:\s*\.\s*${IDENT})?(?:\s*,\s*${IDENT}(?:\s*\.\s*${IDENT})?)*)`;
8
+ const CREATE_TABLE = new RegExp(String.raw`^create\s+(?:(?:global\s+|local\s+)?(?:temporary|temp|unlogged)\s+)?table\s+(?:if\s+not\s+exists\s+)?${NAME}`, "iu");
9
+ const CREATE_MATVIEW = new RegExp(String.raw`^create\s+materialized\s+view\s+(?:if\s+not\s+exists\s+)?${NAME}`, "iu");
10
+ const DROP_RELATION = new RegExp(String.raw`^drop\s+(table|materialized\s+view|view)\s+(?:if\s+exists\s+)?${NAMES}`, "iu");
11
+ const CREATE_VIEW = new RegExp(String.raw`^create\s+(?:or\s+replace\s+)?(?:temp(?:orary)?\s+)?(?:recursive\s+)?view\s+${NAME}`, "iu");
12
+ const CREATE_FUNCTION = new RegExp(String.raw`^create\s+(?:or\s+replace\s+)?(?:function|procedure)\s+${NAME}\s*\(`, "iu");
13
+ const DROP_FUNCTION = new RegExp(String.raw`^drop\s+(?:function|procedure)\s+(?:if\s+exists\s+)?([\s\S]*)$`, "iu");
14
+ const CREATE_TRIGGER = new RegExp(String.raw`^create\s+(?:or\s+replace\s+)?(?:constraint\s+)?trigger\s+(${IDENT})[\s\S]*?\bon\s+${NAME}[\s\S]*?\bexecute\s+(?:function|procedure)\s+${NAME}\s*\(`, "iu");
15
+ const DROP_TRIGGER = new RegExp(String.raw`^drop\s+trigger\s+(?:if\s+exists\s+)?(${IDENT})\s+on\s+${NAME}`, "iu");
16
+ const POLICY = new RegExp(String.raw`^(create|alter)\s+policy\s+(${IDENT})\s+on\s+${NAME}`, "iu");
17
+ const DROP_POLICY = new RegExp(String.raw`^drop\s+policy\s+(?:if\s+exists\s+)?(${IDENT})\s+on\s+${NAME}`, "iu");
18
+ /** A capture group the pattern always fills. */
19
+ function group(match, index) {
20
+ return match[index] ?? "";
21
+ }
22
+ function bare(ident) {
23
+ return ident.replaceAll("\"", "");
24
+ }
25
+ function key(name) {
26
+ return tableKey(name.replaceAll(/\s+/gu, ""));
27
+ }
28
+ function escapeRegex(text) {
29
+ return text.replaceAll(/[.*+?^${}()|[\]\\]/gu, String.raw`\$&`);
30
+ }
31
+ /** A reference to `schema.name`, qualified or not, outside a longer identifier. */
32
+ function refPattern(table) {
33
+ const [schema = "public", name = ""] = table.split(".");
34
+ return String.raw`(?<![\w$."])(?:"?${escapeRegex(schema)}"?\s*\.\s*)?"?${escapeRegex(name)}"?(?![\w$"])`;
35
+ }
36
+ function writesPattern(table) {
37
+ return new RegExp(String.raw`\b(?:insert\s+into|update|delete\s+from|truncate(?:\s+table)?|merge\s+into|refresh\s+materialized\s+view(?:\s+concurrently)?)\s+(?:only\s+)?${refPattern(table)}`, "iu");
38
+ }
39
+ function callsPattern(name) {
40
+ const [schema = "public", bareName = ""] = name.split(".");
41
+ return new RegExp(String.raw`(?<![\w$."])(?:"?${escapeRegex(schema)}"?\s*\.\s*)?"?${escapeRegex(bareName)}"?\s*\(`, "iu");
42
+ }
43
+ /** The names `drop function` lists: `a(int), b` gives `a` and `b`. */
44
+ function droppedFunctions(list) {
45
+ const names = [];
46
+ let depth = 0;
47
+ let current = "";
48
+ for (const char of list) if (char === "(") depth += 1;
49
+ else if (char === ")") depth -= 1;
50
+ else if (depth === 0 && char === ",") {
51
+ names.push(current);
52
+ current = "";
53
+ } else if (depth === 0) current += char;
54
+ names.push(current);
55
+ return names.map((name) => name.replace(/\s+(?:cascade|restrict)\s*$/iu, "").trim()).filter((name) => name !== "").map(key);
56
+ }
57
+ function replay(statements) {
58
+ const schema = {
59
+ relations: /* @__PURE__ */ new Map(),
60
+ views: /* @__PURE__ */ new Map(),
61
+ functions: /* @__PURE__ */ new Map(),
62
+ triggers: /* @__PURE__ */ new Map(),
63
+ policies: /* @__PURE__ */ new Map()
64
+ };
65
+ for (const statement of statements) {
66
+ const { text } = statement;
67
+ const defined = {
68
+ file: statement.file,
69
+ line: statement.line,
70
+ text
71
+ };
72
+ let match = CREATE_TABLE.exec(text);
73
+ if (match !== null) {
74
+ schema.relations.set(key(group(match, 1)), "table");
75
+ continue;
76
+ }
77
+ match = CREATE_MATVIEW.exec(text);
78
+ if (match !== null) {
79
+ const name = key(group(match, 1));
80
+ schema.relations.set(name, "materialized view");
81
+ schema.views.set(name, defined);
82
+ continue;
83
+ }
84
+ match = DROP_RELATION.exec(text);
85
+ if (match !== null) {
86
+ for (const name of group(match, 2).split(",").map(key)) {
87
+ schema.relations.delete(name);
88
+ schema.views.delete(name);
89
+ }
90
+ continue;
91
+ }
92
+ match = CREATE_VIEW.exec(text);
93
+ if (match !== null) {
94
+ schema.views.set(key(group(match, 1)), defined);
95
+ continue;
96
+ }
97
+ match = CREATE_FUNCTION.exec(text);
98
+ if (match !== null) {
99
+ schema.functions.set(key(group(match, 1)), defined);
100
+ continue;
101
+ }
102
+ match = DROP_FUNCTION.exec(text);
103
+ if (match !== null) {
104
+ for (const name of droppedFunctions(group(match, 1))) schema.functions.delete(name);
105
+ continue;
106
+ }
107
+ match = CREATE_TRIGGER.exec(text);
108
+ if (match !== null) {
109
+ const name = bare(group(match, 1));
110
+ const table = key(group(match, 2));
111
+ schema.triggers.set(`${table}:${name}`, {
112
+ name,
113
+ table,
114
+ function: key(group(match, 3))
115
+ });
116
+ continue;
117
+ }
118
+ match = DROP_TRIGGER.exec(text);
119
+ if (match !== null) {
120
+ schema.triggers.delete(`${key(group(match, 2))}:${bare(group(match, 1))}`);
121
+ continue;
122
+ }
123
+ match = POLICY.exec(text);
124
+ if (match !== null) {
125
+ const name = bare(group(match, 2));
126
+ const table = key(group(match, 3));
127
+ const id = `${table}:${name}`;
128
+ const expressions = text.slice(match[0].length);
129
+ if (group(match, 1).toLowerCase() === "create" || /\b(?:using|with\s+check)\b/iu.test(expressions)) schema.policies.set(id, {
130
+ ...defined,
131
+ text: expressions,
132
+ table,
133
+ name
134
+ });
135
+ continue;
136
+ }
137
+ match = DROP_POLICY.exec(text);
138
+ if (match !== null) schema.policies.delete(`${key(group(match, 2))}:${bare(group(match, 1))}`);
139
+ }
140
+ return schema;
141
+ }
142
+ /** Functions that write `table`, the configured `refresh` ones, and every function that calls one. */
143
+ function refreshFunctions(schema, table, configured) {
144
+ const writes = writesPattern(table);
145
+ const found = new Set(configured.map(key));
146
+ for (const [name, defined] of schema.functions) if (writes.test(defined.text)) found.add(name);
147
+ let grew = true;
148
+ while (grew) {
149
+ grew = false;
150
+ const calls = [...found].map(callsPattern);
151
+ for (const [name, defined] of schema.functions) if (!found.has(name) && calls.some((call) => call.test(defined.text))) {
152
+ found.add(name);
153
+ grew = true;
154
+ }
155
+ }
156
+ return found;
157
+ }
158
+ /** Calls of a legacy helper outside its own definition, grants and drops (PD056). */
159
+ function legacyHelperCalls(statements, name) {
160
+ const own = new RegExp(String.raw`^\s*(?:create\s+(?:or\s+replace\s+)?function|drop\s+function|revoke|grant|alter\s+function|comment\s+on\s+function)\b[^(]*?(?:^|[\s."])${name}"?\s*\(`, "iu");
161
+ const call = new RegExp(String.raw`(?<![\w$])(?:(?:"[^"]+"|\w+)\s*\.\s*)?"?${name}"?\s*\(`, "giu");
162
+ let count = 0;
163
+ const files = /* @__PURE__ */ new Set();
164
+ for (const statement of statements) {
165
+ const hits = own.test(statement.text) ? 0 : (statement.text.match(call) ?? []).length;
166
+ if (hits > 0) {
167
+ count += hits;
168
+ files.add(statement.file);
169
+ }
170
+ }
171
+ return {
172
+ count,
173
+ files: [...files].toSorted()
174
+ };
175
+ }
176
+ /** The `rls.migrate.helpers` names doctor and `rls migrate` count. */
177
+ function legacyHelperNames(config) {
178
+ return Object.keys(config.helpers).filter((name) => /^[a-z_][a-z0-9_]*$/u.test(name));
179
+ }
180
+ /**
181
+ * For each `rls.migrate.tables` table: whether the migrations still create it,
182
+ * the triggers and functions that refresh it, and what still reads it.
183
+ */
184
+ function retirePlan(statements, config) {
185
+ const schema = replay(statements);
186
+ const uncalled = new Set(legacyHelperNames(config).filter((name) => legacyHelperCalls(statements, name).count === 0));
187
+ const helpers = [...schema.functions.keys()].filter((fn) => uncalled.has(fn.slice(fn.lastIndexOf(".") + 1))).toSorted();
188
+ return {
189
+ tables: Object.entries(config.tables ?? {}).map(([name, table]) => {
190
+ const target = key(name);
191
+ const refresh = refreshFunctions(schema, target, table.refresh ?? []);
192
+ const reads = new RegExp(refPattern(target), "iu");
193
+ const readers = [];
194
+ for (const policy of schema.policies.values()) if (policy.table !== target && reads.test(policy.text)) readers.push({
195
+ kind: "policy",
196
+ name: `${policy.name} on ${policy.table}`,
197
+ file: policy.file,
198
+ line: policy.line
199
+ });
200
+ for (const [view, defined] of schema.views) if (view !== target && reads.test(defined.text)) readers.push({
201
+ kind: "view",
202
+ name: view,
203
+ file: defined.file,
204
+ line: defined.line
205
+ });
206
+ for (const [fn, defined] of schema.functions) if (!refresh.has(fn) && !helpers.includes(fn) && reads.test(defined.text)) readers.push({
207
+ kind: "function",
208
+ name: fn,
209
+ file: defined.file,
210
+ line: defined.line
211
+ });
212
+ return {
213
+ table: target,
214
+ present: schema.relations.has(target),
215
+ kind: schema.relations.get(target) ?? "table",
216
+ refreshTriggers: [...schema.triggers.values()].filter((trigger) => trigger.table !== target && refresh.has(trigger.function)),
217
+ refreshFunctions: [...refresh].filter((fn) => schema.functions.has(fn)).toSorted(),
218
+ readers
219
+ };
220
+ }),
221
+ helpers
222
+ };
223
+ }
224
+ function escapeQualifiedName(name) {
225
+ return name.split(".").map((part) => escapeSqlIdent(part)).join(".");
226
+ }
227
+ /** The retire migration: each present table without readers, its refresh triggers and functions, and the uncalled helpers. */
228
+ function retireSql(plan) {
229
+ const tables = plan.tables.filter((table) => table.present && table.readers.length === 0);
230
+ if (tables.length === 0) return;
231
+ const lines = [`${RETIRE_MARKER} table=${tables.map((table) => table.table).join(",")}`, "-- rls.migrate.tables: the refresh triggers and functions, uncalled legacy helpers, then the table; no cascade, so a dependant left behind fails the migration"];
232
+ for (const table of tables) for (const trigger of table.refreshTriggers) lines.push(`drop trigger if exists ${escapeSqlIdent(trigger.name)} on ${escapeQualifiedName(trigger.table)};`);
233
+ const functions = new Set(tables.flatMap((table) => table.refreshFunctions));
234
+ for (const fn of [...functions].toSorted()) lines.push(`drop function if exists ${escapeQualifiedName(fn)};`);
235
+ for (const helper of plan.helpers) lines.push(`drop function if exists ${escapeQualifiedName(helper)};`);
236
+ for (const table of tables) lines.push(`drop ${table.kind} if exists ${escapeQualifiedName(table.table)};`);
237
+ return `${lines.join("\n")}\n`;
238
+ }
239
+ //#endregion
240
+ export { retireSql as i, legacyHelperNames as n, retirePlan as r, legacyHelperCalls as t };
@@ -1,4 +1,4 @@
1
- import { i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-DSxCqG9A.js";
1
+ import { i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-Cpip4ULx.js";
2
2
  import { defineCommand } from "citty";
3
3
  //#region src/cli/commands/rls.ts
4
4
  function rls(ctx) {
@@ -175,6 +175,16 @@ function rls(ctx) {
175
175
  description: "File for the role_permissions seeds",
176
176
  valueHint: "file"
177
177
  },
178
+ "backfill-out": {
179
+ type: "string",
180
+ description: "File for the rls.customRoles.from copy",
181
+ valueHint: "file"
182
+ },
183
+ "retire-out": {
184
+ type: "string",
185
+ description: "migrate: file dropping the rls.migrate.tables",
186
+ valueHint: "file"
187
+ },
178
188
  "helpers-only": {
179
189
  type: "boolean",
180
190
  description: "Write the helpers and keep the policies hand-written"
@@ -189,7 +199,7 @@ function rls(ctx) {
189
199
  }
190
200
  },
191
201
  async run({ args: parsed }) {
192
- const result = await (await import("./rls-DQtdgTHB.js")).runRls({
202
+ const result = await (await import("./rls-BEktUaqg.js")).runRls({
193
203
  cwd: ctx.cwd,
194
204
  config: ctx.config,
195
205
  rest: parsed._,
@@ -224,6 +234,8 @@ function rls(ctx) {
224
234
  split: stringArg(parsed.split),
225
235
  grantsOut: stringArg(parsed["grants-out"]),
226
236
  seedsOut: stringArg(parsed["seeds-out"]),
237
+ backfillOut: stringArg(parsed["backfill-out"]),
238
+ retireOut: stringArg(parsed["retire-out"]),
227
239
  helpersOnly: parsed["helpers-only"] === true,
228
240
  shims: parsed.shims === true,
229
241
  write: parsed.write === true,