permdock 0.6.0 → 0.8.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 (507) hide show
  1. package/README.md +2 -3
  2. package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
  3. package/dist/a2a/index.d.ts +7 -7
  4. package/dist/a2a/index.js +9 -9
  5. package/dist/action-result-CL-QCITA.d.ts +19 -0
  6. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  7. package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
  8. package/dist/agent/index.d.ts +3 -3
  9. package/dist/agent/index.js +1 -1
  10. package/dist/ai-sdk/index.d.ts +31 -10
  11. package/dist/ai-sdk/index.js +22 -12
  12. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  13. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  14. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  15. package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  16. package/dist/approvals/index.d.ts +5 -5
  17. package/dist/approvals/index.js +7 -7
  18. package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
  19. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  20. package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
  21. package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
  22. package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
  23. package/dist/astro/index.d.ts +30 -12
  24. package/dist/astro/index.js +2 -2
  25. package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
  26. package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
  27. package/dist/authzen/index.d.ts +171 -25
  28. package/dist/authzen/index.js +321 -149
  29. package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  30. package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
  31. package/dist/base-url-BQbddZO5.js +9 -0
  32. package/dist/better-auth/index.d.ts +2 -2
  33. package/dist/better-auth/index.js +13 -7
  34. package/dist/better-supabase/index.d.ts +392 -220
  35. package/dist/better-supabase/index.js +293 -152
  36. package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  37. package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
  38. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  39. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  40. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  41. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  42. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  43. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  44. package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
  45. package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
  46. package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
  47. package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
  48. package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
  49. package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
  50. package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
  51. package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
  52. package/dist/catalog/index.d.ts +104 -23
  53. package/dist/catalog/index.js +117 -8
  54. package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
  55. package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
  56. package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
  57. package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
  58. package/dist/catalog-mRQQQhNK.js +1 -0
  59. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  60. package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
  61. package/dist/chat/index.d.ts +1 -1
  62. package/dist/chat/index.js +13 -10
  63. package/dist/chat-sdk/index.d.ts +44 -26
  64. package/dist/chat-sdk/index.js +17 -17
  65. package/dist/checks-CGkP3Z7A.js +40 -0
  66. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  67. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  68. package/dist/claude-agent/index.d.ts +6 -6
  69. package/dist/claude-agent/index.js +6 -3
  70. package/dist/clerk/index.d.ts +11 -7
  71. package/dist/clerk/index.js +6 -6
  72. package/dist/cli/bin.js +4 -4
  73. package/dist/cli/index.d.ts +82 -7
  74. package/dist/cli/index.js +6 -6
  75. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  76. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  77. package/dist/cloud/index.d.ts +186 -38
  78. package/dist/cloud/index.js +293 -31
  79. package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
  80. package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
  81. package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
  82. package/dist/collect-B5BL3klN.js +1 -0
  83. package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
  84. package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
  85. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  86. package/dist/compile/index.d.ts +2 -2
  87. package/dist/compile/index.js +1 -1
  88. package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
  89. package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
  90. package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
  91. package/dist/config-BwPBfN0t.js +108 -0
  92. package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
  93. package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
  94. package/dist/config-shape-ykV0Vm2n.js +134 -0
  95. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  96. package/dist/connector-schema-CYLQNMYq.js +434 -0
  97. package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
  98. package/dist/convex/index.d.ts +13 -7
  99. package/dist/convex/index.js +9 -6
  100. package/dist/core-H-mbhpZc.js +341 -0
  101. package/dist/core-hWIARPDz.d.ts +206 -0
  102. package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
  103. package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
  104. package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
  105. package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
  106. package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
  107. package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
  108. package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
  109. package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
  110. package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
  111. package/dist/delivery/index.d.ts +5 -5
  112. package/dist/delivery/index.js +6 -5
  113. package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
  114. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  115. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  116. package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
  117. package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  118. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  119. package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
  120. package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
  121. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  122. package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
  123. package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
  124. package/dist/drizzle/index.d.ts +33 -19
  125. package/dist/drizzle/index.js +17 -9
  126. package/dist/elysia/index.d.ts +17 -11
  127. package/dist/elysia/index.js +5 -5
  128. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  129. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  130. package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
  131. package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  132. package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
  133. package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
  134. package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
  135. package/dist/eve/index.d.ts +9 -6
  136. package/dist/eve/index.js +4 -4
  137. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  138. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  139. package/dist/express/index.d.ts +9 -6
  140. package/dist/express/index.js +9 -6
  141. package/dist/fastify/index.d.ts +16 -10
  142. package/dist/fastify/index.js +8 -5
  143. package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  144. package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
  145. package/dist/fields-D0vUI6dq.js +498 -0
  146. package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
  147. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  148. package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
  149. package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
  150. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  151. package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
  152. package/dist/gen-B5kvbAoZ.js +58 -0
  153. package/dist/gen-DWCYcMQM.js +827 -0
  154. package/dist/generate-CRVV5V7l.js +165 -0
  155. package/dist/generate-CezbCaTI.js +275 -0
  156. package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
  157. package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
  158. package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
  159. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  160. package/dist/h3/index.d.ts +10 -7
  161. package/dist/h3/index.js +3 -3
  162. package/dist/headers-B9jQxjtW.d.ts +10 -0
  163. package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
  164. package/dist/hono/index.d.ts +16 -10
  165. package/dist/hono/index.js +5 -5
  166. package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
  167. package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
  168. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  169. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  170. package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
  171. package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
  172. package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
  173. package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
  174. package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
  175. package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
  176. package/dist/index-BhxEUY9J.d.ts +233 -0
  177. package/dist/index-Bv5iXPqU.d.ts +210 -0
  178. package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
  179. package/dist/index.d.ts +22 -21
  180. package/dist/index.js +35 -33
  181. package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
  182. package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
  183. package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  184. package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
  185. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  186. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  187. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  188. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  189. package/dist/jwt/index.d.ts +125 -17
  190. package/dist/jwt/index.js +157 -16
  191. package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
  192. package/dist/kysely/index.d.ts +49 -33
  193. package/dist/kysely/index.js +9 -7
  194. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  195. package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
  196. package/dist/load-Dm0pSYH3.js +1 -0
  197. package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
  198. package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
  199. package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
  200. package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
  201. package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
  202. package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
  203. package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
  204. package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
  205. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  206. package/dist/mcp/index.d.ts +154 -47
  207. package/dist/mcp/index.js +200 -41
  208. package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
  209. package/dist/module-values-BJTBdo6y.js +107 -0
  210. package/dist/nest/index.d.ts +23 -13
  211. package/dist/nest/index.js +18 -11
  212. package/dist/next/client.d.ts +5 -2
  213. package/dist/next/client.js +1 -1
  214. package/dist/next/index.d.ts +72 -26
  215. package/dist/next/index.js +110 -6
  216. package/dist/next/plugin.d.ts +1 -1
  217. package/dist/next/plugin.js +4 -3
  218. package/dist/node/index.d.ts +5 -5
  219. package/dist/node/index.js +3 -3
  220. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  221. package/dist/openai/index.d.ts +13 -7
  222. package/dist/openai/index.js +3 -3
  223. package/dist/openapi/index.d.ts +61 -30
  224. package/dist/openapi/index.js +2 -2
  225. package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
  226. package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
  227. package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
  228. package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
  229. package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  230. package/dist/orpc/index.d.ts +68 -14
  231. package/dist/orpc/index.js +62 -13
  232. package/dist/otel/index.d.ts +7 -4
  233. package/dist/otel/index.js +8 -5
  234. package/dist/output-files-BHOIlrfD.js +1 -0
  235. package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
  236. package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
  237. package/dist/ownership-B4L59T9u.js +1054 -0
  238. package/dist/parse-1_ZheTW5.js +151 -0
  239. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  240. package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
  241. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  242. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  243. package/dist/pdp/index.d.ts +9 -6
  244. package/dist/pdp/index.js +23 -12
  245. package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
  246. package/dist/peer-Q0fuZ6hx.js +982 -0
  247. package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
  248. package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
  249. package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
  250. package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
  251. package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
  252. package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
  253. package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
  254. package/dist/pg-DQTqRrou.js +60 -0
  255. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  256. package/dist/pkce-CnmmYqUZ.js +21 -0
  257. package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  258. package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
  259. package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  260. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  261. package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
  262. package/dist/postgres-store-DcyrPS-r.js +1028 -0
  263. package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
  264. package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
  265. package/dist/powersync-DHNQX06W.js +1117 -0
  266. package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
  267. package/dist/powersync-Djf-zCpB.js +1 -0
  268. package/dist/preset/index.d.ts +38 -28
  269. package/dist/preset/index.js +1 -1
  270. package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
  271. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  272. package/dist/prisma/index.d.ts +69 -41
  273. package/dist/prisma/index.js +21 -17
  274. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  275. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  276. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  277. package/dist/prompt-BYc6drYW.js +938 -0
  278. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  279. package/dist/protected-action-DUYqb-Ma.js +80 -0
  280. package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
  281. package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
  282. package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  283. package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
  284. package/dist/pull-B65ndFNZ.js +1 -0
  285. package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
  286. package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
  287. package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  288. package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
  289. package/dist/react/index.d.ts +9 -8
  290. package/dist/react/index.js +7 -6
  291. package/dist/react/provider-client.d.ts +1 -1
  292. package/dist/react/provider-client.js +1 -1
  293. package/dist/react-native/index.d.ts +104 -51
  294. package/dist/react-native/index.js +394 -67
  295. package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
  296. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  297. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  298. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  299. package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
  300. package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
  301. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  302. package/dist/resend/index.d.ts +34 -28
  303. package/dist/resend/index.js +29 -29
  304. package/dist/resolve-names-CF7xXLSG.js +201 -0
  305. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  306. package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
  307. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  308. package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
  309. package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
  310. package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
  311. package/dist/rolldown-runtime-C3I60J0A.js +4 -0
  312. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  313. package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
  314. package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
  315. package/dist/run-D-JE8QWb.js +1 -0
  316. package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
  317. package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
  318. package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
  319. package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
  320. package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
  321. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  322. package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
  323. package/dist/scim/index.d.ts +3 -2
  324. package/dist/scim/index.js +3 -1
  325. package/dist/scim-D8YupzX1.js +44 -0
  326. package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
  327. package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
  328. package/dist/server/index.d.ts +12 -12
  329. package/dist/server/index.js +13 -13
  330. package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
  331. package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  332. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  333. package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
  334. package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
  335. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  336. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  337. package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  338. package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
  339. package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
  340. package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
  341. package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  342. package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  343. package/dist/solid/index.d.ts +55 -15
  344. package/dist/solid/index.js +46 -12
  345. package/dist/solid-start/index.d.ts +30 -12
  346. package/dist/solid-start/index.js +3 -3
  347. package/dist/sources-B1Os_YUu.d.ts +312 -0
  348. package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
  349. package/dist/sources-qoIJQrJv.js +11 -0
  350. package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
  351. package/dist/sql-B80DFdpG.d.ts +10 -0
  352. package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
  353. package/dist/ssf/index.d.ts +4 -4
  354. package/dist/ssf/index.js +665 -224
  355. package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  356. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  357. package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
  358. package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
  359. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  360. package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
  361. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  362. package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  363. package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
  364. package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
  365. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  366. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  367. package/dist/supabase/index.d.ts +48 -37
  368. package/dist/supabase/index.js +6 -6
  369. package/dist/supabase/middleware.d.ts +19 -13
  370. package/dist/supabase/middleware.js +7 -7
  371. package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
  372. package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
  373. package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
  374. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  375. package/dist/supautils-BU-pAEpf.js +808 -0
  376. package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
  377. package/dist/svelte/PermissionBoundary.svelte +2 -6
  378. package/dist/svelte/Protected.svelte +2 -8
  379. package/dist/svelte/index.d.ts +9 -8
  380. package/dist/svelte/index.js +10 -9
  381. package/dist/svelte/runtime.d.ts +4 -4
  382. package/dist/svelte/runtime.js +4 -4
  383. package/dist/svelte/source.d.ts +9 -8
  384. package/dist/svelte/source.js +6 -5
  385. package/dist/sveltekit/index.d.ts +30 -12
  386. package/dist/sveltekit/index.js +2 -2
  387. package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
  388. package/dist/tanstack-start/index.d.ts +22 -10
  389. package/dist/tanstack-start/index.js +2 -2
  390. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  391. package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
  392. package/dist/terminal/index.d.ts +23 -14
  393. package/dist/terminal/index.js +17 -20
  394. package/dist/testing/core.d.ts +2 -0
  395. package/dist/testing/core.js +1 -0
  396. package/dist/testing/fixtures/index.d.ts +15 -0
  397. package/dist/testing/fixtures/index.js +831 -0
  398. package/dist/testing/index.d.ts +235 -285
  399. package/dist/testing/index.js +502 -927
  400. package/dist/testing/saas/index.d.ts +43 -27
  401. package/dist/testing/saas/index.js +2 -2
  402. package/dist/testing/saas/permissions.d.ts +1 -1
  403. package/dist/testing/saas/permissions.js +1 -1
  404. package/dist/text-diff-BtfSmdUo.js +444 -0
  405. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  406. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  407. package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
  408. package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
  409. package/dist/trpc/index.d.ts +11 -8
  410. package/dist/trpc/index.js +15 -9
  411. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  412. package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
  413. package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
  414. package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
  415. package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
  416. package/dist/types-B_d_g7T3.d.ts +262 -0
  417. package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
  418. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  419. package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
  420. package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
  421. package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
  422. package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  423. package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
  424. package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
  425. package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
  426. package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  427. package/dist/unplugin/index.d.ts +1 -1
  428. package/dist/unplugin/index.js +2 -2
  429. package/dist/usage-CYeXek0p.js +1 -0
  430. package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
  431. package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
  432. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  433. package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  434. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  435. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  436. package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
  437. package/dist/version-DMQ0dnN5.js +48 -0
  438. package/dist/version-DizhmD72.js +1 -0
  439. package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
  440. package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
  441. package/dist/vue/index.d.ts +71 -21
  442. package/dist/vue/index.js +50 -13
  443. package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  444. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  445. package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
  446. package/dist/watch-DB42U1ib.js +1 -0
  447. package/dist/webmcp/index.d.ts +11 -11
  448. package/dist/webmcp/index.js +8 -5
  449. package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
  450. package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
  451. package/dist/workflow/index.d.ts +3 -3
  452. package/dist/workflow/index.js +13 -13
  453. package/dist/workflow-sdk/index.d.ts +19 -13
  454. package/dist/workflow-sdk/index.js +6 -6
  455. package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
  456. package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  457. package/package.json +25 -14
  458. package/schemas/catalog-v1.json +3 -0
  459. package/schemas/cli-result-v1.json +1 -0
  460. package/schemas/cloud-api-v1.json +152 -7
  461. package/schemas/connector-v1.json +8 -0
  462. package/schemas/supabase-claims-v1.json +5 -0
  463. package/schemas/supabase-manifest-v1.json +308 -75
  464. package/skills/permdock/SKILL.md +1 -0
  465. package/skills/permdock-agents/references/runtimes.md +3 -1
  466. package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
  467. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  468. package/skills/permdock-data/references/queries-and-rls.md +6 -2
  469. package/skills/permdock-tenancy/SKILL.md +1 -1
  470. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
  471. package/skills/permdock-wire/references/adapters.md +28 -22
  472. package/skills/permdock-wire/references/policy-options.md +1 -0
  473. package/dist/catalog-BoWglDPI.js +0 -1
  474. package/dist/collect-D7eQDffE.js +0 -1
  475. package/dist/config-bs_kZeYq.js +0 -162
  476. package/dist/denied-text-CiFQNuMV.d.ts +0 -19
  477. package/dist/fields-OYG_JR78.js +0 -203
  478. package/dist/generate-CNU1pIOo.js +0 -171
  479. package/dist/headers-BIjfMaoC.js +0 -8
  480. package/dist/headers-CIbDTUTK.d.ts +0 -7
  481. package/dist/index-Cp_ilKi1.d.ts +0 -91
  482. package/dist/index-CueFnxQc.d.ts +0 -110
  483. package/dist/load-BxEtwlBS.js +0 -1
  484. package/dist/output-files-B3IZJksC.js +0 -1
  485. package/dist/package-root-Dk_ETdkp.js +0 -31
  486. package/dist/parse-Cxq0WxrA.js +0 -53
  487. package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
  488. package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
  489. package/dist/peer-C8swJ2GH.js +0 -50
  490. package/dist/policies-DP2nqRoF.js +0 -295
  491. package/dist/powersync-BkWWCS1K.js +0 -538
  492. package/dist/powersync-MMJ2mI2q.js +0 -1
  493. package/dist/problem-details-B45V5d2b.d.ts +0 -7
  494. package/dist/prompt-DfZLJLIn.js +0 -32
  495. package/dist/protected-RFGpakN9.d.ts +0 -38
  496. package/dist/pull-CvpINcMK.js +0 -1
  497. package/dist/run-DDwUaJDU.js +0 -1
  498. package/dist/sources-Xc4zkszI.d.ts +0 -190
  499. package/dist/stores-BUGNbJTt.d.ts +0 -30
  500. package/dist/supabase-hook-CCw5m35C.js +0 -1
  501. package/dist/supautils-B6HYL9eL.js +0 -91
  502. package/dist/text-diff-BQcUapOb.js +0 -15
  503. package/dist/types-B3_ooZgZ.d.ts +0 -172
  504. package/dist/usage-CZpSQP6L.js +0 -1
  505. package/dist/version-CEbQ5UeM.js +0 -18
  506. package/dist/version-DXkYUISx.js +0 -1
  507. package/dist/watch--ovlPOc0.js +0 -1
