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,8 +1,8 @@
1
- import { $n as Delegation, Q as LimitStore, Rt as Instant, Zn as CustomRole, ar as Subject, it as RelationSource, nr as Membership, qn as Actor, rr as Principal } from "../../policy-types-n0uRTsW8.js";
2
- import { w as Permission } from "../../vocabulary-CN8H_9UF.js";
3
- import { i as PermDockOptions } from "../../permdock-SV8ZINYT.js";
4
- import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-u_KHg-sN.js";
5
- import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-77FSAq_V.js";
1
+ import { Q as LimitStore, Rt as Instant, Zn as Actor, it as RelationSource, lr as Subject, or as Membership, rr as Delegation, sr as Principal, tr as CustomRole } from "../../policy-types-CCiDRZBH.js";
2
+ import { u as Permission } from "../../permission-types-CAY-GU7e.js";
3
+ import { o as PermDockOptions } from "../../permdock-B6Sf4T_S.js";
4
+ import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-Bx6UI8n1.js";
5
+ import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-Ba4bDhaj.js";
6
6
  import { StandardSchemaV1 } from "@standard-schema/spec";
7
7
  //#region src/testing/saas/schema.d.ts
8
8
  type FieldKind = "string" | "boolean" | "nullable-string";
@@ -53,6 +53,7 @@ type SaasSeed = {
53
53
  export declare const SAAS_EXPIRED_AT = 1e9;
54
54
  /**
55
55
  * Users, one hazard each:
56
+ *
56
57
  * - alice: admin in acme, viewer in globex (different role per org)
57
58
  * - bob: member in acme (owns p1, p3, p4)
58
59
  * - carol: owner in acme
@@ -62,16 +63,21 @@ export declare const SAAS_EXPIRED_AT = 1e9;
62
63
  * - mallory: no memberships at all
63
64
  * - gina: `lead` of team-a in acme
64
65
  * - hank: viewer in acme, `collaborator` on project p3 only
65
- * - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one instant
66
+ * - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one
67
+ * instant
66
68
  * - tina: member of `tenant-1`; `Date.parse('org-1') === Date.parse('tenant-1')`
67
- * - ivan: viewer in acme who holds the team role `lead` on the tenant membership (the wrong scope)
69
+ * - ivan: viewer in acme who holds the team role `lead` on the tenant membership
70
+ * (the wrong scope)
68
71
  *
69
72
  * Acme's folders: `root` ─ `eng` ─ `platform` ─ `infra`, and `root` ─ `hr`
70
73
  * (restricted) ─ `payroll`. bob views `root`, hank views `hr`, gina edits
71
74
  * `eng`, frank's view of `root` expired.
72
75
  */
73
76
  export declare const saasSeed: SaasSeed;
74
- /** The seed's folder tree and shares as a `RelationSource`, for `createPermDock({ relations })`. */
77
+ /**
78
+ * The seed's folder tree and shares as a `RelationSource`, for
79
+ * `createPermDock({ relations })`.
80
+ */
75
81
  export declare function saasRelations(seed?: SaasSeed): RelationSource;
76
82
  /** Every user id in the seed. */
77
83
  export declare const saasUsers: readonly string[];
@@ -81,18 +87,18 @@ export declare function saasMemberships(user: string, members?: readonly SaasMem
81
87
  /** Custom roles of every org, as `createPermDock({ customRoles })` expects. */
82
88
  export declare const saasCustomRoles: readonly CustomRole[];
83
89
  /**
84
- * The principal for `user`, with the plans of the requested `tenant`'s org.
85
- * The tenant itself is passed to `createPermDock({ tenant })`, never trusted
86
- * from here.
90
+ * The principal for `user`, with the plans of the requested `tenant`'s org. The
91
+ * tenant itself is passed to `createPermDock({ tenant })`, never trusted from
92
+ * here.
87
93
  */
88
94
  export declare function saasPrincipal(user: string, tenant?: string): Principal;
89
95
  //#endregion
90
96
  //#region src/testing/saas/sql.d.ts
91
97
  /**
92
- * Postgres tables for the SaaS domain. Column names match the resource
93
- * fields (`"orgId"`, `"ownerId"`) so generated RLS and ORM filters compile
94
- * against them without a column map. RLS is enabled and forced on the row
95
- * tables; policies come from `permdock rls generate`.
98
+ * Postgres tables for the SaaS domain. Column names match the resource fields
99
+ * (`"orgId"`, `"ownerId"`) so generated RLS and ORM filters compile against
100
+ * them without a column map. RLS is enabled and forced on the row tables;
101
+ * policies come from `permdock rls generate`.
96
102
  */
97
103
  export declare const saasSchemaSql = "\ncreate table org (\n id text primary key,\n name text not null,\n plan text not null check (plan in ('free', 'pro'))\n);\ncreate table org_member (\n user_id text not null,\n org_id text references org (id),\n team_id text,\n resource text,\n resource_id text,\n role text not null,\n expires_at bigint\n);\ncreate table project (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"ownerId\" text not null,\n name text not null,\n archived boolean not null default false\n);\nalter table project enable row level security;\nalter table project force row level security;\ncreate table doc (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"teamId\" text,\n title text not null,\n locked boolean not null default false\n);\nalter table doc enable row level security;\nalter table doc force row level security;\ncreate table folder (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"parentId\" text references folder (id),\n name text not null,\n restricted boolean not null default false\n);\nalter table folder enable row level security;\nalter table folder force row level security;\ncreate table folder_share (\n folder_id text not null references folder (id) on delete cascade,\n user_id text not null,\n expires_at timestamptz\n);\ncreate table folder_editor (\n folder_id text not null references folder (id) on delete cascade,\n user_id text not null\n);\n";
98
104
  /** `insert` statements for a seed; the default is the full shared seed. */
@@ -119,7 +125,10 @@ export declare const saasIssuer = "https://saas.permdock.test";
119
125
  export declare const saasAudience = "permdock-saas";
120
126
  export declare const SAAS_TOKEN_TTL_SECONDS = 3600;
121
127
  type SaasTokenOptions = {
122
- /** Claim memberships; `false` omits the claim (database mode). Defaults to the seed. */
128
+ /**
129
+ * Claim memberships; `false` omits the claim (database mode). Defaults to the
130
+ * seed.
131
+ */
123
132
  readonly memberships?: readonly Membership[] | false;
124
133
  readonly ttl?: number;
125
134
  /** The instant used for `iat`; defaults to the current time. */
@@ -131,9 +140,9 @@ type SaasTokenOptions = {
131
140
  /** Signs an ES256 access token for `sub` with WebCrypto; no dependency. */
132
141
  export declare function signSaasToken(sub: string, options?: SaasTokenOptions): Promise<string>;
133
142
  /**
134
- * Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`)
135
- * and returns its `sub`, or `null`; never throws. Identity only: memberships
136
- * and plans come from the seed, never from the token.
143
+ * Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`) and
144
+ * returns its `sub`, or `null`; never throws. Identity only: memberships and
145
+ * plans come from the seed, never from the token.
137
146
  */
138
147
  export declare function verifySaasToken(token: string | null | undefined, now?: Instant): Promise<string | null>;
139
148
  /** `verifySaasToken` plus the token's `exp` as `expiresAt` (epoch seconds). */
@@ -162,8 +171,8 @@ type SaasScenario = {
162
171
  */
163
172
  readonly client?: boolean;
164
173
  /**
165
- * The client outcome when it is stricter than the server's: a snapshot
166
- * cannot evaluate a closure deny, so it fails closed.
174
+ * The client outcome when it is stricter than the server's: a snapshot cannot
175
+ * evaluate a closure deny, so it fails closed.
167
176
  */
168
177
  readonly clientOutcome?: SaasOutcome;
169
178
  /** An agent acting for `user`; without `delegation` it reaches nothing. */
@@ -172,23 +181,30 @@ type SaasScenario = {
172
181
  /** Units of the daily api-key quota this subject already used in the tenant. */
173
182
  readonly quotaUsed?: number;
174
183
  };
175
- /** What the policy's `subject` receives: the principal, or a `Subject` carrying the actor. */
184
+ /**
185
+ * What the policy's `subject` receives: the principal, or a `Subject` carrying
186
+ * the actor.
187
+ */
176
188
  export declare function saasUser(scenario: SaasScenario): Principal | Subject;
177
189
  /** A memory quota store in which every subject has already used `used` units. */
178
190
  export declare function saasLimitStore(used?: number): LimitStore;
179
- /** The `createPermDock` options a scenario runs with: tenant, custom roles, quota and folder tree. */
191
+ /**
192
+ * The `createPermDock` options a scenario runs with: tenant, custom roles,
193
+ * quota and folder tree.
194
+ */
180
195
  export declare function saasScenarioOptions(scenario: SaasScenario): PermDockOptions;
181
196
  export declare function saasProject(id: string): SaasProject;
182
197
  export declare function saasDoc(id: string): SaasDoc;
183
198
  export declare function saasFolder(id: string): SaasFolder;
184
199
  /**
185
- * The folder tree, decided with `createPermDock({ relations: saasRelations() })`.
186
- * A snapshot carries no graph, so every graph grant is server-only on a client.
200
+ * The folder tree, decided with `createPermDock({ relations: saasRelations()
201
+ * })`. A snapshot carries no graph, so every graph grant is server-only on a
202
+ * client.
187
203
  */
188
204
  export declare const saasFolderScenarios: readonly SaasScenario[];
189
205
  /**
190
- * Hand-written expectations. Never derive `expected` from the engine: the
191
- * list is the oracle every adapter, ORM and client suite runs against.
206
+ * Hand-written expectations. Never derive `expected` from the engine: the list
207
+ * is the oracle every adapter, ORM and client suite runs against.
192
208
  */
193
209
  export declare const saasScenarios: readonly SaasScenario[];
194
210
  //#endregion
@@ -1,3 +1,3 @@
1
- import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-BPxlwVhN.js";
2
- import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-BCXRuXca.js";
1
+ import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-mDcTWoBs.js";
2
+ import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-iWnUdwCt.js";
3
3
  export { SAAS_API_KEY_LIMIT, SAAS_EXPIRED_AT, SAAS_TOKEN_TTL_SECONDS, SaasDocSchema, SaasFolderSchema, SaasProjectSchema, rowSchema, saasAudience, saasCustomRoles, saasDoc, saasFolder, saasFolderScenarios, saasIssuer, saasJwks, saasLimitStore, saasMemberships, saasOrg, saasPermissions, saasPlans, saasPolicy, saasPrincipal, saasPrivateJwk, saasProject, saasPublicJwk, saasRelations, saasRoles, saasScenarioOptions, saasScenarios, saasSchemaSql, saasSeed, saasSeedSql, saasTenantRoleNames, saasUser, saasUsers, signSaasToken, verifySaasSession, verifySaasToken };
@@ -1,2 +1,2 @@
1
- import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-u_KHg-sN.js";
1
+ import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-Bx6UI8n1.js";
2
2
  export { SaasDoc, SaasDocSchema, SaasFolder, SaasFolderSchema, SaasProject, SaasProjectSchema, saasPermissions, saasPlans, saasRoles, saasTenantRoleNames };
@@ -1 +1 @@
1
- export { t as SaasDocSchema, n as SaasFolderSchema, r as SaasProjectSchema, i as saasPermissions, a as saasPlans, o as saasRoles, s as saasTenantRoleNames } from "../../permissions-BPxlwVhN.js";
1
+ export { t as SaasDocSchema, n as SaasFolderSchema, r as SaasProjectSchema, i as saasPermissions, a as saasPlans, o as saasRoles, s as saasTenantRoleNames } from "../../permissions-mDcTWoBs.js";
@@ -0,0 +1,444 @@
1
+ //#region ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/base.js
2
+ var Diff = class {
3
+ diff(oldStr, newStr, options = {}) {
4
+ let callback;
5
+ if (typeof options === "function") {
6
+ callback = options;
7
+ options = {};
8
+ } else if ("callback" in options) callback = options.callback;
9
+ const oldString = this.castInput(oldStr, options);
10
+ const newString = this.castInput(newStr, options);
11
+ const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
12
+ const newTokens = this.removeEmpty(this.tokenize(newString, options));
13
+ return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
14
+ }
15
+ diffWithOptionsObj(oldTokens, newTokens, options, callback) {
16
+ var _a;
17
+ const done = (value) => {
18
+ value = this.postProcess(value, options);
19
+ if (callback) {
20
+ setTimeout(function() {
21
+ callback(value);
22
+ }, 0);
23
+ return;
24
+ } else return value;
25
+ };
26
+ const newLen = newTokens.length, oldLen = oldTokens.length;
27
+ let editLength = 1;
28
+ let maxEditLength = newLen + oldLen;
29
+ if (options.maxEditLength != null) maxEditLength = Math.min(maxEditLength, options.maxEditLength);
30
+ const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
31
+ const abortAfterTimestamp = Date.now() + maxExecutionTime;
32
+ const bestPath = [{
33
+ oldPos: -1,
34
+ lastComponent: void 0
35
+ }];
36
+ let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
37
+ if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
38
+ let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
39
+ const execEditLength = () => {
40
+ for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
41
+ let basePath;
42
+ const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
43
+ if (removePath) bestPath[diagonalPath - 1] = void 0;
44
+ let canAdd = false;
45
+ if (addPath) {
46
+ const addPathNewPos = addPath.oldPos - diagonalPath;
47
+ canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
48
+ }
49
+ const canRemove = removePath && removePath.oldPos + 1 < oldLen;
50
+ if (!canAdd && !canRemove) {
51
+ bestPath[diagonalPath] = void 0;
52
+ continue;
53
+ }
54
+ if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) basePath = this.addToPath(addPath, true, false, 0, options);
55
+ else basePath = this.addToPath(removePath, false, true, 1, options);
56
+ newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
57
+ if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
58
+ else {
59
+ bestPath[diagonalPath] = basePath;
60
+ if (basePath.oldPos + 1 >= oldLen) maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
61
+ if (newPos + 1 >= newLen) minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
62
+ }
63
+ }
64
+ editLength++;
65
+ };
66
+ if (callback) (function exec() {
67
+ setTimeout(function() {
68
+ if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) return callback(void 0);
69
+ if (!execEditLength()) exec();
70
+ }, 0);
71
+ })();
72
+ else while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
73
+ const ret = execEditLength();
74
+ if (ret) return ret;
75
+ }
76
+ }
77
+ addToPath(path, added, removed, oldPosInc, options) {
78
+ const last = path.lastComponent;
79
+ if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) return {
80
+ oldPos: path.oldPos + oldPosInc,
81
+ lastComponent: {
82
+ count: last.count + 1,
83
+ added,
84
+ removed,
85
+ previousComponent: last.previousComponent
86
+ }
87
+ };
88
+ else return {
89
+ oldPos: path.oldPos + oldPosInc,
90
+ lastComponent: {
91
+ count: 1,
92
+ added,
93
+ removed,
94
+ previousComponent: last
95
+ }
96
+ };
97
+ }
98
+ extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
99
+ const newLen = newTokens.length, oldLen = oldTokens.length;
100
+ let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
101
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
102
+ newPos++;
103
+ oldPos++;
104
+ commonCount++;
105
+ if (options.oneChangePerToken) basePath.lastComponent = {
106
+ count: 1,
107
+ previousComponent: basePath.lastComponent,
108
+ added: false,
109
+ removed: false
110
+ };
111
+ }
112
+ if (commonCount && !options.oneChangePerToken) basePath.lastComponent = {
113
+ count: commonCount,
114
+ previousComponent: basePath.lastComponent,
115
+ added: false,
116
+ removed: false
117
+ };
118
+ basePath.oldPos = oldPos;
119
+ return newPos;
120
+ }
121
+ equals(left, right, options) {
122
+ if (options.comparator) return options.comparator(left, right);
123
+ else return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
124
+ }
125
+ removeEmpty(array) {
126
+ const ret = [];
127
+ for (let i = 0; i < array.length; i++) if (array[i]) ret.push(array[i]);
128
+ return ret;
129
+ }
130
+ castInput(value, options) {
131
+ return value;
132
+ }
133
+ tokenize(value, options) {
134
+ return Array.from(value);
135
+ }
136
+ join(chars) {
137
+ return chars.join("");
138
+ }
139
+ postProcess(changeObjects, options) {
140
+ return changeObjects;
141
+ }
142
+ get useLongestToken() {
143
+ return false;
144
+ }
145
+ buildValues(lastComponent, newTokens, oldTokens) {
146
+ const components = [];
147
+ let nextComponent;
148
+ while (lastComponent) {
149
+ components.push(lastComponent);
150
+ nextComponent = lastComponent.previousComponent;
151
+ delete lastComponent.previousComponent;
152
+ lastComponent = nextComponent;
153
+ }
154
+ components.reverse();
155
+ const componentLen = components.length;
156
+ let componentPos = 0, newPos = 0, oldPos = 0;
157
+ for (; componentPos < componentLen; componentPos++) {
158
+ const component = components[componentPos];
159
+ if (!component.removed) {
160
+ if (!component.added && this.useLongestToken) {
161
+ let value = newTokens.slice(newPos, newPos + component.count);
162
+ value = value.map(function(value, i) {
163
+ const oldValue = oldTokens[oldPos + i];
164
+ return oldValue.length > value.length ? oldValue : value;
165
+ });
166
+ component.value = this.join(value);
167
+ } else component.value = this.join(newTokens.slice(newPos, newPos + component.count));
168
+ newPos += component.count;
169
+ if (!component.added) oldPos += component.count;
170
+ } else {
171
+ component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
172
+ oldPos += component.count;
173
+ }
174
+ }
175
+ return components;
176
+ }
177
+ };
178
+ //#endregion
179
+ //#region ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/line.js
180
+ var LineDiff = class extends Diff {
181
+ constructor() {
182
+ super(...arguments);
183
+ this.tokenize = tokenize;
184
+ }
185
+ equals(left, right, options) {
186
+ if (options.ignoreWhitespace) {
187
+ if (!options.newlineIsToken || !left.includes("\n")) left = left.trim();
188
+ if (!options.newlineIsToken || !right.includes("\n")) right = right.trim();
189
+ } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
190
+ if (left.endsWith("\n")) left = left.slice(0, -1);
191
+ if (right.endsWith("\n")) right = right.slice(0, -1);
192
+ }
193
+ return super.equals(left, right, options);
194
+ }
195
+ };
196
+ const lineDiff = new LineDiff();
197
+ function diffLines(oldStr, newStr, options) {
198
+ return lineDiff.diff(oldStr, newStr, options);
199
+ }
200
+ function tokenize(value, options) {
201
+ if (options.stripTrailingCr) value = value.replace(/\r\n/g, "\n");
202
+ const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
203
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) linesAndNewlines.pop();
204
+ for (let i = 0; i < linesAndNewlines.length; i++) {
205
+ const line = linesAndNewlines[i];
206
+ if (i % 2 && !options.newlineIsToken) retLines[retLines.length - 1] += line;
207
+ else retLines.push(line);
208
+ }
209
+ return retLines;
210
+ }
211
+ //#endregion
212
+ //#region ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/patch/create.js
213
+ /**
214
+ * Returns true if the filename contains characters that require C-style
215
+ * quoting (as used by Git and GNU diffutils in diff output).
216
+ */
217
+ function needsQuoting(s) {
218
+ for (let i = 0; i < s.length; i++) if (s[i] < " " || s[i] > "~" || s[i] === "\"" || s[i] === "\\") return true;
219
+ return false;
220
+ }
221
+ /**
222
+ * C-style quotes a filename, encoding special characters as escape sequences
223
+ * and non-ASCII bytes as octal escapes. This is the inverse of
224
+ * `parseQuotedFileName` in parse.ts.
225
+ *
226
+ * Non-ASCII bytes are encoded as UTF-8 before being emitted as octal escapes.
227
+ * This matches the behaviour of both Git and GNU diffutils, which always emit
228
+ * UTF-8 octal escapes regardless of the underlying filesystem encoding (e.g.
229
+ * Git for Windows converts from NTFS's UTF-16 to UTF-8 internally).
230
+ *
231
+ * If the filename doesn't need quoting, returns it as-is.
232
+ */
233
+ function quoteFileNameIfNeeded(s) {
234
+ if (!needsQuoting(s)) return s;
235
+ let result = "\"";
236
+ const bytes = new TextEncoder().encode(s);
237
+ let i = 0;
238
+ while (i < bytes.length) {
239
+ const b = bytes[i];
240
+ if (b === 7) result += "\\a";
241
+ else if (b === 8) result += "\\b";
242
+ else if (b === 9) result += "\\t";
243
+ else if (b === 10) result += "\\n";
244
+ else if (b === 11) result += "\\v";
245
+ else if (b === 12) result += "\\f";
246
+ else if (b === 13) result += "\\r";
247
+ else if (b === 34) result += "\\\"";
248
+ else if (b === 92) result += "\\\\";
249
+ else if (b >= 32 && b <= 126) result += String.fromCharCode(b);
250
+ else result += "\\" + b.toString(8).padStart(3, "0");
251
+ i++;
252
+ }
253
+ result += "\"";
254
+ return result;
255
+ }
256
+ const INCLUDE_HEADERS = {
257
+ includeIndex: true,
258
+ includeUnderline: true,
259
+ includeFileHeaders: true
260
+ };
261
+ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
262
+ let optionsObj;
263
+ if (!options) optionsObj = {};
264
+ else if (typeof options === "function") optionsObj = { callback: options };
265
+ else optionsObj = options;
266
+ if (typeof optionsObj.context === "undefined") optionsObj.context = 4;
267
+ const context = optionsObj.context;
268
+ if (optionsObj.newlineIsToken) throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");
269
+ if (!optionsObj.callback) return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));
270
+ else {
271
+ const { callback } = optionsObj;
272
+ diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {
273
+ const patch = diffLinesResultToPatch(diff);
274
+ callback(patch);
275
+ } }));
276
+ }
277
+ function diffLinesResultToPatch(diff) {
278
+ if (!diff) return;
279
+ diff.push({
280
+ value: "",
281
+ lines: []
282
+ });
283
+ function contextLines(lines) {
284
+ return lines.map(function(entry) {
285
+ return " " + entry;
286
+ });
287
+ }
288
+ const hunks = [];
289
+ let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;
290
+ for (let i = 0; i < diff.length; i++) {
291
+ const current = diff[i], lines = current.lines || splitLines(current.value);
292
+ current.lines = lines;
293
+ if (current.added || current.removed) {
294
+ if (!oldRangeStart) {
295
+ const prev = diff[i - 1];
296
+ oldRangeStart = oldLine;
297
+ newRangeStart = newLine;
298
+ if (prev) {
299
+ curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];
300
+ oldRangeStart -= curRange.length;
301
+ newRangeStart -= curRange.length;
302
+ }
303
+ }
304
+ for (const line of lines) curRange.push((current.added ? "+" : "-") + line);
305
+ if (current.added) newLine += lines.length;
306
+ else oldLine += lines.length;
307
+ } else {
308
+ if (oldRangeStart) {
309
+ if (lines.length <= context * 2 && i < diff.length - 2) for (const line of contextLines(lines)) curRange.push(line);
310
+ else {
311
+ const contextSize = Math.min(lines.length, context);
312
+ for (const line of contextLines(lines.slice(0, contextSize))) curRange.push(line);
313
+ const hunk = {
314
+ oldStart: oldRangeStart,
315
+ oldLines: oldLine - oldRangeStart + contextSize,
316
+ newStart: newRangeStart,
317
+ newLines: newLine - newRangeStart + contextSize,
318
+ lines: curRange
319
+ };
320
+ hunks.push(hunk);
321
+ oldRangeStart = 0;
322
+ newRangeStart = 0;
323
+ curRange = [];
324
+ }
325
+ }
326
+ oldLine += lines.length;
327
+ newLine += lines.length;
328
+ }
329
+ }
330
+ for (const hunk of hunks) for (let i = 0; i < hunk.lines.length; i++) if (hunk.lines[i].endsWith("\n")) hunk.lines[i] = hunk.lines[i].slice(0, -1);
331
+ else {
332
+ hunk.lines.splice(i + 1, 0, "\");
333
+ i++;
334
+ }
335
+ return {
336
+ oldFileName,
337
+ newFileName,
338
+ oldHeader,
339
+ newHeader,
340
+ hunks
341
+ };
342
+ }
343
+ }
344
+ /**
345
+ * creates a unified diff patch.
346
+ *
347
+ * @param patch either a single structured patch object (as returned by `structuredPatch`) or an
348
+ * array of them (as returned by `parsePatch`).
349
+ * @param headerOptions behaves the same as the `headerOptions` option of `createTwoFilesPatch`.
350
+ * Ignored for patches where `isGit` is `true`.
351
+ *
352
+ * When a patch has `isGit: true`, `formatPatch` output is changed to more closely match Git's
353
+ * output: it emits a `diff --git` header, emits Git extended headers as appropriate based on
354
+ * properties like `isRename`, `isCreate`, `newMode`, etc, and will omit `---`/`+++` file
355
+ * headers for patches with no hunks (e.g. renames without content changes).
356
+ */
357
+ function formatPatch(patch, headerOptions) {
358
+ var _a, _b, _c, _d, _e, _f;
359
+ if (!headerOptions) headerOptions = INCLUDE_HEADERS;
360
+ if (Array.isArray(patch)) {
361
+ if (patch.length > 1 && !headerOptions.includeFileHeaders && !patch.every((p) => p.isGit)) throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");
362
+ return patch.map((p) => formatPatch(p, headerOptions)).join("\n");
363
+ }
364
+ const ret = [];
365
+ if (patch.isGit) {
366
+ headerOptions = INCLUDE_HEADERS;
367
+ if (!patch.oldFileName) throw new Error("oldFileName must be specified for Git patches");
368
+ if (!patch.newFileName) throw new Error("newFileName must be specified for Git patches");
369
+ let gitOldName = patch.oldFileName;
370
+ let gitNewName = patch.newFileName;
371
+ if (patch.isCreate && gitOldName === "/dev/null") gitOldName = gitNewName.replace(/^b\//, "a/");
372
+ else if (patch.isDelete && gitNewName === "/dev/null") gitNewName = gitOldName.replace(/^a\//, "b/");
373
+ ret.push("diff --git " + quoteFileNameIfNeeded(gitOldName) + " " + quoteFileNameIfNeeded(gitNewName));
374
+ if (patch.isDelete) ret.push("deleted file mode " + ((_a = patch.oldMode) !== null && _a !== void 0 ? _a : "100644"));
375
+ if (patch.isCreate) ret.push("new file mode " + ((_b = patch.newMode) !== null && _b !== void 0 ? _b : "100644"));
376
+ if (patch.oldMode && patch.newMode && !patch.isDelete && !patch.isCreate) {
377
+ ret.push("old mode " + patch.oldMode);
378
+ ret.push("new mode " + patch.newMode);
379
+ }
380
+ if (patch.isRename) {
381
+ ret.push("rename from " + quoteFileNameIfNeeded(((_c = patch.oldFileName) !== null && _c !== void 0 ? _c : "").replace(/^a\//, "")));
382
+ ret.push("rename to " + quoteFileNameIfNeeded(((_d = patch.newFileName) !== null && _d !== void 0 ? _d : "").replace(/^b\//, "")));
383
+ }
384
+ if (patch.isCopy) {
385
+ ret.push("copy from " + quoteFileNameIfNeeded(((_e = patch.oldFileName) !== null && _e !== void 0 ? _e : "").replace(/^a\//, "")));
386
+ ret.push("copy to " + quoteFileNameIfNeeded(((_f = patch.newFileName) !== null && _f !== void 0 ? _f : "").replace(/^b\//, "")));
387
+ }
388
+ } else {
389
+ if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName && patch.oldFileName !== void 0) ret.push("Index: " + patch.oldFileName);
390
+ if (headerOptions.includeUnderline) ret.push("===================================================================");
391
+ }
392
+ const hasHunks = patch.hunks.length > 0;
393
+ if (headerOptions.includeFileHeaders && patch.oldFileName !== void 0 && patch.newFileName !== void 0 && (!patch.isGit || hasHunks)) {
394
+ ret.push("--- " + quoteFileNameIfNeeded(patch.oldFileName) + (patch.oldHeader ? " " + patch.oldHeader : ""));
395
+ ret.push("+++ " + quoteFileNameIfNeeded(patch.newFileName) + (patch.newHeader ? " " + patch.newHeader : ""));
396
+ }
397
+ for (let i = 0; i < patch.hunks.length; i++) {
398
+ const hunk = patch.hunks[i];
399
+ const oldStart = hunk.oldLines === 0 ? hunk.oldStart - 1 : hunk.oldStart;
400
+ const newStart = hunk.newLines === 0 ? hunk.newStart - 1 : hunk.newStart;
401
+ ret.push("@@ -" + oldStart + "," + hunk.oldLines + " +" + newStart + "," + hunk.newLines + " @@");
402
+ for (const line of hunk.lines) ret.push(line);
403
+ }
404
+ return ret.join("\n") + "\n";
405
+ }
406
+ function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
407
+ if (typeof options === "function") options = { callback: options };
408
+ if (!(options === null || options === void 0 ? void 0 : options.callback)) {
409
+ const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
410
+ if (!patchObj) return;
411
+ return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);
412
+ } else {
413
+ const { callback } = options;
414
+ structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: (patchObj) => {
415
+ if (!patchObj) callback(void 0);
416
+ else callback(formatPatch(patchObj, options.headerOptions));
417
+ } }));
418
+ }
419
+ }
420
+ /**
421
+ * Split `text` into an array of lines, including the trailing newline character (where present)
422
+ */
423
+ function splitLines(text) {
424
+ const hasTrailingNl = text.endsWith("\n");
425
+ const result = text.split("\n").map((line) => line + "\n");
426
+ if (hasTrailingNl) result.pop();
427
+ else result.push(result.pop().slice(0, -1));
428
+ return result;
429
+ }
430
+ //#endregion
431
+ //#region src/cli/core/text-diff.ts
432
+ const MAX_LINES = 40;
433
+ /**
434
+ * A unified diff from the file on disk to what the command would write, cut to
435
+ * the first {@link MAX_LINES} lines so a CI log stays readable.
436
+ */
437
+ function shortDiff(file, onDisk, next) {
438
+ const lines = createTwoFilesPatch(`${file} (on disk)`, `${file} (generated)`, onDisk, next, void 0, void 0, { context: 2 }).split("\n").filter((line) => !line.startsWith("=====")).filter((line, index, all) => line !== "" || index < all.length - 1);
439
+ if (lines.length <= MAX_LINES) return lines.join("\n");
440
+ const rest = lines.length - MAX_LINES;
441
+ return [...lines.slice(0, MAX_LINES), `… ${rest} more diff line${rest === 1 ? "" : "s"}`].join("\n");
442
+ }
443
+ //#endregion
444
+ export { shortDiff as t };
@@ -3,11 +3,17 @@ import { r as isRecord } from "./compact-CAf557ZB.js";
3
3
  function isThenable(value) {
4
4
  return value !== null && typeof value === "object" && "then" in value && typeof value.then === "function";
5
5
  }
6
- /** Settles a promise nobody awaits, so its rejection is not reported as unhandled. */
6
+ /**
7
+ * Settles a promise nobody awaits, so its rejection is not reported as
8
+ * unhandled.
9
+ */
7
10
  function ignoreRejection(value) {
8
11
  Promise.resolve(value).then(void 0, () => void 0);
9
12
  }
10
- /** Runs a Standard Schema that must answer synchronously; an asynchronous answer fails. */
13
+ /**
14
+ * Runs a Standard Schema that must answer synchronously; an asynchronous answer
15
+ * fails.
16
+ */
11
17
  function validateSync(schema, value) {
12
18
  const result = schema["~standard"].validate(value);
13
19
  if (isThenable(result)) {
@@ -22,7 +28,10 @@ function validateSync(schema, value) {
22
28
  issues: result.issues
23
29
  };
24
30
  }
25
- /** `validateSync` for a schema whose output must be an object; anything else is `undefined`. */
31
+ /**
32
+ * `validateSync` for a schema whose output must be an object; anything else is
33
+ * `undefined`.
34
+ */
26
35
  function validateRecord(schema, value) {
27
36
  const validated = validateSync(schema, value);
28
37
  return validated.ok && isRecord(validated.value) ? validated.value : void 0;