permdock 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +106 -47
  2. package/dist/a2a/index.d.ts +7 -16
  3. package/dist/a2a/index.js +59 -98
  4. package/dist/adapter-context-mlWsVGGg.js +23 -0
  5. package/dist/ai-sdk/index.d.ts +37 -16
  6. package/dist/ai-sdk/index.js +30 -13
  7. package/dist/approvals/index.d.ts +3 -3
  8. package/dist/approvals/index.js +5 -4
  9. package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
  10. package/dist/approvers-DT4AVyIg.js +52 -0
  11. package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
  12. package/dist/{arazzo-aoTkqYsJ.js → arazzo-CKwwqFWz.js} +2 -2
  13. package/dist/authzen/index.d.ts +4 -13
  14. package/dist/authzen/index.js +16 -50
  15. package/dist/better-auth/index.d.ts +20 -3
  16. package/dist/better-auth/index.js +27 -7
  17. package/dist/better-supabase/index.d.ts +223 -0
  18. package/dist/better-supabase/index.js +648 -0
  19. package/dist/bind-C_ob3LKa.d.ts +25 -0
  20. package/dist/bind-CuzGytRf.js +97 -0
  21. package/dist/boundary-BM8a_P6E.js +13 -0
  22. package/dist/boundary-BmHxVH1J.d.ts +15 -0
  23. package/dist/canonical-json-DemiK4Vp.js +26 -0
  24. package/dist/{capability-BDG_nkxt.d.ts → capability-2kYTMWDv.d.ts} +2 -2
  25. package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
  26. package/dist/catalog/index.d.ts +1 -1
  27. package/dist/catalog/index.js +1 -1
  28. package/dist/catalog-CRW5Mx_B.js +2 -0
  29. package/dist/{catalog-H-vFGwWK.js → catalog-DWF5cYqB.js} +4 -4
  30. package/dist/{catalog-B0E6bggc.js → catalog-dFZdWCGN.js} +2 -2
  31. package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-DdGm82XT.js} +20 -32
  32. package/dist/claude-agent/index.d.ts +5 -14
  33. package/dist/claude-agent/index.js +4 -10
  34. package/dist/clerk/index.d.ts +12 -3
  35. package/dist/clerk/index.js +26 -5
  36. package/dist/cli/bin.js +1 -1
  37. package/dist/cli/index.d.ts +3 -3
  38. package/dist/cli/index.js +2 -2
  39. package/dist/clients-C7zLFuWT.d.ts +12 -0
  40. package/dist/clients-DjU5ABMy.js +23 -0
  41. package/dist/cloud/index.d.ts +4 -5
  42. package/dist/cloud/index.js +20 -6
  43. package/dist/{cloud-BNQTrmrr.js → cloud-CB_ELYuX.js} +2 -2
  44. package/dist/{cloud-Cuxr6Czw.js → cloud-DWLXO2af.js} +7 -6
  45. package/dist/collect-DClJsheJ.js +83 -0
  46. package/dist/{collect-O-tOtbnk.js → collect-DSTE3ml9.js} +194 -42
  47. package/dist/collect-DSWOk19R.js +2 -0
  48. package/dist/{commands-BMh_Etm2.js → commands-DSxCqG9A.js} +16 -12
  49. package/dist/compile/index.d.ts +3 -0
  50. package/dist/compile/index.js +2 -0
  51. package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
  52. package/dist/compile-BkRyBDBw.d.ts +94 -0
  53. package/dist/config-BJiM-xAm.js +157 -0
  54. package/dist/config-Dnszbv-6.js +36 -0
  55. package/dist/config-report-DMvWKUxL.js +44 -0
  56. package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
  57. package/dist/{context-CKEAabd7.js → context-Bcy85rGi.js} +36 -27
  58. package/dist/convex/index.d.ts +9 -4
  59. package/dist/convex/index.js +14 -4
  60. package/dist/create-B1d519XK.d.ts +245 -0
  61. package/dist/create-CMwIl-w2.js +253 -0
  62. package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
  63. package/dist/delegation-D8pUEuce.js +103 -0
  64. package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
  65. package/dist/{describe-DernyItf.d.ts → describe-DMYiCjJV.d.ts} +9 -10
  66. package/dist/{diff-x5Il8LVa.js → diff-2VaeChzX.js} +44 -11
  67. package/dist/{diff-BUzf5Poi.js → diff-DBIhz_f2.js} +2 -2
  68. package/dist/{doctor-Bqo6FwUa.js → doctor-BwCAMLx_.js} +2 -2
  69. package/dist/doctor-collect-CHk6XWOA.js +665 -0
  70. package/dist/doctor-igIiM_Hl.js +1194 -0
  71. package/dist/drizzle/index.d.ts +4 -3
  72. package/dist/drizzle/index.js +3 -3
  73. package/dist/elysia/index.d.ts +6 -28
  74. package/dist/elysia/index.js +16 -60
  75. package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
  76. package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
  77. package/dist/{errors-DbZ1YOnb.d.ts → errors-DPdqI50v.d.ts} +8 -21
  78. package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
  79. package/dist/evaluation-items-CfCCejQd.js +40 -0
  80. package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
  81. package/dist/eve/index.d.ts +6 -15
  82. package/dist/eve/index.js +7 -12
  83. package/dist/expiry-BoBJ8Tvc.js +7 -0
  84. package/dist/express/index.d.ts +6 -29
  85. package/dist/express/index.js +28 -58
  86. package/dist/fastify/index.d.ts +6 -29
  87. package/dist/fastify/index.js +16 -65
  88. package/dist/fields-BMl1RxoX.js +26 -0
  89. package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
  90. package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
  91. package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
  92. package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-CTLijvdm.js} +66 -48
  93. package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
  94. package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
  95. package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
  96. package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
  97. package/dist/helpers-H_KARDVC.js +421 -0
  98. package/dist/hono/index.d.ts +6 -28
  99. package/dist/hono/index.js +11 -43
  100. package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
  101. package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
  102. package/dist/http-SO7qGttf.js +44 -0
  103. package/dist/ids-DC4V4CFu.js +18 -0
  104. package/dist/index-0nNqHspG.d.ts +6 -0
  105. package/dist/{index-xIxJLwOQ.d.ts → index-BNc7Wer_.d.ts} +75 -7
  106. package/dist/{index-CltcQ4Bf.d.ts → index-C7Tw7MaW.d.ts} +68 -5
  107. package/dist/{index-LF_hS-yn.d.ts → index-C8z4RjQV.d.ts} +1 -1
  108. package/dist/index.d.ts +14 -9
  109. package/dist/index.js +22 -17
  110. package/dist/instance-options-Dhhcnm3y.js +22 -0
  111. package/dist/instance-options-jARdwfPN.d.ts +11 -0
  112. package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
  113. package/dist/jwt/index.d.ts +10 -6
  114. package/dist/jwt/index.js +32 -13
  115. package/dist/kernel-_RRHmnMY.js +208 -0
  116. package/dist/kysely/index.d.ts +4 -3
  117. package/dist/kysely/index.js +3 -3
  118. package/dist/live-options-H2eG8dfJ.js +60 -0
  119. package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
  120. package/dist/load-DwJUafYN.js +2 -0
  121. package/dist/manifest-iaoBXHKc.js +783 -0
  122. package/dist/manifest-uDS9y5de.d.ts +206 -0
  123. package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
  124. package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
  125. package/dist/map-error-pgUWNNtG.js +23 -0
  126. package/dist/may-use-DndQ5tQ-.js +77 -0
  127. package/dist/mcp/index.d.ts +54 -22
  128. package/dist/mcp/index.js +218 -178
  129. package/dist/nest/index.d.ts +26 -31
  130. package/dist/nest/index.js +75 -84
  131. package/dist/next/client.d.ts +7 -8
  132. package/dist/next/client.js +11 -9
  133. package/dist/next/index.d.ts +30 -47
  134. package/dist/next/index.js +45 -60
  135. package/dist/next/plugin.d.ts +1 -1
  136. package/dist/next/plugin.js +32 -1
  137. package/dist/node/index.d.ts +9 -28
  138. package/dist/node/index.js +11 -43
  139. package/dist/openai/index.d.ts +6 -15
  140. package/dist/openai/index.js +7 -20
  141. package/dist/openapi/index.d.ts +87 -4
  142. package/dist/openapi/index.js +3 -3
  143. package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
  144. package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
  145. package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
  146. package/dist/{openapi-CwePaF7C.js → openapi-l0xYHkcv.js} +3 -3
  147. package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
  148. package/dist/orpc/index.d.ts +15 -28
  149. package/dist/orpc/index.js +74 -117
  150. package/dist/otel/index.d.ts +2 -2
  151. package/dist/parse-BuyjxhZV.js +53 -0
  152. package/dist/parse-local-manifest-BrMozJCo.js +36 -0
  153. package/dist/parse-local-manifest-JLnaBH0S.d.ts +10 -0
  154. package/dist/pdp/index.d.ts +2 -2
  155. package/dist/pdp/index.js +14 -127
  156. package/dist/{permdock-yoZ7EjxX.js → permdock-CbgvLnuo.js} +672 -149
  157. package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
  158. package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
  159. package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
  160. package/dist/{permissions-CofRqesP.js → permissions-RJrovw98.js} +3 -3
  161. package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
  162. package/dist/{policy-Cq2fB8Q5.d.ts → policy-D2W7uv19.d.ts} +2 -2
  163. package/dist/{policy-CInmNGkM.d.ts → policy-IB6yxpC3.d.ts} +351 -42
  164. package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
  165. package/dist/powersync-BylawD_U.js +540 -0
  166. package/dist/powersync-DliZK_-y.js +62 -0
  167. package/dist/powersync-e_AZrKbg.js +2 -0
  168. package/dist/prisma/index.d.ts +3 -2
  169. package/dist/prisma/index.js +45 -20
  170. package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
  171. package/dist/problem-details-DX075l9V.d.ts +7 -0
  172. package/dist/problem-details-_AMOYz-w.js +144 -0
  173. package/dist/{protected-BuPAycJT.d.ts → protected-BdnIEFkY.d.ts} +5 -4
  174. package/dist/protected-utU-SLuy.js +100 -0
  175. package/dist/protected-xAr24FEC.d.ts +40 -0
  176. package/dist/provider-CSQd7m92.js +52 -0
  177. package/dist/{provider-wTAUda2v.d.ts → provider-DZY281jO.d.ts} +1 -1
  178. package/dist/provider-store-Cfbvo4DE.js +43 -0
  179. package/dist/react/index.d.ts +7 -5
  180. package/dist/react/index.js +5 -4
  181. package/dist/react/provider-client.d.ts +1 -1
  182. package/dist/react/provider-client.js +1 -1
  183. package/dist/react-native/index.d.ts +166 -10
  184. package/dist/react-native/index.js +607 -85
  185. package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
  186. package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
  187. package/dist/replay-BsOyTrdV.js +28 -0
  188. package/dist/replay-CYyiLiwO.d.ts +5 -0
  189. package/dist/resource-ref-CaS9yVPi.js +20 -0
  190. package/dist/revocations-Bhr0aMIC.js +27 -0
  191. package/dist/{rls-BOFU3chG.js → rls-B4ur8nKQ.js} +8 -3
  192. package/dist/rls-DQtdgTHB.js +2521 -0
  193. package/dist/rls-fields-74oZPXWL.js +3582 -0
  194. package/dist/{rls-graph-DxQ39PJj.js → rls-graph-CHwx0V8q.js} +100 -36
  195. package/dist/{rls-import-CXV6LBlS.js → rls-import-BTFVk3jH.js} +7 -6
  196. package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-CN4TlJTO.js} +6 -5
  197. package/dist/rls-ownership-RuFqaqGz.js +843 -0
  198. package/dist/rls-shared-Cewd_-zI.js +495 -0
  199. package/dist/rls-verify-CVQTHTh5.js +746 -0
  200. package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
  201. package/dist/row-conditions-h2HythXQ.js +27 -0
  202. package/dist/rpc-DL9Sqvb1.js +89 -0
  203. package/dist/{run-CJ6UvS3a.js → run-DKDbM4Du.js} +31 -12
  204. package/dist/runtime-CB8gQFvS.js +11 -0
  205. package/dist/{saas-BRrZzJkM.js → saas-DhpJjnBA.js} +17 -7
  206. package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
  207. package/dist/scim/index.d.ts +1 -1
  208. package/dist/scim/index.js +1 -1
  209. package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
  210. package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
  211. package/dist/server/index.d.ts +22 -11
  212. package/dist/server/index.js +11 -8
  213. package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
  214. package/dist/shared-DRu8VFVM.js +123 -0
  215. package/dist/{sink-Cfr9-7YC.d.ts → sink-B1fZzIMf.d.ts} +1 -1
  216. package/dist/skills-Biq5uup3.js +192 -0
  217. package/dist/{skills-C_lpV4Jx.js → skills-Bx-U0irG.js} +10 -4
  218. package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
  219. package/dist/snapshot-cache-B-LxUahj.d.ts +45 -0
  220. package/dist/snapshot-cache-D6jLelln.js +44 -0
  221. package/dist/solid/index.d.ts +39 -9
  222. package/dist/solid/index.js +76 -85
  223. package/dist/sources-4p0-4xQm.js +545 -0
  224. package/dist/sources-BdOYLw9j.d.ts +192 -0
  225. package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
  226. package/dist/{src-CTNT-PBW.js → src-BDwEZWrZ.js} +149 -11
  227. package/dist/ssf/index.d.ts +3 -2
  228. package/dist/ssf/index.js +3 -29
  229. package/dist/store-DMAWwAJV.js +371 -0
  230. package/dist/{store-Bq90395i.d.ts → store-jOBYpiXC.d.ts} +13 -4
  231. package/dist/store-options-ByhZq1jV.js +716 -0
  232. package/dist/{stores-CkG2HrSg.js → stores-BT2pSCub.js} +10 -63
  233. package/dist/{stores-CvOnu_2T.d.ts → stores-C0IMQrGI.d.ts} +20 -9
  234. package/dist/{stream-BhMfZOwr.d.ts → stream-D1RXubw2.d.ts} +2 -2
  235. package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
  236. package/dist/subject-settings-BwBmCdTR.js +128 -0
  237. package/dist/supabase/index.d.ts +133 -6
  238. package/dist/supabase/index.js +4 -3
  239. package/dist/supabase/middleware.d.ts +32 -27
  240. package/dist/supabase/middleware.js +56 -22
  241. package/dist/{supabase-D8UlBA7Z.js → supabase-Boqb9a_Y.js} +3 -3
  242. package/dist/{supabase-DTxGtYdi.js → supabase-C0qESOa-.js} +347 -367
  243. package/dist/supabase-config-BpPXt3x1.js +472 -0
  244. package/dist/supabase-hook-6sYLXg_u.js +2 -0
  245. package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-CSLQ4zJ3.js} +1037 -705
  246. package/dist/supautils-Cn4R4cJ4.js +91 -0
  247. package/dist/svelte/PermissionBoundary.svelte +37 -0
  248. package/dist/svelte/Protected.svelte +8 -2
  249. package/dist/svelte/index.d.ts +9 -6
  250. package/dist/svelte/index.js +61 -7
  251. package/dist/svelte/runtime.d.ts +4 -3
  252. package/dist/svelte/runtime.js +4 -3
  253. package/dist/svelte/source.d.ts +9 -6
  254. package/dist/svelte/source.js +7 -4
  255. package/dist/terminal/index.d.ts +6 -14
  256. package/dist/terminal/index.js +44 -32
  257. package/dist/testing/index.d.ts +105 -16
  258. package/dist/testing/index.js +504 -40
  259. package/dist/testing/saas/index.d.ts +4 -4
  260. package/dist/testing/saas/index.js +2 -2
  261. package/dist/testing/saas/permissions.d.ts +1 -1
  262. package/dist/testing/saas/permissions.js +1 -1
  263. package/dist/token-CIWxJOCh.js +50 -0
  264. package/dist/trpc/index.d.ts +7 -26
  265. package/dist/trpc/index.js +17 -100
  266. package/dist/types-BnIEz1sU.d.ts +48 -0
  267. package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
  268. package/dist/{sources-DOpW5Ila.d.ts → types-C97IskBw.d.ts} +86 -127
  269. package/dist/types-CKNSyIf_.d.ts +52 -0
  270. package/dist/types-Cq_H8N_X.d.ts +197 -0
  271. package/dist/{types-D6Z6-rKJ.d.ts → types-DbjRN55U.d.ts} +273 -22
  272. package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
  273. package/dist/{types-BvBk1wgn.d.ts → types-DxiCGmmd.d.ts} +5 -3
  274. package/dist/{types-B9dmiiab.d.ts → types-QCuYJh4q.d.ts} +1 -1
  275. package/dist/{types-B8w5PFtS.d.ts → types-aqOHTHcp.d.ts} +17 -1
  276. package/dist/unplugin/index.d.ts +1 -1
  277. package/dist/unplugin/index.js +10 -9
  278. package/dist/usage-DorAJiU_.js +2 -0
  279. package/dist/{usage-1ozMubLY.js → usage-GTixvDDU.js} +2 -2
  280. package/dist/{usage-CUnK6Ou9.js → usage-ItS7nLcl.js} +225 -62
  281. package/dist/validation-error-Ba264OaJ.d.ts +26 -0
  282. package/dist/validation-error-CnjZ4t92.js +33 -0
  283. package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
  284. package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
  285. package/dist/version-BvacVTZR.js +17 -0
  286. package/dist/views-Soe7bGSC.js +95 -0
  287. package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
  288. package/dist/vue/index.d.ts +35 -13
  289. package/dist/vue/index.js +86 -93
  290. package/dist/watch-BwxLTYMZ.js +2 -0
  291. package/dist/watch-DVBJ9cBq.js +128 -0
  292. package/dist/webmcp/index.d.ts +2 -2
  293. package/dist/webmcp/index.js +7 -13
  294. package/package.json +62 -36
  295. package/schemas/approval-request-v1.json +175 -0
  296. package/schemas/catalog-v1.json +29 -1
  297. package/schemas/supabase-claims-v1.json +6 -1
  298. package/schemas/supabase-manifest-v1.json +150 -6
  299. package/skills/permdock/SKILL.md +7 -7
  300. package/skills/permdock-agents/SKILL.md +5 -5
  301. package/skills/permdock-agents/references/runtimes.md +12 -10
  302. package/skills/permdock-approvals/SKILL.md +4 -4
  303. package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
  304. package/skills/permdock-audit/SKILL.md +3 -3
  305. package/skills/permdock-credentials/SKILL.md +4 -4
  306. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  307. package/skills/permdock-data/SKILL.md +4 -4
  308. package/skills/permdock-data/references/queries-and-rls.md +14 -6
  309. package/skills/permdock-data/references/relationships.md +5 -3
  310. package/skills/permdock-tenancy/SKILL.md +9 -6
  311. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
  312. package/skills/permdock-wire/SKILL.md +4 -4
  313. package/skills/permdock-wire/references/adapters.md +42 -30
  314. package/skills/permdock-wire/references/policy-options.md +5 -3
  315. package/dist/approvers-aH0PJkmf.js +0 -20
  316. package/dist/catalog-idsHc0vo.js +0 -2
  317. package/dist/collect-B7_TIfmg.js +0 -49
  318. package/dist/collect-fRPAQIWb.js +0 -2
  319. package/dist/compile-CQbvyIBr.d.ts +0 -30
  320. package/dist/config-BPYmjTOp.js +0 -26
  321. package/dist/context-gtAwAILx.js +0 -6
  322. package/dist/create-BKF3dgFk.d.ts +0 -162
  323. package/dist/create-CSkhDU9T.js +0 -222
  324. package/dist/doctor-BGle8Gqi.js +0 -1314
  325. package/dist/helpers-DnSOrhB9.js +0 -682
  326. package/dist/index-fG6NSXlc.d.ts +0 -9
  327. package/dist/kernel-YOGCWNLf.js +0 -211
  328. package/dist/load-QOOm1z70.js +0 -2
  329. package/dist/manifest-DDQbC6K0.d.ts +0 -118
  330. package/dist/map-error-RJ3ZsUyA.js +0 -16
  331. package/dist/may-use-CnFEjVEp.js +0 -37
  332. package/dist/pg-4GJWDUxG.js +0 -953
  333. package/dist/plugin-4gr7IxFJ.js +0 -65
  334. package/dist/protected-B4K3BKoX.js +0 -138
  335. package/dist/protected-wY7nXhY9.d.ts +0 -23
  336. package/dist/provider-_wx46HpB.js +0 -48
  337. package/dist/rls-CJVja9Ww.js +0 -2119
  338. package/dist/rls-helpers-BxRuif0l.js +0 -1346
  339. package/dist/runtime-DP9ttFh1.js +0 -27
  340. package/dist/skills-Dx3QLnMY.js +0 -110
  341. package/dist/source-DoBBYJi2.js +0 -6
  342. package/dist/sources-DVHM3Mwq.js +0 -284
  343. package/dist/store-C6hFW6ta.js +0 -508
  344. package/dist/subject-settings-xt7V845g.js +0 -82
  345. package/dist/supabase-hook-DW-xP4hU.js +0 -2
  346. package/dist/types-DbWdEfcm.d.ts +0 -87
  347. package/dist/types-bva3i4Gf.d.ts +0 -98
  348. package/dist/types-i4BAOvdb.d.ts +0 -97
  349. package/dist/usage-PyEor6GA.js +0 -2
  350. package/dist/version-CnSh33Fj.js +0 -16