@@ -1,171 +0,0 @@
1
- import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { t as byCodePoint } from "./compare-pfyVnBjE.js";
3
- //#region src/cli/generate.ts
4
- const IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
5
- const MAX_DEPTH = 6;
6
- function isSchemaKind(value) {
7
- return value === "zod" || value === "valibot" || value === "arktype";
8
- }
9
- function schemaImport(kind) {
10
- switch (kind) {
11
- case "zod": return "import { z } from 'zod'";
12
- case "valibot": return "import * as v from 'valibot'";
13
- case "arktype": return "import { type } from 'arktype'";
14
- default: return kind;
15
- }
16
- }
17
- function emptySchema(kind) {
18
- return schemaExpression(kind, { type: "object" });
19
- }
20
- function propertyKey(name) {
21
- return IDENTIFIER.test(name) ? name : JSON.stringify(name);
22
- }
23
- function literalEnum(schema) {
24
- const values = schema["enum"];
25
- if (!Array.isArray(values) || values.length === 0 || !values.every((value) => typeof value === "string")) return;
26
- return values;
27
- }
28
- function schemaType(schema) {
29
- const type = schema["type"];
30
- if (typeof type === "string") return type;
31
- if (Array.isArray(type)) {
32
- const named = type.filter((item) => item !== "null");
33
- return named.length === 1 && typeof named[0] === "string" ? named[0] : void 0;
34
- }
35
- return isRecord(schema["properties"]) ? "object" : void 0;
36
- }
37
- function zodOf(schema, resolve, depth) {
38
- const node = resolve(schema);
39
- const values = literalEnum(node);
40
- if (values !== void 0) return `z.enum(${JSON.stringify(values)})`;
41
- const type = depth > MAX_DEPTH ? void 0 : schemaType(node);
42
- if (type === void 0) return "z.unknown()";
43
- switch (type) {
44
- case "string": return "z.string()";
45
- case "number": return "z.number()";
46
- case "integer": return "z.number().int()";
47
- case "boolean": return "z.boolean()";
48
- case "array": return `z.array(${isRecord(node["items"]) ? zodOf(node["items"], resolve, depth + 1) : "z.unknown()"})`;
49
- case "object": {
50
- const required = new Set(Array.isArray(node["required"]) ? node["required"] : []);
51
- const properties = isRecord(node["properties"]) ? node["properties"] : {};
52
- const fields = Object.entries(properties).filter((entry) => isRecord(entry[1])).map(([name, child]) => {
53
- const expression = zodOf(child, resolve, depth + 1);
54
- return `${propertyKey(name)}: ${required.has(name) ? expression : `${expression}.optional()`}`;
55
- });
56
- return `z.object({${fields.length === 0 ? "" : ` ${fields.join(", ")} `}})`;
57
- }
58
- default: return "z.unknown()";
59
- }
60
- }
61
- function valibotOf(schema, resolve, depth) {
62
- const node = resolve(schema);
63
- const values = literalEnum(node);
64
- if (values !== void 0) return `v.picklist(${JSON.stringify(values)})`;
65
- const type = depth > MAX_DEPTH ? void 0 : schemaType(node);
66
- if (type === void 0) return "v.unknown()";
67
- switch (type) {
68
- case "string": return "v.string()";
69
- case "number": return "v.number()";
70
- case "integer": return "v.pipe(v.number(), v.integer())";
71
- case "boolean": return "v.boolean()";
72
- case "array": return `v.array(${isRecord(node["items"]) ? valibotOf(node["items"], resolve, depth + 1) : "v.unknown()"})`;
73
- case "object": {
74
- const required = new Set(Array.isArray(node["required"]) ? node["required"] : []);
75
- const properties = isRecord(node["properties"]) ? node["properties"] : {};
76
- const fields = Object.entries(properties).filter((entry) => isRecord(entry[1])).map(([name, child]) => {
77
- const expression = valibotOf(child, resolve, depth + 1);
78
- return `${propertyKey(name)}: ${required.has(name) ? expression : `v.optional(${expression})`}`;
79
- });
80
- return `v.object({${fields.length === 0 ? "" : ` ${fields.join(", ")} `}})`;
81
- }
82
- default: return "v.unknown()";
83
- }
84
- }
85
- /** An arktype definition: a string keyword or an object literal. */
86
- function arktypeOf(schema, resolve, depth) {
87
- const node = resolve(schema);
88
- const values = literalEnum(node);
89
- if (values !== void 0) return JSON.stringify(values.map((value) => `'${value.replaceAll("'", "\\'")}'`).join(" | "));
90
- const type = depth > MAX_DEPTH ? void 0 : schemaType(node);
91
- if (type === void 0) return "'unknown'";
92
- switch (type) {
93
- case "string": return "'string'";
94
- case "number": return "'number'";
95
- case "integer": return "'number.integer'";
96
- case "boolean": return "'boolean'";
97
- case "array": {
98
- if (!isRecord(node["items"])) return "'unknown[]'";
99
- const item = arktypeOf(node["items"], resolve, depth + 1);
100
- return item.startsWith("'") && !item.includes("|") ? `'${item.slice(1, -1)}[]'` : `[${item}, '[]']`;
101
- }
102
- case "object": {
103
- const required = new Set(Array.isArray(node["required"]) ? node["required"] : []);
104
- const properties = isRecord(node["properties"]) ? node["properties"] : {};
105
- const fields = Object.entries(properties).filter((entry) => isRecord(entry[1])).map(([name, child]) => `${JSON.stringify(required.has(name) ? name : `${name}?`)}: ${arktypeOf(child, resolve, depth + 1)}`);
106
- return `{${fields.length === 0 ? "" : ` ${fields.join(", ")} `}}`;
107
- }
108
- default: return "'unknown'";
109
- }
110
- }
111
- /**
112
- * A validator expression for a JSON Schema object. Only the portable core
113
- * (primitives, enums of strings, arrays, objects with `required`) is
114
- * translated; anything else becomes the validator's `unknown`.
115
- */
116
- function schemaExpression(kind, schema, resolve = (node) => node) {
117
- switch (kind) {
118
- case "zod": return zodOf(schema, resolve, 0);
119
- case "valibot": return valibotOf(schema, resolve, 0);
120
- case "arktype": return `type(${arktypeOf(schema, resolve, 0)})`;
121
- default: return kind;
122
- }
123
- }
124
- function renderList(value, indent) {
125
- if (Array.isArray(value)) return JSON.stringify(value);
126
- return JSON.stringify(value, null, 2).replaceAll("\n", `\n${indent}`);
127
- }
128
- function renderResource(resource, indent) {
129
- const inner = `${indent} `;
130
- const options = [
131
- `${inner}id: '${(resource.id ?? "id").replaceAll("\\", "\\\\").replaceAll("'", "\\'")}',`,
132
- `${inner}actions: ${renderList(resource.actions, inner)},`,
133
- `${inner}collection: ${renderList(resource.collection, inner)},`
134
- ].join("\n");
135
- return `${resource.schema === void 0 ? "resource({" : `resource(${resource.schema}, {`}\n${options}\n${indent}})`;
136
- }
137
- function insert(trie, resource) {
138
- let node = trie;
139
- for (const [index, segment] of resource.path.entries()) {
140
- if (index === resource.path.length - 1) {
141
- node.set(segment, resource);
142
- return;
143
- }
144
- const next = node.get(segment);
145
- if (next instanceof Map) node = next;
146
- else {
147
- const created = /* @__PURE__ */ new Map();
148
- node.set(segment, created);
149
- node = created;
150
- }
151
- }
152
- }
153
- function renderTrie(trie, indent) {
154
- return [...trie.entries()].toSorted(([a], [b]) => byCodePoint(a, b)).map(([segment, value]) => value instanceof Map ? `${indent}${propertyKey(segment)}: {\n${renderTrie(value, `${indent} `)}\n${indent}},` : `${indent}${propertyKey(segment)}: ${renderResource(value, indent)},`).join("\n");
155
- }
156
- /** A deterministic `definePermissions()` module with a `// @generated` header. */
157
- function emitPermissionsModule(input) {
158
- const trie = /* @__PURE__ */ new Map();
159
- for (const resource of input.resources) insert(trie, resource);
160
- const imports = ["import { definePermissions, resource } from 'permdock'", ...input.schema === void 0 ? [] : [schemaImport(input.schema)]];
161
- const extras = Object.entries(input.exports ?? {}).map(([name, value]) => `export const ${name} = ${JSON.stringify(value, null, 2)} as const\n\n`);
162
- return `// @generated by permdock ${input.generator}
163
- ${imports.join("\n")}
164
-
165
- ${extras.join("")}export const permissions = definePermissions({
166
- ${renderTrie(trie, " ")}
167
- })
168
- `;
169
- }
170
- //#endregion
171
- export { schemaExpression as i, emptySchema as n, isSchemaKind as r, emitPermissionsModule as t };
@@ -1,8 +0,0 @@
1
- import { t as approvalHeaderValue } from "./approval-header-CJACtHkv.js";
2
- //#region src/client/headers.ts
3
- /** The `PermDock-Approval` header for a resume; a `TypeError` for a token that is not an RFC 9651 sf-token. */
4
- function approvalHeaders(token) {
5
- return { "PermDock-Approval": approvalHeaderValue(token) };
6
- }
7
- //#endregion
8
- export { approvalHeaders as t };
@@ -1,7 +0,0 @@
1
- //#region src/client/headers.d.ts
2
- /** The `PermDock-Approval` header for a resume; a `TypeError` for a token that is not an RFC 9651 sf-token. */
3
- declare function approvalHeaders(token: string): {
4
- readonly "PermDock-Approval": string;
5
- };
6
- //#endregion
7
- export { approvalHeaders as t };
@@ -1,91 +0,0 @@
1
- import { T as Policy, rr as Principal, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
2
- import { E as SsfPermDockOptions, T as SsfPermDock, _ as SetSubject, c as PushSetOptions, d as SetDelivery, g as SetQueue, h as SetPollHandlerOptions, m as SetEvent, t as CaepCommon, v as SignSetOptions } from "./types-C791HFu9.js";
3
- //#region src/ssf/create.d.ts
4
- declare function createPermDock<TUser, TPrincipal extends Principal = Principal>(policy: Policy<TUser, TPrincipal>, options: SsfPermDockOptions): SsfPermDock;
5
- //#endregion
6
- //#region src/ssf/set-queue.d.ts
7
- /**
8
- * An in-process `SetQueue`: pending SETs per stream in insertion order. A
9
- * process restart loses them; a deployment with more than one instance needs
10
- * a shared queue.
11
- */
12
- declare function memorySetQueue(): SetQueue;
13
- /**
14
- * The RFC 8936 poll endpoint over a `SetQueue`. It applies the request's
15
- * `acks` and `setErrs`, then answers `{ sets, moreAvailable }` with up to
16
- * `maxEvents` pending SETs. It answers at once whatever `returnImmediately`
17
- * says, which RFC 8936 section 2.4 allows.
18
- */
19
- declare function setPollHandler(options: SetPollHandlerOptions): (request: Request) => Promise<Response>;
20
- //#endregion
21
- //#region src/ssf/transmitter.d.ts
22
- /** SSF 1.0 delivery method URN for RFC 8935 push. */
23
- declare const SSF_PUSH_DELIVERY = "urn:ietf:rfc:8935";
24
- /** SSF 1.0 delivery method URN for RFC 8936 poll. */
25
- declare const SSF_POLL_DELIVERY = "urn:ietf:rfc:8936";
26
- /**
27
- * Signs one event as an RFC 8417 Security Event Token (`typ: secevent+jwt`):
28
- * `sub_id` is the event's subject and `events` holds exactly one entry, as
29
- * SSF 1.0 requires. `iss` is the signer's own.
30
- */
31
- declare function signSet(event: SetEvent, signer: TokenSigner, options: SignSetOptions): Promise<string>;
32
- /**
33
- * Pushes one SET to a receiver (RFC 8935). A `2xx` is delivery; a `400`
34
- * maps the receiver's `err` to a cause; `401` and `403` are
35
- * `authentication-failed` and `access-denied`; a network failure, a timeout,
36
- * a `429` or a `5xx` is `unavailable` with `retry: true`. Never throws.
37
- */
38
- declare function pushSet(set: string, options: PushSetOptions): Promise<SetDelivery>;
39
- type CaepCredentialChange = CaepCommon & {
40
- readonly credentialType: string;
41
- readonly changeType: "create" | "revoke" | "update" | "delete";
42
- readonly friendlyName?: string;
43
- readonly x509Issuer?: string;
44
- readonly x509Serial?: string;
45
- readonly fido2Aaguid?: string;
46
- };
47
- type CaepTokenClaimsChange = CaepCommon & {
48
- readonly claims: Readonly<Record<string, unknown>>;
49
- };
50
- type CaepAssuranceLevelChange = CaepCommon & {
51
- readonly namespace: string;
52
- readonly currentLevel: string;
53
- readonly previousLevel?: string;
54
- readonly changeDirection?: "increase" | "decrease";
55
- };
56
- type CaepDeviceComplianceChange = CaepCommon & {
57
- readonly previousStatus: "compliant" | "not-compliant";
58
- readonly currentStatus: "compliant" | "not-compliant";
59
- };
60
- type CaepEvents = {
61
- readonly sessionRevoked: (input: CaepCommon) => SetEvent;
62
- readonly credentialChange: (input: CaepCredentialChange) => SetEvent;
63
- readonly tokenClaimsChange: (input: CaepTokenClaimsChange) => SetEvent;
64
- readonly assuranceLevelChange: (input: CaepAssuranceLevelChange) => SetEvent;
65
- readonly deviceComplianceChange: (input: CaepDeviceComplianceChange) => SetEvent;
66
- };
67
- /** CAEP 1.0 event builders; each returns a `SetEvent` for `signSet`. */
68
- declare const caepEvents: CaepEvents;
69
- type RiscAccountDisabled = {
70
- readonly subject: SetSubject;
71
- readonly reason?: "hijacking" | "bulk-account";
72
- };
73
- type RiscCredentialCompromise = CaepCommon & {
74
- readonly credentialType: string;
75
- };
76
- type RiscEvents = {
77
- readonly accountDisabled: (input: RiscAccountDisabled) => SetEvent;
78
- readonly accountPurged: (input: {
79
- readonly subject: SetSubject;
80
- }) => SetEvent;
81
- readonly credentialCompromise: (input: RiscCredentialCompromise) => SetEvent;
82
- };
83
- /** RISC 1.0 event builders for the events PermDock's receiver treats as revoking every session. */
84
- declare const riscEvents: RiscEvents;
85
- /**
86
- * The SSF 1.0 section 8.1.4 verification event for `stream`, echoing the
87
- * receiver's `state`. Its subject is the stream, never a principal.
88
- */
89
- declare function streamVerificationEvent(stream: string, state?: string): SetEvent;
90
- //#endregion
91
- export { setPollHandler as _, CaepTokenClaimsChange as a, RiscEvents as c, caepEvents as d, pushSet as f, memorySetQueue as g, streamVerificationEvent as h, CaepEvents as i, SSF_POLL_DELIVERY as l, signSet as m, CaepCredentialChange as n, RiscAccountDisabled as o, riscEvents as p, CaepDeviceComplianceChange as r, RiscCredentialCompromise as s, CaepAssuranceLevelChange as t, SSF_PUSH_DELIVERY as u, createPermDock as v };
@@ -1,110 +0,0 @@
1
- import { T as Policy, Zt as DeliveryChannel, j as PolicyVocabulary, q as DecisionSink, rr as Principal } from "./policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "./vocabulary-CN8H_9UF.js";
3
- import { t as Operation } from "./operations-X0VM7F3m.js";
4
- import { p as PrincipalSource, r as PermDock } from "./permdock-SV8ZINYT.js";
5
- import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, g as TransportMessages, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, o as DeliveryResult, r as DeliverOptions, s as DeliveryTarget, y as WebhookTransport } from "./types-BtHtcKMr.js";
6
- import { l as WebhookSigner } from "./standard-webhooks-rbD7LS6h.js";
7
- //#region src/delivery/audience.d.ts
8
- type Audience = {
9
- /** Principal ids `decideFor` grants, in discovery or candidate order, each once. */
10
- readonly principals: readonly string[];
11
- /** `false` when `whoCan` could not list every holder: someone granted may be missing. */
12
- readonly complete: boolean;
13
- };
14
- type AudienceOptions = {
15
- /** Check only these principals instead of listing holders with `whoCan`. */
16
- readonly candidates?: readonly string[];
17
- };
18
- /**
19
- * Who may receive a delivery about `row`: the holders `whoCan` lists (or
20
- * `candidates`), kept only where `decideFor` grants `permission` in the
21
- * sender's active tenant. A collection permission has no holders to list,
22
- * so it needs `candidates`; without them it is empty and incomplete.
23
- */
24
- declare function audience(permdock: PermDock, permission: Permission, row: unknown, options?: AudienceOptions): Promise<Audience>;
25
- /** One event a subscriber may receive: the permission its row needs. */
26
- type SubscriberEvent = {
27
- readonly permission: Permission;
28
- readonly row?: unknown;
29
- };
30
- /**
31
- * The subscribers whose principal `decideFor` grants the event's
32
- * permission on its row, in their order: the per-event filter for webhook
33
- * endpoints and realtime channels. A subscriber without a string
34
- * `principal` is dropped.
35
- */
36
- declare function subscribersFor<S extends {
37
- readonly principal: string;
38
- }>(permdock: PermDock, event: SubscriberEvent, subscribers: readonly S[]): Promise<S[]>;
39
- //#endregion
40
- //#region src/delivery/memory-transport.d.ts
41
- type MemoryDelivery<C extends DeliveryChannel> = {
42
- readonly target: DeliveryTarget<C>;
43
- readonly message: TransportMessages[C];
44
- readonly options: TransportOptions;
45
- };
46
- type MemoryDeliveryTransport<C extends DeliveryChannel> = DeliveryTransport<C> & {
47
- /** Every delivery `respond` answered `sent` for, oldest first. */
48
- readonly deliveries: readonly MemoryDelivery<C>[];
49
- };
50
- type MemoryDeliveryTransportOptions<C extends DeliveryChannel> = {
51
- /** The result per delivery; defaults to `sent`. A throw propagates, as from a provider client. */
52
- readonly respond?: (target: DeliveryTarget<C>, message: TransportMessages[C]) => DeliveryResult;
53
- };
54
- /** An in-process transport for tests and examples: it records what it would have sent. */
55
- declare function memoryDeliveryTransport<C extends DeliveryChannel>(channel: C, options?: MemoryDeliveryTransportOptions<C>): MemoryDeliveryTransport<C>;
56
- //#endregion
57
- //#region src/delivery/router.d.ts
58
- type DeliveryPermDockOptions = {
59
- readonly transports: DeliveryTransports;
60
- /** Resolves `{ address }` recipients through `principalByIdentity`. */
61
- readonly principals?: PrincipalSource;
62
- /** Receives one `delivery` event per recipient. A throw is ignored. */
63
- readonly sink?: DecisionSink;
64
- /** The `from` of an email whose message sets none. */
65
- readonly from?: string;
66
- /** The event `source`; defaults to `permdock`. */
67
- readonly source?: string;
68
- };
69
- type DeliveryPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
70
- /**
71
- * Checks every recipient against `target`'s permission on `row` with
72
- * `permdock.decideFor`, routes the granted ones to the transport of their
73
- * channel, and writes one `delivery` event per recipient. Never rejects:
74
- * a refused recipient or a transport error is a `failed` event.
75
- */
76
- readonly deliver: (permdock: PermDock<V>, target: Permission | Pick<Operation, "name" | "permission">, row: unknown, recipients: readonly Recipient[], messages: Partial<DeliveryMessages>, options?: DeliverOptions) => Promise<DeliveryReport>;
77
- };
78
- /** Routes checked recipients to channel transports and records a delivery event for each. */
79
- declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(_policy: Policy<TUser, TPrincipal, V>, options: DeliveryPermDockOptions): DeliveryPermDock<V>;
80
- //#endregion
81
- //#region src/delivery/target.d.ts
82
- /**
83
- * Whether `value` is a target the router checked for `channel`: a non-empty
84
- * address and a granted decision. A transport calls it first and refuses
85
- * anything else, so a hand-built recipient never reaches a provider.
86
- */
87
- declare function isDeliveryTarget<C extends DeliveryChannel>(value: unknown, channel: C): value is DeliveryTarget<C>;
88
- /**
89
- * An RFC 5322 `addr-spec` in dot-atom form with a DNS domain, at most 254
90
- * characters (RFC 5321 path limit). Quoted local parts, comments and
91
- * domain literals are refused.
92
- */
93
- declare function isAddrSpec(value: string): boolean;
94
- //#endregion
95
- //#region src/delivery/webhook-transport.d.ts
96
- type WebhookTransportOptions = {
97
- /** Defaults to the global `fetch`. */
98
- readonly fetch?: typeof fetch;
99
- /** Milliseconds before a request is aborted as `unavailable`. Defaults to 10000. */
100
- readonly timeout?: number;
101
- };
102
- /**
103
- * Posts each CloudEvent to the target's https endpoint as
104
- * `application/cloudevents+json`, signed with the Standard Webhooks
105
- * headers. `webhook-id` is the idempotency key, so a retry repeats it and
106
- * the receiver drops the duplicate. Redirects are not followed.
107
- */
108
- declare function webhookTransport(signer: WebhookSigner, options?: WebhookTransportOptions): WebhookTransport;
109
- //#endregion
110
- export { DeliveryPermDock as a, MemoryDelivery as c, memoryDeliveryTransport as d, Audience as f, subscribersFor as g, audience as h, isDeliveryTarget as i, MemoryDeliveryTransport as l, SubscriberEvent as m, webhookTransport as n, DeliveryPermDockOptions as o, AudienceOptions as p, isAddrSpec as r, createPermDock as s, WebhookTransportOptions as t, MemoryDeliveryTransportOptions as u };
@@ -1 +0,0 @@
1
- export { a as loadModule, s as pickNamed } from "./load-DFS_ry0W.js";
@@ -1 +0,0 @@
1
- export { t as SPLIT_PARTS } from "./output-files-DhRBBE4n.js";
@@ -1,31 +0,0 @@
1
- import { i as readJsonFile } from "./files-D_JIzUrP.js";
2
- import { existsSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- //#region src/cli/project/package-root.ts
6
- let cached;
7
- /**
8
- * The `permdock` package directory. The bundler may place this module in
9
- * `dist/cli/` or in a shared chunk at `dist/`, so walk up instead of
10
- * assuming a depth.
11
- */
12
- function packageRoot() {
13
- cached ??= findPackageRoot(dirname(fileURLToPath(import.meta.url)));
14
- return cached;
15
- }
16
- /** The nearest directory at or above `start` whose `package.json` is named `permdock`. */
17
- function findPackageRoot(start) {
18
- let dir = start;
19
- for (;;) {
20
- const manifest = join(dir, "package.json");
21
- if (existsSync(manifest)) {
22
- const { name } = readJsonFile(manifest);
23
- if (name === "permdock") return dir;
24
- }
25
- const parent = dirname(dir);
26
- if (parent === dir) throw new Error("PermDock CLI: cannot find the permdock package root");
27
- dir = parent;
28
- }
29
- }
30
- //#endregion
31
- export { packageRoot as t };
@@ -1,53 +0,0 @@
1
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
2
- import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
3
- import { n as copyJson, t as checkSchema } from "./json-schema-B-vAwlde.js";
4
- import { t as catalogSchema } from "./schema-B4v0Qrac.js";
5
- //#region src/catalog/parse.ts
6
- function invalid(issues) {
7
- const [first] = issues;
8
- const where = first?.path === void 0 || first.path.length === 0 ? "" : ` at ${first.path.map(String).join(".")}`;
9
- const more = issues.length > 1 ? ` (and ${String(issues.length - 1)} more)` : "";
10
- throw new PermDockValidationError({
11
- code: "invalid-data",
12
- permission: "",
13
- resource: "",
14
- boundary: "catalog",
15
- issues,
16
- message: `PermDock: invalid catalog${where}: ${first?.message ?? "unknown"}${more}`
17
- });
18
- }
19
- /**
20
- * Reads a `permissions.catalog.json` document (parsed, or the JSON text) and
21
- * validates it against `schemas/catalog-v1.json`. Returns a deep-frozen copy
22
- * built from own keys; throws `PermDockValidationError` with every issue.
23
- */
24
- function parseCatalog(json) {
25
- const issues = [];
26
- let input = json;
27
- if (typeof json === "string") try {
28
- input = JSON.parse(json);
29
- } catch (error) {
30
- invalid([{
31
- message: `Expected JSON text: ${error instanceof Error ? error.message : String(error)}`,
32
- path: []
33
- }]);
34
- }
35
- let copy;
36
- try {
37
- copy = copyJson(input, [], issues, /* @__PURE__ */ new Set());
38
- } catch (error) {
39
- invalid([{
40
- message: `Could not read the input: ${error instanceof Error ? error.message : String(error)}`,
41
- path: []
42
- }]);
43
- }
44
- if (issues.length === 0) checkSchema(catalogSchema, copy, [], issues);
45
- if (issues.length > 0) invalid(issues);
46
- return freezeDeep(copy);
47
- }
48
- /** Keys of the permissions the catalog marks `rowConditions: true`: the SQL helpers alone cannot enforce them. */
49
- function rowConditionKeys(catalog) {
50
- return new Set(catalog.permissions.filter((permission) => permission.rowConditions === true).map((permission) => permission.key));
51
- }
52
- //#endregion
53
- export { rowConditionKeys as n, parseCatalog as t };
@@ -1,10 +0,0 @@
1
- import { Bt as LocalSnapshotManifest } from "./policy-types-n0uRTsW8.js";
2
- //#region src/core/parse-local-manifest.d.ts
3
- /**
4
- * Whether `value` has the shape `localSnapshotManifest(policy)` writes, with
5
- * no prototype keys. A JSON import widens `v: 1` to `number`; this narrows it
6
- * back without a cast.
7
- */
8
- declare function parseLocalSnapshotManifest(value: unknown): value is LocalSnapshotManifest;
9
- //#endregion
10
- export { parseLocalSnapshotManifest as t };
@@ -1,34 +0,0 @@
1
- import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
3
- //#region src/core/local-role.ts
4
- /** The role name custom-role tables in a local snapshot manifest hold their grants under; no declared or tenant role can take it. */
5
- const LOCAL_CUSTOM_ROLE = "\0custom";
6
- //#endregion
7
- //#region src/core/parse-local-manifest.ts
8
- function isStrings(value) {
9
- return Array.isArray(value) && value.every((item) => typeof item === "string");
10
- }
11
- function safeKeys(value) {
12
- if (Array.isArray(value)) return value.every(safeKeys);
13
- if (!isRecord(value)) return true;
14
- return Object.entries(value).every(([key, item]) => !isForbiddenKey(key) && safeKeys(item));
15
- }
16
- function isGrants(value) {
17
- return Array.isArray(value) && value.every((grant) => isRecord(grant) && typeof grant["permission"] === "string" && (grant["effect"] === "allow" || grant["effect"] === "deny") && (grant["role"] === null || typeof grant["role"] === "string") && (isRecord(grant["to"]) || Array.isArray(grant["to"])));
18
- }
19
- function isGrantTable(value) {
20
- return isRecord(value) && Object.values(value).every(isGrants);
21
- }
22
- function isCustomTable(value) {
23
- return isRecord(value) && isRecord(value["permissions"]) && Object.values(value["permissions"]).every((row) => isRecord(row) && isGrants(row["all"]) && (row["levels"] === void 0 || isGrantTable(row["levels"]))) && isGrantTable(value["includes"]);
24
- }
25
- /**
26
- * Whether `value` has the shape `localSnapshotManifest(policy)` writes, with
27
- * no prototype keys. A JSON import widens `v: 1` to `number`; this narrows it
28
- * back without a cast.
29
- */
30
- function parseLocalSnapshotManifest(value) {
31
- return isRecord(value) && value["v"] === 1 && isStrings(value["roles"]) && (value["rank"] === void 0 || isStrings(value["rank"])) && (value["scopes"] === void 0 || Array.isArray(value["scopes"]) && value["scopes"].every(isRecord)) && (value["vocabulary"] === void 0 || isRecord(value["vocabulary"])) && isGrants(value["grants"]) && isRecord(value["custom"]) && Object.values(value["custom"]).every(isCustomTable) && safeKeys(value);
32
- }
33
- //#endregion
34
- export { LOCAL_CUSTOM_ROLE as n, parseLocalSnapshotManifest as t };
@@ -1,50 +0,0 @@
1
- import { n as CliError } from "./errors-CWTY6uih.js";
2
- import { detect, getUserAgent, resolveCommand } from "package-manager-detector";
3
- //#region src/cli/core/peer.ts
4
- /**
5
- * Loads an optional peer dependency for one command, or fails with the line
6
- * that installs it with the project's package manager. Only the commands that
7
- * need a peer ever load it.
8
- */
9
- async function requirePeer(load, name, command, cwd = process.cwd()) {
10
- try {
11
- return await load();
12
- } catch (error) {
13
- if (!isMissingModule(error)) throw error;
14
- const agent = await packageManagerOf(cwd);
15
- throw new CliError("unavailable", peerHint(name, command, agent), {
16
- cause: error,
17
- code: "dependency_missing",
18
- extensions: { package: name },
19
- next: [{
20
- command: addLine(agent, [name], { dev: true }),
21
- when: "to install it"
22
- }]
23
- });
24
- }
25
- }
26
- /** The package manager whose lockfile the project has, else the one running the CLI. */
27
- async function packageManagerOf(cwd) {
28
- return (await detect({ cwd }))?.agent ?? getUserAgent() ?? void 0;
29
- }
30
- /** The command that adds `packages` with `agent`, npm when there is none. */
31
- function addLine(agent, packages, options) {
32
- const args = options?.dev === true ? ["-D", ...packages] : [...packages];
33
- const command = resolveCommand(agent ?? "npm", "add", args);
34
- return command === null ? `npm install ${args.join(" ")}` : [command.command, ...command.args].join(" ");
35
- }
36
- function isMissingModule(error) {
37
- if (typeof error !== "object" || error === null || !("code" in error)) return false;
38
- return error.code === "ERR_MODULE_NOT_FOUND" || error.code === "MODULE_NOT_FOUND";
39
- }
40
- /**
41
- * The error for a missing peer. `agent` is the package manager that ran the
42
- * command, or the one whose lockfile the project has; without one the line
43
- * names pnpm and npm.
44
- */
45
- function peerHint(name, command, agent = getUserAgent() ?? void 0) {
46
- const install = agent === void 0 ? void 0 : resolveCommand(agent, "add", ["-D", name]);
47
- return `PermDock CLI: ${command} needs the optional peer ${name}. Install it with: ${install === null || install === void 0 ? `pnpm add -D ${name} (or npm install -D ${name})` : [install.command, ...install.args].join(" ")}`;
48
- }
49
- //#endregion
50
- export { requirePeer as i, packageManagerOf as n, peerHint as r, addLine as t };