permdock 0.7.0 → 0.9.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 (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-BcudBQOF.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
  35. package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
  45. package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
  46. package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
  52. package/dist/catalog-D3oS2GH3.js +1 -0
  53. package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
  54. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  55. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  56. package/dist/catalog-operations-DeHTrJSV.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
  77. package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
  78. package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
  79. package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
  80. package/dist/collect-D-eroIfV.js +1 -0
  81. package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
  98. package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
  99. package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
  100. package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
  101. package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
  102. package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
  103. package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-DHldhVUv.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
  127. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  128. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
  130. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
  131. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-BFfzZSLH.js +58 -0
  150. package/dist/gen-BtfFWGbz.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  164. package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
  169. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  170. package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
  171. package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
  172. package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
  173. package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
  174. package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
  175. package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +34 -34
  178. package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
  179. package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +79 -26
  212. package/dist/next/index.js +121 -10
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
  223. package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
  224. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
  232. package/dist/output-files-BHOIlrfD.js +1 -0
  233. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  234. package/dist/ownership-DA5YdYTm.js +1059 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
  245. package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
  262. package/dist/powersync-B701tvhE.js +1 -0
  263. package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
  264. package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-D8x73IGm.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
  282. package/dist/pull-C3EEGzSw.js +1 -0
  283. package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
  284. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
  285. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-ConCSj1y.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
  306. package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
  310. package/dist/run-Ck22anC2.js +1 -0
  311. package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
  333. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  334. package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
  335. package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  344. package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  351. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-DZJvxFIZ.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
  357. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
  368. package/dist/supabase-hook-C0FyEACZ.js +1 -0
  369. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
  370. package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +225 -141
  394. package/dist/testing/index.js +352 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
  407. package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
  408. package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
  409. package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
  410. package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
  411. package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
  412. package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
  413. package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
  414. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  415. package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
  416. package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
  417. package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
  418. package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
  419. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  420. package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
  421. package/dist/types-tQB2CEnY.d.ts +262 -0
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-0hjZPIRX.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
  441. package/dist/watch-ClLuO2TL.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
  452. package/package.json +8 -8
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +16 -23
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { t as defineLeaf } from "./command-L8EstFNm.js";
2
- import { i as dryRunFlag } from "./flags-aaeRAdiD.js";
2
+ import { i as dryRunFlag } from "./flags-DXjoTVbS.js";
3
3
  //#region src/cli/commands/codemod.ts
4
4
  const codemod = defineLeaf({
5
5
  positionals: [{
@@ -7,7 +7,7 @@ const codemod = defineLeaf({
7
7
  description: "The release to migrate to (0.5)",
8
8
  required: true,
9
9
  async complete() {
10
- return (await import("./codemod-BP6n8N9L.js")).codemodVersions();
10
+ return (await import("./codemod-Bv5i-Mzo.js")).codemodVersions();
11
11
  }
12
12
  }, {
13
13
  name: "paths",
@@ -22,8 +22,7 @@ const codemod = defineLeaf({
22
22
  }
23
23
  },
24
24
  async run(ctx, { flags, args, rest }) {
25
- const { runCodemod } = await import("./codemod-BP6n8N9L.js");
26
- return runCodemod({
25
+ return (await import("./codemod-Bv5i-Mzo.js")).runCodemod({
27
26
  cwd: ctx.cwd,
28
27
  version: args["version"],
29
28
  paths: rest,
@@ -1,6 +1,6 @@
1
- import { n as CliError } from "./errors-DpP_U6Bf.js";
1
+ import { n as CliError } from "./errors-Vpu6rKHl.js";
2
2
  import { t as defineLeaf } from "./command-L8EstFNm.js";
3
- import { o as fileOut, t as checkFlag } from "./flags-aaeRAdiD.js";
3
+ import { o as fileOut, t as checkFlag } from "./flags-DXjoTVbS.js";
4
4
  //#region src/cli/commands/collect.ts
5
5
  const collect = defineLeaf({
6
6
  flags: {
@@ -29,10 +29,9 @@ const collect = defineLeaf({
29
29
  };
30
30
  if (flags.watch) {
31
31
  if (flags.check) throw new CliError("usage", "collect: --watch writes the catalog; drop --check", { code: "invalid_value" });
32
- const { watchCollect } = await import("./watch-Bd9mx3rd.js");
33
- return watchCollect(ctx, overrides);
32
+ return (await import("./watch-ClLuO2TL.js")).watchCollect(ctx, overrides);
34
33
  }
35
- const result = await (await import("./collect-k_Dulxr5.js")).runCollect({
34
+ const result = await (await import("./collect-D-eroIfV.js")).runCollect({
36
35
  cwd: ctx.cwd,
37
36
  config: ctx.config,
38
37
  collect: overrides,
@@ -0,0 +1 @@
1
+ export { r as runCollect } from "./collect-WCl8cJQV.js";
@@ -1,65 +1,18 @@
1
- import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { k as isOperationEffect } from "./src-DLFrtrrC.js";
3
- import { o as isPermission } from "./permission-registry-DpPtSKNZ.js";
4
- import { r as isOperationRisk } from "./permissions-CyH2MV_B.js";
5
- import { a as describeError, i as configError } from "./errors-DpP_U6Bf.js";
6
- import { a as rel, r as listSourceFiles, s as writeFileEnsuringDir, t as defaultSrcPath } from "./files-D_JIzUrP.js";
7
- import { n as catalogForCompare, o as formatCatalogJson, r as catalogForDrift, t as buildCatalog } from "./catalog-doc-CV9s6B1S.js";
8
- import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DxroEzH1.js";
1
+ import { a as describeError } from "./errors-Vpu6rKHl.js";
2
+ import { a as rel, r as listSourceFiles, s as writeFileEnsuringDir, t as defaultSrcPath } from "./files-BSjrtIHw.js";
3
+ import { n as catalogForCompare, o as formatCatalogJson, r as catalogForDrift, t as buildCatalog } from "./catalog-doc-DjMKzJp9.js";
4
+ import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
5
+ import { t as loadConfiguredOperations } from "./catalog-operations-DeHTrJSV.js";
9
6
  import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
10
- import { t as shortDiff } from "./text-diff-DhITNCnD.js";
7
+ import { t as shortDiff } from "./text-diff-BtfSmdUo.js";
11
8
  import { existsSync, readFileSync } from "node:fs";
12
9
  import { dirname, relative, resolve } from "node:path";
13
10
  import { Visitor, parseSync, visitorKeys } from "oxc-parser";
14
- //#region src/cli/catalog-operations.ts
15
- function metaOf(name, value) {
16
- const fail = (field) => {
17
- throw configError(`PermDock CLI: operations.${name}.meta${field} is invalid`);
18
- };
19
- if (!isRecord(value)) return fail("");
20
- const { risk, effects, title } = value;
21
- if (risk !== void 0 && !isOperationRisk(risk)) return fail(".risk");
22
- if (effects !== void 0 && (!Array.isArray(effects) || !effects.every(isOperationEffect))) return fail(".effects");
23
- if (title !== void 0 && typeof title !== "string") return fail(".title");
24
- return {
25
- ...risk === void 0 ? {} : { risk },
26
- ...effects === void 0 ? {} : { effects },
27
- ...title === void 0 ? {} : { title }
28
- };
29
- }
11
+ //#region src/cli/scan.ts
30
12
  /**
31
- * The catalog entries of a `defineOperations` map, in definition order.
32
- * Throws for a value that is not one, such as a module that exports the
33
- * definitions object instead of the map.
13
+ * oxc reports recoverable problems as `Warning` or `Advice`; only `Error`
14
+ * leaves the program incomplete.
34
15
  */
35
- function catalogOperations(value) {
36
- if (!isRecord(value)) throw configError("PermDock CLI: operations export is not an operation map");
37
- const out = [];
38
- for (const name of Object.keys(value)) {
39
- const operation = value[name];
40
- if (!isRecord(operation) || operation["name"] !== name || !isPermission(operation["permission"])) throw configError(`PermDock CLI: operations.${name} is not an operation; export the defineOperations result`);
41
- const results = operation["results"];
42
- if (results !== void 0 && !isPermission(results)) throw configError(`PermDock CLI: operations.${name}.results is not a permission`);
43
- out.push({
44
- name,
45
- permission: operation["permission"].key,
46
- ...results === void 0 ? {} : { results: results.key },
47
- meta: metaOf(name, operation["meta"])
48
- });
49
- }
50
- return out;
51
- }
52
- /** The configured operations module's catalog entries; `undefined` without one. Throws when it is missing or does not load. */
53
- async function loadConfiguredOperations(cwd, path, options) {
54
- if (path === void 0) return;
55
- const abs = resolve(cwd, path);
56
- if (!existsSync(abs)) throw configError(`PermDock CLI: operations module not found: ${rel(cwd, abs)}`);
57
- const mod = await loadModule(abs, options);
58
- return catalogOperations(pickNamed(mod, ["operations"]));
59
- }
60
- //#endregion
61
- //#region src/cli/scan.ts
62
- /** oxc reports recoverable problems as `Warning` or `Advice`; only `Error` leaves the program incomplete. */
63
16
  const PARSE_ERRORS = /* @__PURE__ */ new Set(["Error"]);
64
17
  const CHECK_CALLS = /* @__PURE__ */ new Set([
65
18
  "can",
@@ -72,6 +25,7 @@ const CHECK_CALLS = /* @__PURE__ */ new Set([
72
25
  "usePermission",
73
26
  "getPermission",
74
27
  "requirePermission",
28
+ "protectAction",
75
29
  "protect",
76
30
  "allow",
77
31
  "deny",
@@ -159,7 +113,7 @@ function scanSources(cwd, files, knownKeys) {
159
113
  function includeOf(options, isRoot) {
160
114
  if (options?.type !== "ObjectExpression") return options === void 0 ? void 0 : null;
161
115
  const property = options.properties?.find((item) => item.key?.name === "include");
162
- if (property === void 0) return options.properties?.some((item) => item.type === "SpreadElement") ? null : void 0;
116
+ if (property === void 0) return options.properties?.some((item) => item.type === "SpreadElement") === true ? null : void 0;
163
117
  const list = property.value;
164
118
  if (list?.type !== "ArrayExpression") return null;
165
119
  const keys = [];
@@ -179,7 +133,10 @@ function recordImport(node, roots, definitions) {
179
133
  function isDefinePermissions(node) {
180
134
  return node?.type === "CallExpression" && calleeName(node.callee) === "definePermissions";
181
135
  }
182
- /** An import binding of a permission tree: by its imported name, or a default import named `permissions`. */
136
+ /**
137
+ * An import binding of a permission tree: by its imported name, or a default
138
+ * import named `permissions`.
139
+ */
183
140
  function importsRoot(spec, definitions) {
184
141
  if (spec.type === "ImportSpecifier") {
185
142
  const value = spec.imported?.value;
@@ -234,7 +191,10 @@ const FUNCTION_SCOPES = /* @__PURE__ */ new Set([
234
191
  "FunctionExpression",
235
192
  "ArrowFunctionExpression"
236
193
  ]);
237
- /** The names a scope node declares, each with whether it is a permission tree; `undefined` for a node that opens no scope. */
194
+ /**
195
+ * The names a scope node declares, each with whether it is a permission tree;
196
+ * `undefined` for a node that opens no scope.
197
+ */
238
198
  function bindingsOf(node, definitions) {
239
199
  const bindings = /* @__PURE__ */ new Map();
240
200
  const type = node.type;
@@ -420,7 +380,10 @@ function collectObjectKeys(node, into) {
420
380
  if (typeof key?.value === "string") into.add(key.value);
421
381
  }
422
382
  }
423
- /** Every node in source order, with its parent: Oxc nodes carry none, so enter and exit keep a stack. */
383
+ /**
384
+ * Every node in source order, with its parent: Oxc nodes carry none, so enter
385
+ * and exit keep a stack.
386
+ */
424
387
  function walk(program, visit) {
425
388
  const stack = [];
426
389
  const handlers = {};
@@ -553,14 +516,14 @@ function guessPermissions(cwd, srcPath) {
553
516
  return [
554
517
  "src/permissions.ts",
555
518
  "permissions.ts",
556
- ...srcPath.map((entry) => `${entry.replace(/\/$/, "")}/permissions.ts`)
519
+ ...srcPath.map((entry) => `${entry.replace(/\/$/u, "")}/permissions.ts`)
557
520
  ].find((file) => existsSync(resolve(cwd, file)));
558
521
  }
559
522
  function barrelFile(barrel) {
560
523
  return barrel === true ? "src/permissions.generated.ts" : barrel;
561
524
  }
562
525
  function writeBarrel(abs, permissionsAbs) {
563
- const specifier = relative(dirname(abs), permissionsAbs).replace(/\\/gu, "/").replace(/\.tsx?$/u, ".js");
526
+ const specifier = relative(dirname(abs), permissionsAbs).replaceAll("\\", "/").replace(/\.tsx?$/u, ".js");
564
527
  const body = `// @generated by permdock — do not edit
565
528
  import { mergePermissions } from 'permdock'
566
529
  import { permissions as collected } from '${specifier.startsWith(".") ? specifier : `./${specifier}`}'
@@ -570,4 +533,4 @@ export const permissions = mergePermissions(collected)
570
533
  writeFileEnsuringDir(abs, body);
571
534
  }
572
535
  //#endregion
573
- export { loadConfiguredOperations as a, scanSources as i, guessPermissions as n, runCollect as r, barrelFile as t };
536
+ export { scanSources as i, guessPermissions as n, runCollect as r, barrelFile as t };
@@ -1,7 +1,7 @@
1
1
  //#region src/core/compare.ts
2
2
  /**
3
- * Orders strings by UTF-16 code unit, the same in every locale and runtime,
4
- * so sorted output is byte-stable where `localeCompare` would follow the ICU
3
+ * Orders strings by UTF-16 code unit, the same in every locale and runtime, so
4
+ * sorted output is byte-stable where `localeCompare` would follow the ICU
5
5
  * build.
6
6
  */
7
7
  function byCodePoint(a, b) {
@@ -1,3 +1,3 @@
1
- import { n as GraphSqlPart, r as RelationsMapping, t as GraphSql } from "../graph-sql-B-dsAT6j.js";
2
- import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-COM2VKuN.js";
1
+ import { n as GraphSqlPart, r as RelationsMapping, t as GraphSql } from "../graph-sql-BwFC4Qjs.js";
2
+ import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-BEklRUYo.js";
3
3
  export { type CompileWhereOptions, type CompiledCompare, type CompiledExists, type CompiledSql, type CompiledWhere, type GraphSql, type GraphSqlPart, type MembershipTable, type MembershipsMapping, type RelationsMapping, compileWhere, escapeLike };
@@ -1 +1 @@
1
- export { t as compileWhere, n as escapeLike } from "../compile-BAEO5bOk.js";
1
+ export { n as compileWhere, r as escapeLike } from "../compile-EzEMB-7v.js";
@@ -1,22 +1,31 @@
1
- import { Rt as Instant, fn as Scope, lr as Subject, mr as Condition } from "./policy-types-B-F-qAZk.js";
2
- import { b as ResourceNode } from "./permission-types-DhNEmoRG.js";
3
- import { u as WhereResult } from "./permdock-Dco6dyCK.js";
4
- import { r as RelationsMapping, t as GraphSql } from "./graph-sql-B-dsAT6j.js";
1
+ import { Wt as Instant, br as Condition, hr as Subject, vn as Scope } from "./policy-types-DGIO_gxq.js";
2
+ import { b as ResourceNode } from "./permission-types-CAY-GU7e.js";
3
+ import { f as WhereResult } from "./permdock-CprAPN3w.js";
4
+ import { r as RelationsMapping, t as GraphSql } from "./graph-sql-BwFC4Qjs.js";
5
5
  //#region src/conditions/compile.d.ts
6
6
  type MembershipTable = {
7
7
  readonly table: string;
8
8
  readonly user: string;
9
9
  readonly role: string;
10
- /** Per scope name, the column holding that scope's id (the row's own scope and its ancestors). */
10
+ /**
11
+ * Per scope name, the column holding that scope's id (the row's own scope and
12
+ * its ancestors).
13
+ */
11
14
  readonly columns?: Readonly<Record<string, string>>;
12
15
  /** Column of the first scope's id; shorthand for `columns[<first scope>]`. */
13
16
  readonly tenant?: string;
14
17
  /** Column of the second scope's id; shorthand for `columns[<second scope>]`. */
15
18
  readonly team?: string;
16
19
  readonly id?: string;
17
- /** Column naming the membership's resource, when one table holds several kinds. */
20
+ /**
21
+ * Column naming the membership's resource, when one table holds several
22
+ * kinds.
23
+ */
18
24
  readonly resource?: string;
19
- /** Column holding the membership kind (`Membership.via`); roles with `for` need it. */
25
+ /**
26
+ * Column holding the membership kind (`Membership.via`); roles with `for`
27
+ * need it.
28
+ */
20
29
  readonly via?: string;
21
30
  /** Unix seconds, like `Membership.expiresAt`; `null` never expires. */
22
31
  readonly expiresAt?: string;
@@ -33,9 +42,15 @@ type MembershipsMapping = {
33
42
  type CompileWhereOptions = {
34
43
  readonly subject?: Subject;
35
44
  readonly memberships?: MembershipsMapping;
36
- /** The clock membership expiry is read at; a `Temporal.Instant` fits. Defaults to the current time. */
45
+ /**
46
+ * The clock membership expiry is read at; a `Temporal.Instant` fits. Defaults
47
+ * to the current time.
48
+ */
37
49
  readonly now?: Instant;
38
- /** The policy's scopes; `where()` results carry them. Defaults to the implicit `tenant` / `team` pair. */
50
+ /**
51
+ * The policy's scopes; `where()` results carry them. Defaults to the implicit
52
+ * `tenant` / `team` pair.
53
+ */
39
54
  readonly scopes?: readonly Scope[];
40
55
  /** Where the relation graph lives; without it a `related` node is refused. */
41
56
  readonly relations?: RelationsMapping;
@@ -61,7 +76,10 @@ type CompiledExists = {
61
76
  readonly expiresAt?: string;
62
77
  /** Unix seconds the `expiresAt` column is compared against. */
63
78
  readonly now: number;
64
- /** A membership row matches when this column is `null` or equals `tenantValue`. */
79
+ /**
80
+ * A membership row matches when this column is `null` or equals
81
+ * `tenantValue`.
82
+ */
65
83
  readonly tenantColumn?: string;
66
84
  readonly tenantValue?: string;
67
85
  readonly resourceColumn?: string;
@@ -82,14 +100,20 @@ type CompiledWhere = {
82
100
  readonly kind: "not";
83
101
  readonly item: CompiledWhere;
84
102
  } | CompiledExists | CompiledSql;
85
- /** A Postgres boolean over the row that is never NULL: a `related` node's subquery. */
103
+ /**
104
+ * A Postgres boolean over the row that is never NULL: a `related` node's
105
+ * subquery.
106
+ */
86
107
  type CompiledSql = {
87
108
  readonly kind: "sql";
88
109
  readonly parts: GraphSql;
89
110
  /** What a `{ subject: true }` part binds. */
90
111
  readonly subject: string;
91
112
  };
92
- /** A `contains` pattern for `LIKE`: `%`, `_` and the escape itself match literally. */
113
+ /**
114
+ * A `contains` pattern for `LIKE`: `%`, `_` and the escape itself match
115
+ * literally.
116
+ */
93
117
  declare function escapeLike(value: string): string;
94
118
  declare function compileWhere(input: Condition | WhereResult, options?: CompileWhereOptions): CompiledWhere;
95
119
  //#endregion
@@ -1,12 +1,12 @@
1
1
  import { a as sole, n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
- import { t as assertSafeKey } from "./paths-DXSHAMIa.js";
3
- import { a as resolveConditionRef, c as isConditionDate, d as parentHop, l as isConditionRef } from "./refs-CNJBiTFo.js";
4
- import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
5
- import { t as expiredAt } from "./expiry-D4_YKRKD.js";
6
- import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, o as groupEntries, p as restrictedFor, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
7
- import { o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
8
- import { f as scopeList, h as tenantOf, l as rootScope, m as subjectMemberships, s as resolveScope, u as scopeChain } from "./scopes-BHsc-wp-.js";
9
- import { t as isoInstant } from "./instant-BluqDvyS.js";
2
+ import { t as assertSafeKey } from "./paths-CUvURzHp.js";
3
+ import { a as resolveConditionRef, c as isConditionDate, d as parentHop, l as isConditionRef } from "./refs-C8BKxc_e.js";
4
+ import { n as PermDockValidationError } from "./validation-error-CYg2kJEw.js";
5
+ import { t as expiredAt } from "./expiry-6XByK0dm.js";
6
+ import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, o as groupEntries, p as restrictedFor, u as isPrincipalRelation } from "./resource-relations-8-pCScBO.js";
7
+ import { o as epochSeconds, t as INVALID_NOW } from "./time-nR1JesoH.js";
8
+ import { f as scopeList, h as tenantOf, l as rootScope, m as subjectMemberships, s as resolveScope, u as scopeChain } from "./scopes-0Up_UA2t.js";
9
+ import { t as isoInstant } from "./instant-DK3Iz83e.js";
10
10
  //#region src/conditions/graph-sql.ts
11
11
  /** A Postgres identifier, schema-qualified names split on `.`. */
12
12
  function quoteSqlName(name) {
@@ -49,7 +49,10 @@ function edgeRowFilter(spec, alias) {
49
49
  function groupHolders(build, resource, relation) {
50
50
  return build.options.holders?.(resource, relation) ?? holderIds(build, resource, relation);
51
51
  }
52
- /** Who a row of the edge names, when it is not a group of the edge's own resource. */
52
+ /**
53
+ * Who a row of the edge names, when it is not a group of the edge's own
54
+ * resource.
55
+ */
53
56
  function edgeHolderFilter(build, node, spec, alias) {
54
57
  const holder = col(alias, spec.subject ?? "user_id");
55
58
  const groups = spec.groups;
@@ -79,14 +82,17 @@ function edgeHolderFilter(build, node, spec, alias) {
79
82
  parts.push(text(")"));
80
83
  return parts;
81
84
  }
82
- /** The nested-group step of an edge whose groups include its own resource: the row names a group of `node`. */
85
+ /**
86
+ * The nested-group step of an edge whose groups include its own resource: the
87
+ * row names a group of `node`.
88
+ */
83
89
  function selfGroupWhere(spec, node, subject, alias) {
84
90
  const column = spec.groups?.column;
85
91
  return column === void 0 ? [text(`${subject} is not null`)] : [text(`${col(alias, column)} = `), { value: node.name }];
86
92
  }
87
93
  /**
88
- * One concrete relation's arm: `select <id>::text as id ...` for every
89
- * instance of `node` the subject holds `relation` on, through groups too.
94
+ * One concrete relation's arm: `select <id>::text as id ...` for every instance
95
+ * of `node` the subject holds `relation` on, through groups too.
90
96
  */
91
97
  function relationArm(build, node, relation) {
92
98
  const spec = node.relations[relation];
@@ -142,7 +148,10 @@ function holderIds(build, resource, relation) {
142
148
  }
143
149
  return out;
144
150
  }
145
- /** One concrete relation's arm, for helpers that guard each arm by the relation asked for. */
151
+ /**
152
+ * One concrete relation's arm, for helpers that guard each arm by the relation
153
+ * asked for.
154
+ */
146
155
  function relationArmSql(resource, relation, options) {
147
156
  const build = {
148
157
  options,
@@ -163,7 +172,10 @@ function heldIds(build, condition) {
163
172
  parts.push(text(") as v(id)"));
164
173
  return parts;
165
174
  }
166
- /** Instances of the condition's resource at or below the held ones, within its depth and never through a restricted child. */
175
+ /**
176
+ * Instances of the condition's resource at or below the held ones, within its
177
+ * depth and never through a restricted child.
178
+ */
167
179
  function reached(build, condition) {
168
180
  const held = heldIds(build, condition);
169
181
  if (condition.depth === 0) return held;
@@ -192,7 +204,10 @@ function reached(build, condition) {
192
204
  text(`) h union select ${col(t, node.id)}::text, ${d}.level + 1 from ${tableOf(build, node.name)} ${t} join ${d} on ${col(t, node.parent.field)}::text = ${d}.id where ${d}.level < ${String(condition.depth)}${restricted}) select ${d}.id from ${d}) ${d}`)
193
205
  ];
194
206
  }
195
- /** Ids the row's `field` may hold: the reached instances, carried back over each link hop. */
207
+ /**
208
+ * Ids the row's `field` may hold: the reached instances, carried back over each
209
+ * link hop.
210
+ */
196
211
  function targets(build, condition) {
197
212
  let set = reached(build, condition);
198
213
  const hops = condition.hops ?? [];
@@ -219,7 +234,10 @@ function targets(build, condition) {
219
234
  }
220
235
  return set;
221
236
  }
222
- /** The ids the row's field may hold for `condition` to match, as one text column `id`. */
237
+ /**
238
+ * The ids the row's field may hold for `condition` to match, as one text column
239
+ * `id`.
240
+ */
223
241
  function relatedTargetsSql(condition, options) {
224
242
  return targets({
225
243
  options,
@@ -258,15 +276,18 @@ function restrictedRowsSql(above, options) {
258
276
  alias: 0
259
277
  }, above);
260
278
  }
261
- /** Whether the row's restricted column keeps it out of `condition` whatever the graph says. */
279
+ /**
280
+ * Whether the row's restricted column keeps it out of `condition` whatever the
281
+ * graph says.
282
+ */
262
283
  function relatedRowGuard(condition) {
263
284
  const hopped = condition.hops !== void 0 && condition.hops.length > 0;
264
285
  return (condition.parent === true || hopped) && condition.restricted !== void 0 ? condition.restricted : void 0;
265
286
  }
266
287
  /**
267
- * `condition` as a boolean over the filtered row that is never NULL: the
268
- * row's field is among the reached ids, and with `parent` or `hops` the row
269
- * is not restricted.
288
+ * `condition` as a boolean over the filtered row that is never NULL: the row's
289
+ * field is among the reached ids, and with `parent` or `hops` the row is not
290
+ * restricted.
270
291
  */
271
292
  function relatedSql(condition, options) {
272
293
  const build = {
@@ -290,9 +311,8 @@ function relatedSql(condition, options) {
290
311
  return out;
291
312
  }
292
313
  /**
293
- * Renders parts to one SQL string: `placeholder(n)` names the n-th bound
294
- * value (from 1), `column` names a row column, and the subject id binds as
295
- * a value.
314
+ * Renders parts to one SQL string: `placeholder(n)` names the n-th bound value
315
+ * (from 1), `column` names a row column, and the subject id binds as a value.
296
316
  */
297
317
  function renderGraphSql(parts, render) {
298
318
  let sql = "";
@@ -310,16 +330,37 @@ function renderGraphSql(parts, render) {
310
330
  }
311
331
  //#endregion
312
332
  //#region src/conditions/compile.ts
313
- /** The membership table mapped for scope `name`, through the `tenant` / `team` shorthands. */
333
+ /** The alias scope `name` answers to by position: `tenant` first, `team` second. */
334
+ function aliasOf(scopes, name) {
335
+ if (name === scopes[0]?.name) return "tenant";
336
+ return name === scopes[1]?.name ? "team" : void 0;
337
+ }
338
+ /**
339
+ * The entry of a per-scope record for scope `name`: its own key, else the
340
+ * `tenant` / `team` alias of its position.
341
+ */
342
+ function byScope(record, scopes, name) {
343
+ if (record === void 0) return;
344
+ if (Object.hasOwn(record, name)) return record[name];
345
+ const alias = aliasOf(scopes, name);
346
+ return alias !== void 0 && Object.hasOwn(record, alias) ? record[alias] : void 0;
347
+ }
348
+ /**
349
+ * The membership table mapped for scope `name`, through the `tenant` / `team`
350
+ * aliases and shorthands.
351
+ */
314
352
  function scopeMembershipTable(mapping, scopes, name) {
315
- const table = mapping?.scopes?.[name];
353
+ const table = byScope(mapping?.scopes, scopes, name);
316
354
  if (table !== void 0) return table;
317
355
  if (name === scopes[0]?.name) return mapping?.tenant;
318
356
  if (name === scopes[1]?.name) return mapping?.team;
319
357
  }
320
- /** The column of `table` holding scope `name`'s id, through the `tenant` / `team` shorthands. */
358
+ /**
359
+ * The column of `table` holding scope `name`'s id, through the `tenant` /
360
+ * `team` aliases and shorthands.
361
+ */
321
362
  function scopeColumn(table, scopes, name) {
322
- const column = table.columns?.[name];
363
+ const column = byScope(table.columns, scopes, name);
323
364
  if (column !== void 0) return column;
324
365
  if (name === scopes[0]?.name) return table.tenant;
325
366
  if (name === scopes[1]?.name) return table.team;
@@ -361,7 +402,10 @@ function asPortableCondition(input) {
361
402
  if ("condition" in input && !("op" in input)) return input.condition;
362
403
  return input;
363
404
  }
364
- /** A `contains` pattern for `LIKE`: `%`, `_` and the escape itself match literally. */
405
+ /**
406
+ * A `contains` pattern for `LIKE`: `%`, `_` and the escape itself match
407
+ * literally.
408
+ */
365
409
  function escapeLike(value) {
366
410
  return value.replaceAll(/[\\%_]/gu, (char) => `\\${char}`);
367
411
  }
@@ -384,10 +428,10 @@ function anyOf(items) {
384
428
  };
385
429
  }
386
430
  /**
387
- * Negation normal form. In memory a comparison against a NULL field is
388
- * false, so its negation is true; SQL's `NOT (NULL)` stays NULL. Every
389
- * negated comparison therefore also admits the NULL field explicitly, and
390
- * `not` only ever wraps a comparison or an `exists`.
431
+ * Negation normal form. In memory a comparison against a NULL field is false,
432
+ * so its negation is true; SQL's `NOT (NULL)` stays NULL. Every negated
433
+ * comparison therefore also admits the NULL field explicitly, and `not` only
434
+ * ever wraps a comparison or an `exists`.
391
435
  */
392
436
  function negate(node) {
393
437
  switch (node.kind) {
@@ -614,4 +658,4 @@ function compileWhere(input, options = {}) {
614
658
  }));
615
659
  }
616
660
  //#endregion
617
- export { relatedRowGuard as a, relationArmSql as c, scopeMembershipTable as i, renderGraphSql as l, escapeLike as n, relatedSql as o, scopeColumn as r, relatedTargetsSql as s, compileWhere as t, restrictedRowsSql as u };
661
+ export { scopeMembershipTable as a, relatedTargetsSql as c, restrictedRowsSql as d, scopeColumn as i, relationArmSql as l, compileWhere as n, relatedRowGuard as o, escapeLike as r, relatedSql as s, byScope as t, renderGraphSql as u };
@@ -1,6 +1,6 @@
1
- import { n as CliError } from "./errors-DpP_U6Bf.js";
2
- import { a as suggestion, o as GLOBAL_FLAGS } from "./args-CC3OwyHW.js";
3
- import { a as resolve } from "./manifest-Dv6q4i5s.js";
1
+ import { n as CliError } from "./errors-Vpu6rKHl.js";
2
+ import { a as suggestion, o as GLOBAL_FLAGS } from "./args-0FrVs5EH.js";
3
+ import { a as resolve } from "./manifest-B2QPh19C.js";
4
4
  import { t as defineLeaf } from "./command-L8EstFNm.js";
5
5
  //#region src/cli/core/completion.ts
6
6
  const SHELLS = [
@@ -11,13 +11,19 @@ const SHELLS = [
11
11
  function flagNames(flags) {
12
12
  return Object.entries(flags).filter(([, flag]) => flag.hidden !== true).map(([name]) => `--${name}`);
13
13
  }
14
- /** The flag `token` names when it waits for a separate value, as `--only` does and `--only=x` does not. */
14
+ /**
15
+ * The flag `token` names when it waits for a separate value, as `--only` does
16
+ * and `--only=x` does not.
17
+ */
15
18
  function valueFlag(flags, token) {
16
19
  if (token === void 0 || !token.startsWith("--") || token.includes("=")) return;
17
20
  const flag = flags[token.slice(2)];
18
21
  return flag === void 0 || flag.type === "boolean" ? void 0 : flag;
19
22
  }
20
- /** The positional the next bare word fills, after the words already typed past the leaf's path. */
23
+ /**
24
+ * The positional the next bare word fills, after the words already typed past
25
+ * the leaf's path.
26
+ */
21
27
  function positionalAt(leaf, typed) {
22
28
  let index = 0;
23
29
  for (let i = 0; i < typed.length; i += 1) {
@@ -36,7 +42,10 @@ function positionalAt(leaf, typed) {
36
42
  const last = positionals.at(-1);
37
43
  return positionals[index] ?? (last?.variadic === true ? last : void 0);
38
44
  }
39
- /** Values from `complete`, matched against what follows the last comma when the value is a list. */
45
+ /**
46
+ * Values from `complete`, matched against what follows the last comma when the
47
+ * value is a list.
48
+ */
40
49
  async function valuesFor(complete, partial, list) {
41
50
  const cut = list ? partial.lastIndexOf(",") + 1 : 0;
42
51
  const head = partial.slice(0, cut);
@@ -45,8 +54,8 @@ async function valuesFor(complete, partial, list) {
45
54
  return (await complete()).filter((value) => value.startsWith(tail) && !taken.includes(value)).map((value) => head + value);
46
55
  }
47
56
  /**
48
- * Candidates for the last word of `words`, the tokens typed after
49
- * `permdock`. An empty list leaves the shell to complete file names.
57
+ * Candidates for the last word of `words`, the tokens typed after `permdock`.
58
+ * An empty list leaves the shell to complete file names.
50
59
  */
51
60
  async function candidates(words) {
52
61
  const partial = words.at(-1) ?? "";