@@ -1,13 +1,15 @@
1
1
  import { n as isReadonlyArray, 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, f as isPermission, g as listPermissions, h as isSelfParented, i as findPermission, m as isRegistryTree, s as getRegistry, t as annotationsFor, w as ownKeys, x as assertSafeKey } from "./permissions-DC7GROPA.js";
4
- import { c as isConditionRef, l as isSqlFunctionField, n as isSubjectRef, o as isCondition, s as isConditionDate } from "./refs-ChLSxbST.js";
5
- import { n as isUserApprover, r as user, t as flattenApprovers } from "./approvers-aH0PJkmf.js";
6
- import { a as resolveScope, n as defineScopes } from "./scopes-cKVp_WTw.js";
7
- import { S as isRole, _ as roleScopeOf, a as authenticated, c as isGraphRelation, g as roleNameOf, m as relationStart, p as relationHops, r as asGrantee, s as flattenGrantee, w as listRoles } from "./grantee-Bv04_Vzf.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { D as ownKeys, T as isForbiddenKey, _ as listPermissions, f as isFieldRelation, g as isSelfParented, h as isRegistryTree, i as findPermission, p as isPermission, s as getRegistry, t as annotationsFor, w as assertSafeKey } from "./permissions-DVoF6dMt.js";
4
+ import { c as isConditionRef, l as isSqlFunctionField, n as isSubjectRef, o as isCondition, s as isConditionDate } from "./refs-KYb4ntaz.js";
5
+ import { c as isUserApprover, i as flattenApprovers, l as user, o as isAnyOfInput, r as approverLeaves, s as isPermissionApprover } from "./approvers-DT4AVyIg.js";
6
+ import { n as defineScopes, o as resolveScope } from "./scopes-CVdPrWN-.js";
8
7
  import { t as parseDuration } from "./duration-xK2jGFVc.js";
9
- import { g as sanitizeFields, l as relatesTo, n as normalizeValidity } from "./validity-D0uRmJKJ.js";
8
+ import { E as listRoles, a as authenticated, g as relationStart, h as relationHops, l as inheritCondition, r as asGrantee, s as flattenGrantee, u as isGraphRelation, v as roleNameOf, w as isRole, y as roleScopeOf } from "./grantee-Cv5Sogfv.js";
9
+ import { t as canonicalJson } from "./canonical-json-DemiK4Vp.js";
10
+ import { i as sanitizeFields } from "./fields-BMl1RxoX.js";
10
11
  import { n as sha256, t as bytesToBase64Url } from "./sha256-BO0swRXL.js";
12
+ import { f as relatesTo, h as scopeField, n as normalizeValidity, s as memberOfFields } from "./validity-uOp8UpYn.js";
11
13
  //#region src/conditions/opaque.ts
12
14
  function opaque(input) {
13
15
  return freezeDeep({
@@ -151,6 +153,15 @@ function normalizeSqlFunction(input) {
151
153
  twin
152
154
  });
153
155
  }
156
+ /** `{ session: … }` under `subject`; any other value is a comparison on a `subject` field. */
157
+ function isSubjectCondition(value) {
158
+ return value !== null && typeof value === "object" && !Array.isArray(value) && Object.hasOwn(value, "session");
159
+ }
160
+ function subjectCondition(value) {
161
+ const session = value["session"];
162
+ if (ownKeys(value).length !== 1 || session === null || typeof session !== "object" || ownKeys(session).length !== 1 || Reflect.get(session, "live") !== true) throw new TypeError("PermDock: a subject condition is { subject: { session: { live: true } } }");
163
+ return freezeDeep({ op: "liveSession" });
164
+ }
154
165
  function normalizeWhere(input) {
155
166
  if (isCondition(input)) {
156
167
  if (input.op === "sqlFunction") return collapse(normalizeSqlFunction(input));
@@ -187,6 +198,10 @@ function normalizeWhere(input) {
187
198
  }));
188
199
  continue;
189
200
  }
201
+ if (key === "subject" && isSubjectCondition(value)) {
202
+ parts.push(subjectCondition(value));
203
+ continue;
204
+ }
190
205
  parts.push(fieldCondition(key, value));
191
206
  }
192
207
  if (parts.length === 0) throw new Error("PermDock: empty condition");
@@ -413,15 +428,36 @@ function applyQuota(input) {
413
428
  }
414
429
  //#endregion
415
430
  //#region src/core/policy.ts
416
- /** Every approver a requirement names: `by`, each stage and `escalation.to`. */
431
+ /** Every approver a requirement names: `by`, each stage and its escalation, and `escalation.to`, inside `anyOf` groups too. */
417
432
  function approversOf(requirement) {
418
433
  return [
419
- ...flattenApprovers(requirement.by),
420
- ...(requirement.stages ?? []).flatMap((stage) => flattenApprovers(stage.by)),
421
- ...flattenApprovers(requirement.escalation?.to)
434
+ ...approverLeaves(requirement.by),
435
+ ...(requirement.stages ?? []).flatMap((stage) => approverLeaves(stage.by).concat(approverLeaves(stage.escalation?.to))),
436
+ ...approverLeaves(requirement.escalation?.to)
422
437
  ];
423
438
  }
424
439
  function asApprover(input) {
440
+ if (isPermissionApprover(input)) {
441
+ if (typeof input.permission !== "string" || input.permission === "") throw new Error("PermDock: a permission approver needs a permission key");
442
+ return Object.freeze({
443
+ kind: "permission",
444
+ permission: input.permission
445
+ });
446
+ }
447
+ if (isAnyOfInput(input)) {
448
+ if (!Array.isArray(input.of) || input.of.length === 0) throw new Error("PermDock: anyOf() needs at least one approver");
449
+ const of = input.of.map((item) => {
450
+ const normalized = asApprover(item);
451
+ const items = flattenApprovers(normalized);
452
+ if (items.length === 0) throw new Error("PermDock: an anyOf() item names no approver");
453
+ const [first] = items;
454
+ return isReadonlyArray(normalized) || first === void 0 ? items : first;
455
+ });
456
+ return Object.freeze({
457
+ kind: "any-of",
458
+ of: Object.freeze(of)
459
+ });
460
+ }
425
461
  if (isReadonlyArray(input)) {
426
462
  const items = [];
427
463
  for (const item of input) items.push(...flattenApprovers(asApprover(item)));
@@ -491,7 +527,8 @@ function normalizeStages(approval, mode, label) {
491
527
  if (flattenApprovers(by).length === 0) throw new Error(`PermDock: approval.stages[${index}].by on '${label}' names no approver`);
492
528
  return compact({
493
529
  by,
494
- quorum: stage.quorum
530
+ quorum: stage.quorum,
531
+ escalation: normalizeEscalation(stage.escalation, label)
495
532
  });
496
533
  });
497
534
  }
@@ -516,10 +553,13 @@ function delegationTarget(to, index) {
516
553
  if ("actor" in to) return { kind: to.actor };
517
554
  const target = compact({
518
555
  kind: to.kind,
519
- id: to.id
556
+ id: to.id,
557
+ client: to.client
520
558
  });
521
559
  if (typeof target.kind !== "string" || target.kind === "") throw new Error(`PermDock: delegations[${index}].to needs an actor kind, such as actor('eve')`);
522
560
  if (target.id !== void 0 && (typeof target.id !== "string" || target.id === "")) throw new Error(`PermDock: delegations[${index}].to.id must be a non-empty string`);
561
+ if (target.client !== void 0 && (typeof target.client !== "string" || target.client === "")) throw new Error(`PermDock: delegations[${index}].to.client must be a non-empty string`);
562
+ if (target.id !== void 0 && target.client !== void 0) throw new Error(`PermDock: delegations[${index}].to names both an id and a client; name one`);
523
563
  return target;
524
564
  }
525
565
  function normalizeDelegation(input, index, tree) {
@@ -527,7 +567,7 @@ function normalizeDelegation(input, index, tree) {
527
567
  const from = asGrantee(input.from);
528
568
  const items = flattenGrantee(from);
529
569
  if (items.length === 0) throw new Error(`PermDock: ${label}.from names nobody`);
530
- if (items.some((item) => item.kind === "relation")) throw new Error(`PermDock: ${label}.from names a relation; a delegation is matched without a row, so name a role or another subject-only grantee`);
570
+ if (items.some((item) => item.kind === "relation" || item.kind === "inherit")) throw new Error(`PermDock: ${label}.from names a relation or inherit(); a delegation is matched without a row, so name a role or another subject-only grantee`);
531
571
  if (items.some((item) => item.kind === "actor")) throw new Error(`PermDock: ${label}.from names an actor; the principal hands over, the actor is \`to\``);
532
572
  const leaves = /* @__PURE__ */ new Map();
533
573
  for (const leaf of input.permissions.flatMap((item) => flattenPermissions(item))) {
@@ -544,6 +584,30 @@ function normalizeDelegation(input, index, tree) {
544
584
  validity: normalizeValidity(input, label)
545
585
  });
546
586
  }
587
+ /** RFC 6749 section 3.3 `scope-token`: printable ASCII without space, `"` or `\`. */
588
+ function isScopeToken(value) {
589
+ return /^[!#-[\]-~]+$/u.test(value);
590
+ }
591
+ function normalizeOAuthScopes(input, tree) {
592
+ if (input === void 0) return [];
593
+ const own = new Set(listPermissions(tree).map((leaf) => leaf.scope));
594
+ return Object.entries(input).map(([scope, items]) => {
595
+ if (!isScopeToken(scope)) throw new Error(`PermDock: oauthScopes key '${scope}' is not an OAuth scope token`);
596
+ if (own.has(scope)) throw new Error(`PermDock: oauthScopes key '${scope}' is a permission's own scope`);
597
+ const leaves = /* @__PURE__ */ new Map();
598
+ for (const leaf of (Array.isArray(items) ? items : []).flatMap((item) => flattenPermissions(item))) {
599
+ if (findPermission(tree, leaf.key) === void 0) throw new Error(`PermDock: oauthScopes '${scope}' names unknown permission '${leaf.key}'`);
600
+ leaves.set(leaf.key, leaf);
601
+ }
602
+ if (leaves.size === 0) throw new Error(`PermDock: oauthScopes '${scope}' covers no permission`);
603
+ const sorted = [...leaves.values()].toSorted((a, b) => a.key.localeCompare(b.key));
604
+ return {
605
+ scope,
606
+ permissions: sorted.map((leaf) => leaf.key),
607
+ scopes: sorted.map((leaf) => leaf.scope)
608
+ };
609
+ });
610
+ }
547
611
  function resolveRoleScope(on) {
548
612
  if (on === void 0) return "global";
549
613
  if (typeof on === "string") {
@@ -556,6 +620,12 @@ function resolveRoleScope(on) {
556
620
  if (names.size !== 1 || resource === void 0) throw new Error("PermDock: role on: resource must name exactly one resource");
557
621
  return { resource };
558
622
  }
623
+ const GROUP = /^[a-z][a-z0-9_-]*$/u;
624
+ function grantGroup(group, key) {
625
+ if (group === void 0) return;
626
+ if (typeof group !== "string" || !GROUP.test(group) || group === "break-glass") throw new Error(`PermDock: group '${String(group)}' on ${key} must be lower case letters, digits, _ or -, start with a letter, and not be break-glass`);
627
+ return group;
628
+ }
559
629
  function makeGrant(permission, effect, condition) {
560
630
  const toInput = isClosure(condition) ? void 0 : condition?.to;
561
631
  const to = toInput === void 0 ? {
@@ -578,6 +648,7 @@ function makeGrant(permission, effect, condition) {
578
648
  assertLimit(condition?.limit, permission.key);
579
649
  const purpose = condition?.purpose === void 0 || condition.purpose.length === 0 ? void 0 : Object.freeze([...new Set(condition.purpose)]);
580
650
  const portable = condition?.limit === void 0 && purpose === void 0;
651
+ const requires = requiredKey(condition?.requires, permission, effect);
581
652
  return compact({
582
653
  permission,
583
654
  effect,
@@ -589,10 +660,20 @@ function makeGrant(permission, effect, condition) {
589
660
  limit: normalizeLimit(condition?.limit),
590
661
  fields: sanitizeFields(condition?.fields),
591
662
  name: condition?.name,
663
+ group: grantGroup(condition?.group, permission.key),
592
664
  purpose,
593
- validity: normalizeValidity(condition ?? {}, permission.key)
665
+ validity: normalizeValidity(condition ?? {}, permission.key),
666
+ requires
594
667
  });
595
668
  }
669
+ function requiredKey(input, permission, effect) {
670
+ if (input === void 0) return;
671
+ if (effect !== "allow") throw new Error(`PermDock: requires is allowed on an allow only; '${permission.key}' is a deny`);
672
+ if (permission.kind !== "instance") throw new Error(`PermDock: requires on '${permission.key}' needs an instance action; a collection action has no row whose scope it can check`);
673
+ const list = Array.isArray(input) ? input : [input];
674
+ if (list.length === 0 || !list.every(isPermission)) throw new TypeError(`PermDock: requires on '${permission.key}' must be a permission leaf or a non-empty list of them`);
675
+ return Object.freeze([...new Set(list.map((leaf) => leaf.key))]);
676
+ }
596
677
  function allow(permission, condition) {
597
678
  const grants = flattenPermissions(permission).map((leaf) => makeGrant(leaf, "allow", condition));
598
679
  return sole(grants) ?? grants;
@@ -702,10 +783,41 @@ function roleRules(roleName, scope, options) {
702
783
  for: nameList(roleName, "for", options?.for)
703
784
  });
704
785
  }
705
- function canonicalPolicy(grants, delegations) {
786
+ function canonicalPolicy(grants, delegations, levels) {
706
787
  const payload = canonicalGrants(grants);
707
- if (delegations.length === 0) return payload;
708
- return `${payload}\n${JSON.stringify(delegations)}`;
788
+ const withDelegations = delegations.length === 0 ? payload : `${payload}\n${JSON.stringify(delegations)}`;
789
+ return levels === void 0 ? withDelegations : `${withDelegations}\nlevels:${canonicalJson(levels)}`;
790
+ }
791
+ function normalizeLevels(resources) {
792
+ const out = {};
793
+ for (const node of resources.values()) {
794
+ const entries = Object.entries({ ...node.levels });
795
+ if (entries.length === 0) continue;
796
+ const levels = {};
797
+ for (const [name, input] of entries) try {
798
+ levels[name] = Object.keys(input).length === 0 ? {
799
+ op: "and",
800
+ conditions: []
801
+ } : normalizeWhere(input);
802
+ } catch (error) {
803
+ throw new Error(`PermDock: level '${name}' on '${node.name}' is not a valid condition`, { cause: error });
804
+ }
805
+ out[node.name] = levels;
806
+ }
807
+ return Object.keys(out).length === 0 ? void 0 : freezeDeep(out);
808
+ }
809
+ /** Declared levels of `resource` with their conditions, in declaration order. */
810
+ function policyLevels(policy, resource) {
811
+ const levels = policy.levels;
812
+ return levels !== void 0 && Object.hasOwn(levels, resource) ? Object.entries({ ...levels[resource] }) : [];
813
+ }
814
+ /** The condition of `level` on `resource`, if the policy declares it. */
815
+ function levelCondition(policy, resource, level) {
816
+ return policyLevels(policy, resource).find(([name]) => name === level)?.[1];
817
+ }
818
+ /** Declared level names of `resource`, in declaration order. */
819
+ function levelNames(policy, resource) {
820
+ return policyLevels(policy, resource).map(([name]) => name);
709
821
  }
710
822
  function canonicalGrants(grants) {
711
823
  const payload = grants.map((grant) => ({
@@ -723,7 +835,8 @@ function canonicalGrants(grants) {
723
835
  purpose: grant.purpose,
724
836
  breakGlass: grant.breakGlass,
725
837
  viaOnly: grant.viaOnly,
726
- validity: grant.validity
838
+ validity: grant.validity,
839
+ requires: grant.requires
727
840
  }));
728
841
  return JSON.stringify(payload);
729
842
  }
@@ -755,6 +868,29 @@ function assertRelationGrants(grants, resources) {
755
868
  if (relationStart(item, row, target) === void 0) throw new Error(item.through === void 0 ? `PermDock: ${label} is on ${target.name}, not ${grant.permission.resource}; add through: 'parent'` : `PermDock: ${label}: ${grant.permission.resource} has no parent on ${target.name}`);
756
869
  }
757
870
  }
871
+ function assertInheritGrants(grants, resources, tree) {
872
+ const keys = new Set(listPermissions(tree).map((leaf) => leaf.key));
873
+ const edges = /* @__PURE__ */ new Map();
874
+ for (const grant of grants) for (const item of flattenGrantee(grant.to)) {
875
+ if (item.kind !== "inherit") continue;
876
+ const label = `grant ${grant.permission.key} inherit '${item.permission}'`;
877
+ if (grant.effect !== "allow") throw new Error(`PermDock: ${label}: inherit() is allowed on an allow only`);
878
+ if (grant.permission.kind !== "instance") throw new Error(`PermDock: ${label}: inherit() needs an instance action; a collection action has no row to follow`);
879
+ if (!keys.has(item.permission)) throw new Error(`PermDock: ${label}: the policy does not declare it`);
880
+ if (inheritCondition(item, resources.get(grant.permission.resource), resources) === void 0) throw new Error(item.through === "parent" ? `PermDock: ${label}: ${grant.permission.resource} has no parent on ${item.resource}` : `PermDock: ${label}: the links [${item.through.join(", ")}] from ${grant.permission.resource} do not end on ${item.resource}`);
881
+ const next = edges.get(grant.permission.key) ?? /* @__PURE__ */ new Set();
882
+ next.add(item.permission);
883
+ edges.set(grant.permission.key, next);
884
+ }
885
+ const done = /* @__PURE__ */ new Set();
886
+ const visit = (key, path) => {
887
+ if (path.includes(key)) throw new Error(`PermDock: inherit() grants form a cycle: ${[...path.slice(path.indexOf(key)), key].join(" -> ")}`);
888
+ if (done.has(key)) return;
889
+ for (const target of edges.get(key) ?? []) visit(target, [...path, key]);
890
+ done.add(key);
891
+ };
892
+ for (const key of edges.keys()) visit(key, []);
893
+ }
758
894
  function scopeOfGrant(scope, declared) {
759
895
  if (typeof scope !== "string" || scope === "global") return scope;
760
896
  const resolved = resolveScope(declared, scope);
@@ -803,10 +939,19 @@ function assertScopeKeys(grants, scopes, resources) {
803
939
  if (typeof grant.scope !== "string" || grant.scope === "global" || grant.permission.kind !== "instance") continue;
804
940
  const key = scopes.find((scope) => scope.name === grant.scope)?.key;
805
941
  const node = resources.get(grant.permission.resource);
806
- if (key === void 0 || node === void 0 || relatesTo(node, key, grant.scope, scopes)) continue;
942
+ if (key === void 0 || node === void 0) continue;
943
+ const fields = memberOfFields(node, grant.scope, scopes);
944
+ if (fields.length > 1 && !fields.includes(key)) throw new Error(`PermDock: resource '${node.name}' declares several memberOf relations to '${grant.scope}' (${fields.join(", ")}); name the one holding the instance with the scope's key '${key}'`);
945
+ const field = scopeField(node, grant.scope, scopes);
946
+ if (field !== void 0 && relatesTo(node, field, grant.scope, scopes)) continue;
807
947
  throw new Error(`PermDock: resource '${node.name}' needs relations: { <name>: { field: '${key}', memberOf: '${grant.scope}' } } for ${grant.permission.key} on '${grant.scope}' roles`);
808
948
  }
809
949
  }
950
+ /** A `requires` names a permission the policy declares. */
951
+ function assertRequires(grants, tree) {
952
+ const keys = new Set(listPermissions(tree).map((leaf) => leaf.key));
953
+ for (const grant of grants) for (const key of grant.requires ?? []) if (!keys.has(key)) throw new Error(`PermDock: '${grant.permission.key}' requires '${key}', which the policy does not declare`);
954
+ }
810
955
  /**
811
956
  * A stale-on-change approval needs a row to version: an instance permission
812
957
  * whose resource declares `version`.
@@ -909,8 +1054,12 @@ function definePolicy(permissions, options) {
909
1054
  assertApprovalVersions(grants, resources);
910
1055
  assertApprovalRelations(grants, resources);
911
1056
  assertRelationGrants(grants, resources);
1057
+ assertRequires(grants, tree);
1058
+ assertInheritGrants(grants, resources, tree);
912
1059
  const delegations = (options.delegations ?? []).map((item, index) => normalizeDelegation(item, index, tree));
913
- const fingerprint = bytesToBase64Url(sha256(canonicalPolicy(grants, delegations)));
1060
+ const levels = normalizeLevels(resources);
1061
+ const oauthScopes = normalizeOAuthScopes(options.oauthScopes, tree);
1062
+ const fingerprint = bytesToBase64Url(sha256(oauthScopes.length === 0 ? canonicalPolicy(grants, delegations, levels) : `${canonicalPolicy(grants, delegations, levels)}\noauthScopes:${canonicalJson(oauthScopes)}`));
914
1063
  const hostable = [...new Set((options.hostable ?? []).flatMap((item) => flattenPermissions(item).map((leaf) => leaf.key)))].toSorted();
915
1064
  const fresh = [...new Set((options.fresh ?? []).flatMap((item) => flattenPermissions(item).map((leaf) => leaf.key)))].toSorted();
916
1065
  return freezeDeep({
@@ -931,6 +1080,8 @@ function definePolicy(permissions, options) {
931
1080
  hostable,
932
1081
  fresh,
933
1082
  delegations: delegations.length === 0 ? void 0 : delegations,
1083
+ levels,
1084
+ oauthScopes: oauthScopes.length === 0 ? void 0 : oauthScopes,
934
1085
  index: indexPolicy(roles, grants, vocabulary)
935
1086
  });
936
1087
  }
@@ -968,4 +1119,4 @@ function separationConflicts(policy, memberships) {
968
1119
  return conflicts;
969
1120
  }
970
1121
  //#endregion
971
- export { assertSqlFunctionArg as _, definePolicy as a, indexPolicy as c, role as d, separationConflicts as f, assertPortableTwin as g, normalizeWhere as h, declaredRoleNames as i, normalizeApproval as l, memoryLimitStore as m, assertApprovalRelations as n, deny as o, applyQuota as p, completeGrant as r, grantList as s, allow as t, normalizeAssurance as u, assertSqlFunctionName as v, opaque as y };
1122
+ export { opaque as S, memoryLimitStore as _, definePolicy as a, assertSqlFunctionArg as b, indexPolicy as c, normalizeApproval as d, normalizeAssurance as f, applyQuota as g, separationConflicts as h, declaredRoleNames as i, levelCondition as l, role as m, assertApprovalRelations as n, deny as o, policyLevels as p, completeGrant as r, grantList as s, allow as t, levelNames as u, normalizeWhere as v, assertSqlFunctionName as x, assertPortableTwin as y };