permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -1,12 +1,63 @@
1
- import { i as describeError } from "./errors-CWfoNg9N.js";
2
- import { i as formatCatalogJson, n as catalogForCompare, t as buildCatalog } from "./catalog-doc-DdGm82XT.js";
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { T as isOperationEffect } from "./src-DLfUWFAI.js";
3
+ import { o as isPermission } from "./permission-registry-Br4jSNVi.js";
4
+ import { r as isOperationRisk } from "./permissions-B-wCP5ZC.js";
5
+ import { a as describeError, i as configError } from "./errors-CWTY6uih.js";
6
+ import { a as rel, r as listSourceFiles, s as writeFileEnsuringDir, t as defaultSrcPath } from "./files-D_JIzUrP.js";
7
+ import { a as formatCatalogJson, n as catalogForCompare, t as buildCatalog } from "./catalog-doc-C9wjsfNY.js";
8
+ import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
3
9
  import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
4
- import { i as rel, r as listSourceFiles, t as defaultSrcPath } from "./files-DWUN9PzI.js";
5
- import { a as loadModule, i as loadConfiguredPolicy, o as pickNamed, r as leavesOf, t as asPermissionTree } from "./load-DhWEB9P1.js";
6
- import { t as shortDiff } from "./text-diff-BdkkYSbi.js";
7
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
10
+ import { t as shortDiff } from "./text-diff-BQcUapOb.js";
11
+ import { existsSync, readFileSync } from "node:fs";
8
12
  import { dirname, relative, resolve } from "node:path";
9
13
  import { Visitor, parseSync, visitorKeys } from "oxc-parser";
14
+ //#region src/cli/catalog-operations.ts
15
+ function metaOf(name, value) {
16
+ const fail = (field) => {
17
+ throw configError(`PermDock CLI: operations.${name}.meta${field} is invalid`);
18
+ };
19
+ if (!isRecord(value)) return fail("");
20
+ const { risk, effects, title } = value;
21
+ if (risk !== void 0 && !isOperationRisk(risk)) return fail(".risk");
22
+ if (effects !== void 0 && (!Array.isArray(effects) || !effects.every(isOperationEffect))) return fail(".effects");
23
+ if (title !== void 0 && typeof title !== "string") return fail(".title");
24
+ return {
25
+ ...risk === void 0 ? {} : { risk },
26
+ ...effects === void 0 ? {} : { effects },
27
+ ...title === void 0 ? {} : { title }
28
+ };
29
+ }
30
+ /**
31
+ * The catalog entries of a `defineOperations` map, in definition order.
32
+ * Throws for a value that is not one, such as a module that exports the
33
+ * definitions object instead of the map.
34
+ */
35
+ function catalogOperations(value) {
36
+ if (!isRecord(value)) throw configError("PermDock CLI: operations export is not an operation map");
37
+ const out = [];
38
+ for (const name of Object.keys(value)) {
39
+ const operation = value[name];
40
+ if (!isRecord(operation) || operation["name"] !== name || !isPermission(operation["permission"])) throw configError(`PermDock CLI: operations.${name} is not an operation; export the defineOperations result`);
41
+ const results = operation["results"];
42
+ if (results !== void 0 && !isPermission(results)) throw configError(`PermDock CLI: operations.${name}.results is not a permission`);
43
+ out.push({
44
+ name,
45
+ permission: operation["permission"].key,
46
+ ...results === void 0 ? {} : { results: results.key },
47
+ meta: metaOf(name, operation["meta"])
48
+ });
49
+ }
50
+ return out;
51
+ }
52
+ /** The configured operations module's catalog entries; `undefined` without one. Throws when it is missing or does not load. */
53
+ async function loadConfiguredOperations(cwd, path, options) {
54
+ if (path === void 0) return;
55
+ const abs = resolve(cwd, path);
56
+ if (!existsSync(abs)) throw configError(`PermDock CLI: operations module not found: ${rel(cwd, abs)}`);
57
+ const mod = await loadModule(abs, options);
58
+ return catalogOperations(pickNamed(mod, ["operations"]));
59
+ }
60
+ //#endregion
10
61
  //#region src/cli/scan.ts
11
62
  /** oxc reports recoverable problems as `Warning` or `Advice`; only `Error` leaves the program incomplete. */
12
63
  const PARSE_ERRORS = /* @__PURE__ */ new Set(["Error"]);
@@ -20,6 +71,7 @@ const CHECK_CALLS = /* @__PURE__ */ new Set([
20
71
  "actions",
21
72
  "usePermission",
22
73
  "getPermission",
74
+ "requirePermission",
23
75
  "protect",
24
76
  "allow",
25
77
  "deny",
@@ -83,7 +135,7 @@ function scanSources(cwd, files, knownKeys) {
83
135
  const callee = calleeName(node.callee);
84
136
  if (callee === "snapshot" || callee === "snapshotFor") snapshots.push({
85
137
  file: fileRel,
86
- line: lineAt(node.start ?? 0),
138
+ line: lineAt(node.start),
87
139
  include: includeOf(node.arguments?.[callee === "snapshot" ? 0 : 2], isRoot)
88
140
  });
89
141
  }
@@ -223,7 +275,7 @@ function boundToRoot(name, ancestors, definitions, cache) {
223
275
  }
224
276
  function recordCall(node, parent, lineAt, fileRel, roots, definitionFiles, usages, unknown, dynamic, roleNames, planNames, _allowKeys, knownKeys) {
225
277
  const callee = calleeName(node.callee);
226
- const line = lineAt(node.start ?? 0);
278
+ const line = lineAt(node.start);
227
279
  if (callee === "definePermissions" || callee === "defineRoles" || callee === "definePlans") {
228
280
  const name = declaredName(parent);
229
281
  if (name !== void 0) {
@@ -262,7 +314,7 @@ function recordMember(node, parent, lineAt, fileRel, isRoot, usages, unknown, dy
262
314
  const root = rootName(node);
263
315
  if (root !== void 0 && isRoot(root)) dynamic.push({
264
316
  file: fileRel,
265
- line: lineAt(node.start ?? 0),
317
+ line: lineAt(node.start),
266
318
  call: callName(parent)
267
319
  });
268
320
  return;
@@ -276,7 +328,7 @@ function recordMember(node, parent, lineAt, fileRel, isRoot, usages, unknown, dy
276
328
  const call = callName(parent);
277
329
  const usage = {
278
330
  file: fileRel,
279
- line: lineAt(node.start ?? 0),
331
+ line: lineAt(node.start),
280
332
  call
281
333
  };
282
334
  if (call === "allow") allowKeys.add(key);
@@ -422,8 +474,20 @@ async function runCollect(input) {
422
474
  const knownKeys = new Set(leavesOf(tree).map((leaf) => leaf.key));
423
475
  const scan = scanSources(input.cwd, files, knownKeys);
424
476
  const policy = input.loadPolicy === void 0 ? await loadConfiguredPolicy(input.cwd, input.config.policy, load) : await input.loadPolicy();
477
+ let operations;
478
+ try {
479
+ operations = await loadConfiguredOperations(input.cwd, input.config.operations, load);
480
+ } catch (error) {
481
+ return {
482
+ code: 2,
483
+ document: void 0,
484
+ scan: void 0,
485
+ outPath,
486
+ message: describeError(error)
487
+ };
488
+ }
425
489
  const generatedAt = input.now.toISOString();
426
- const document = buildCatalog(tree, scan, generatedAt, policy);
490
+ const document = buildCatalog(tree, scan, generatedAt, policy, operations);
427
491
  const next = formatCatalogJson(document);
428
492
  if (input.check) {
429
493
  if (!existsSync(outPath)) return {
@@ -436,7 +500,7 @@ async function runCollect(input) {
436
500
  const current = readFileSync(outPath, "utf8");
437
501
  const currentDoc = JSON.parse(current);
438
502
  const onDisk = catalogForCompare(currentDoc);
439
- const generated = catalogForCompare(input.scanPath === void 0 || samePaths(input.scanPath, srcPath) ? document : buildCatalog(tree, scanSources(input.cwd, listSourceFiles(input.cwd, srcPath), knownKeys), generatedAt, policy));
503
+ const generated = catalogForCompare(input.scanPath === void 0 || samePaths(input.scanPath, srcPath) ? document : buildCatalog(tree, scanSources(input.cwd, listSourceFiles(input.cwd, srcPath), knownKeys), generatedAt, policy, operations));
440
504
  if (onDisk !== generated) {
441
505
  const file = rel(input.cwd, outPath);
442
506
  return {
@@ -455,8 +519,7 @@ async function runCollect(input) {
455
519
  message: `catalog up to date: ${rel(input.cwd, outPath)}`
456
520
  };
457
521
  }
458
- mkdirSync(dirname(outPath), { recursive: true });
459
- writeFileSync(outPath, next);
522
+ writeFileEnsuringDir(outPath, next);
460
523
  const written = [outPath];
461
524
  const barrel = input.collect.barrel ?? input.config.collect?.barrel;
462
525
  if (barrel !== void 0 && barrel !== false) {
@@ -495,8 +558,7 @@ import { permissions as collected } from '${specifier.startsWith(".") ? specifie
495
558
 
496
559
  export const permissions = mergePermissions(collected)
497
560
  `;
498
- mkdirSync(dirname(abs), { recursive: true });
499
- writeFileSync(abs, body);
561
+ writeFileEnsuringDir(abs, body);
500
562
  }
501
563
  //#endregion
502
- export { scanSources as i, guessPermissions as n, runCollect as r, barrelFile as t };
564
+ export { loadConfiguredOperations as a, scanSources as i, guessPermissions as n, runCollect as r, barrelFile as t };
@@ -0,0 +1,55 @@
1
+ import { n as CliError } from "./errors-CWTY6uih.js";
2
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
3
+ import { o as fileOut, t as checkFlag } from "./flags-C3DktBDY.js";
4
+ //#region src/cli/commands/collect.ts
5
+ const collect = defineLeaf({
6
+ flags: {
7
+ ...checkFlag,
8
+ src: {
9
+ type: "string",
10
+ repeatable: true,
11
+ description: "Source roots or globs",
12
+ valueHint: "path"
13
+ },
14
+ out: {
15
+ type: "string",
16
+ description: "Catalog file to write",
17
+ valueHint: "file"
18
+ },
19
+ watch: {
20
+ type: "boolean",
21
+ description: "Collect again when a source, config or policy file changes"
22
+ }
23
+ },
24
+ async run(ctx, { flags }) {
25
+ const out = fileOut("collect", flags.out);
26
+ const overrides = {
27
+ ...flags.src.length > 0 ? { srcPath: [...flags.src] } : {},
28
+ ...out === void 0 ? {} : { out }
29
+ };
30
+ if (flags.watch) {
31
+ if (flags.check) throw new CliError("usage", "collect: --watch writes the catalog; drop --check", { code: "invalid_value" });
32
+ const { watchCollect } = await import("./watch-Cb-NcaUw.js");
33
+ return watchCollect(ctx, overrides);
34
+ }
35
+ const result = await (await import("./collect-FlXJlhus.js")).runCollect({
36
+ cwd: ctx.cwd,
37
+ config: ctx.config,
38
+ collect: overrides,
39
+ check: flags.check,
40
+ now: ctx.now,
41
+ io: ctx.io
42
+ });
43
+ return {
44
+ code: result.code,
45
+ output: result.message,
46
+ ...result.document === void 0 ? {} : { data: {
47
+ out: result.outPath,
48
+ permissions: result.document.permissions.length,
49
+ ...flags.check ? { stale: result.code !== 0 } : {}
50
+ } }
51
+ };
52
+ }
53
+ });
54
+ //#endregion
55
+ export { collect };
@@ -0,0 +1 @@
1
+ export { r as runCollect } from "./collect-CrZJJnEF.js";
@@ -0,0 +1,6 @@
1
+ //#region src/cli/core/command.ts
2
+ function defineLeaf(command) {
3
+ return command;
4
+ }
5
+ //#endregion
6
+ export { defineLeaf as t };
@@ -15,5 +15,15 @@ function isReadonlyArray(value) {
15
15
  function sole(items) {
16
16
  return items.length === 1 ? items[0] : void 0;
17
17
  }
18
+ /** A plain object: not `null` and not an array. */
19
+ function isRecord(value) {
20
+ return value !== null && typeof value === "object" && !Array.isArray(value);
21
+ }
22
+ /** The own entries of `record` whose key is not in `reserved`. */
23
+ function omitKeys(record, reserved) {
24
+ const out = {};
25
+ for (const [key, value] of Object.entries(record)) if (!reserved.has(key)) out[key] = value;
26
+ return out;
27
+ }
18
28
  //#endregion
19
- export { isReadonlyArray as n, sole as r, compact as t };
29
+ export { sole as a, omitKeys as i, isReadonlyArray as n, isRecord as r, compact as t };
@@ -1,3 +1,3 @@
1
1
  import { n as GraphSqlPart, r as RelationsMapping, t as GraphSql } from "../graph-sql-B-dsAT6j.js";
2
- import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-BkRyBDBw.js";
2
+ import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-Ckm2HqBZ.js";
3
3
  export { type CompileWhereOptions, type CompiledCompare, type CompiledExists, type CompiledSql, type CompiledWhere, type GraphSql, type GraphSqlPart, type MembershipTable, type MembershipsMapping, type RelationsMapping, compileWhere, escapeLike };
@@ -1,2 +1 @@
1
- import { n as escapeLike, t as compileWhere } from "../compile-Ba4blROR.js";
2
- export { compileWhere, escapeLike };
1
+ export { t as compileWhere, n as escapeLike } from "../compile-CMqMx_IN.js";
@@ -1,9 +1,12 @@
1
- import { n as isReadonlyArray, r as sole, t as compact } from "./compact-y6vfu2_f.js";
2
- import { S as restrictedFor, d as isEdgeRelation, f as isFieldRelation, g as isSelfParented, l as groupEntries, m as isPrincipalRelation, r as expandRelation, w as assertSafeKey } from "./permissions-DVoF6dMt.js";
3
- import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-KYb4ntaz.js";
4
- import { n as PermDockValidationError } from "./validation-error-CnjZ4t92.js";
5
- import { t as expiredAt } from "./expiry-BoBJ8Tvc.js";
6
- import { c as rootScope, d as scopeList, l as scopeChain, m as tenantOf, o as resolveScope, p as subjectMemberships } from "./scopes-CVdPrWN-.js";
1
+ import { a as sole, n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
2
+ import { t as assertSafeKey } from "./paths-DXSHAMIa.js";
3
+ import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-K6eWUJ0H.js";
4
+ import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
5
+ import { t as expiredAt } from "./expiry-D4_YKRKD.js";
6
+ import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, o as groupEntries, p as restrictedFor, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
7
+ import { o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
8
+ import { c as rootScope, d as scopeList, l as scopeChain, m as tenantOf, o as resolveScope, p as subjectMemberships } from "./scopes-CUPSjo9q.js";
9
+ import { t as isoInstant } from "./instant-BluqDvyS.js";
7
10
  //#region src/conditions/graph-sql.ts
8
11
  /** A Postgres identifier, schema-qualified names split on `.`. */
9
12
  function quoteSqlName(name) {
@@ -338,8 +341,8 @@ function unwrap(value, subject) {
338
341
  return isScalar(resolved) ? resolved : null;
339
342
  }
340
343
  if (isConditionDate(value)) {
341
- const date = new Date(value.date);
342
- return Number.isNaN(date.getTime()) ? null : date;
344
+ const instant = isoInstant(value.date);
345
+ return instant === void 0 ? null : new Date(instant);
343
346
  }
344
347
  if (isReadonlyArray(value)) return value.map((item) => unwrap(item, subject));
345
348
  return value;
@@ -495,7 +498,8 @@ function compileExists(condition, table, subject, now, mappings, scopes) {
495
498
  }
496
499
  function compileMemberOf(condition, options) {
497
500
  assertSafeKey(condition.field, "condition field");
498
- const now = options.now ?? Date.now() / 1e3;
501
+ const now = epochSeconds(options.now);
502
+ if (!Number.isFinite(now)) throw new TypeError(`PermDock: compileWhere ${INVALID_NOW.message}`);
499
503
  const scopes = options.scopes ?? scopeList(void 0);
500
504
  const scope = condition.scope === "resource" ? void 0 : resolveScope(scopes, condition.scope);
501
505
  if (condition.scope !== "resource" && scope === void 0) return NEVER;
@@ -1,5 +1,6 @@
1
- import { Ir as Condition, Pr as Subject, br as Scope, mn as WhereResult } from "./policy-IB6yxpC3.js";
2
- import { y as ResourceNode } from "./permissions-DttnqqxC.js";
1
+ import { Rt as Instant, cn as Scope, ir as Subject, lr as Condition } from "./policy-types-DzwivBgR.js";
2
+ import { N as ResourceNode } from "./vocabulary-D6lPdb4Z.js";
3
+ import { c as WhereResult } from "./permdock-D7eeLJER.js";
3
4
  import { r as RelationsMapping, t as GraphSql } from "./graph-sql-B-dsAT6j.js";
4
5
  //#region src/conditions/compile.d.ts
5
6
  type MembershipTable = {
@@ -32,7 +33,8 @@ type MembershipsMapping = {
32
33
  type CompileWhereOptions = {
33
34
  readonly subject?: Subject;
34
35
  readonly memberships?: MembershipsMapping;
35
- readonly now?: number;
36
+ /** The clock membership expiry is read at; a `Temporal.Instant` fits. Defaults to the current time. */
37
+ readonly now?: Instant;
36
38
  /** The policy's scopes; `where()` results carry them. Defaults to the implicit `tenant` / `team` pair. */
37
39
  readonly scopes?: readonly Scope[];
38
40
  /** Where the relation graph lives; without it a `related` node is refused. */
@@ -0,0 +1,143 @@
1
+ import { n as CliError } from "./errors-CWTY6uih.js";
2
+ import { a as suggestion, o as GLOBAL_FLAGS } from "./args-IIolxxKA.js";
3
+ import { a as resolve } from "./manifest-CtKR3GXL.js";
4
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
5
+ //#region src/cli/core/completion.ts
6
+ const SHELLS = [
7
+ "bash",
8
+ "zsh",
9
+ "fish"
10
+ ];
11
+ function flagNames(flags) {
12
+ return Object.entries(flags).filter(([, flag]) => flag.hidden !== true).map(([name]) => `--${name}`);
13
+ }
14
+ /** The flag `token` names when it waits for a separate value, as `--only` does and `--only=x` does not. */
15
+ function valueFlag(flags, token) {
16
+ if (token === void 0 || !token.startsWith("--") || token.includes("=")) return;
17
+ const flag = flags[token.slice(2)];
18
+ return flag === void 0 || flag.type === "boolean" ? void 0 : flag;
19
+ }
20
+ /** The positional the next bare word fills, after the words already typed past the leaf's path. */
21
+ function positionalAt(leaf, typed) {
22
+ let index = 0;
23
+ for (let i = 0; i < typed.length; i += 1) {
24
+ const token = typed[i] ?? "";
25
+ if (token === "--") return;
26
+ if (token.startsWith("-")) {
27
+ if (valueFlag({
28
+ ...GLOBAL_FLAGS,
29
+ ...leaf.flags
30
+ }, token) !== void 0) i += 1;
31
+ continue;
32
+ }
33
+ index += 1;
34
+ }
35
+ const positionals = leaf.positionals ?? [];
36
+ const last = positionals.at(-1);
37
+ return positionals[index] ?? (last?.variadic === true ? last : void 0);
38
+ }
39
+ /** Values from `complete`, matched against what follows the last comma when the value is a list. */
40
+ async function valuesFor(complete, partial, list) {
41
+ const cut = list ? partial.lastIndexOf(",") + 1 : 0;
42
+ const head = partial.slice(0, cut);
43
+ const taken = head.split(",");
44
+ const tail = partial.slice(cut);
45
+ return (await complete()).filter((value) => value.startsWith(tail) && !taken.includes(value)).map((value) => head + value);
46
+ }
47
+ /**
48
+ * Candidates for the last word of `words`, the tokens typed after
49
+ * `permdock`. An empty list leaves the shell to complete file names.
50
+ */
51
+ async function candidates(words) {
52
+ const partial = words.at(-1) ?? "";
53
+ const before = words.slice(0, -1);
54
+ const resolved = resolve(before);
55
+ if (resolved.kind === "group") {
56
+ if (resolved.unknown !== void 0) return [];
57
+ return (partial.startsWith("-") ? flagNames(GLOBAL_FLAGS) : resolved.entry.children.filter((child) => child.kind === "group" || child.hidden !== true).map((child) => child.name)).filter((name) => name.startsWith(partial));
58
+ }
59
+ const leaf = await resolved.entry.load();
60
+ const flags = {
61
+ ...GLOBAL_FLAGS,
62
+ ...leaf.flags
63
+ };
64
+ const flag = valueFlag(flags, before.at(-1));
65
+ if (flag?.type === "enum") return valuesFor(() => flag.options, partial, flag.repeatable === true);
66
+ if (flag?.type === "string") return flag.complete === void 0 ? [] : valuesFor(flag.complete, partial, flag.repeatable === true || flag.list === true);
67
+ if (partial.startsWith("-")) return flagNames(flags).filter((name) => name.startsWith(partial));
68
+ const positional = positionalAt(leaf, resolved.rest);
69
+ return positional?.complete === void 0 ? [] : valuesFor(positional.complete, partial, false);
70
+ }
71
+ const BASH = `# permdock completion for bash: eval "$(permdock completion bash)"
72
+ _permdock() {
73
+ local -a words=("\${COMP_WORDS[@]:1:COMP_CWORD}")
74
+ local IFS=$'\\n'
75
+ COMPREPLY=($(permdock __complete -- "\${words[@]}" 2>/dev/null))
76
+ if [ \${#COMPREPLY[@]} -eq 0 ]; then
77
+ COMPREPLY=($(compgen -f -- "\${COMP_WORDS[COMP_CWORD]}"))
78
+ fi
79
+ }
80
+ complete -o filenames -F _permdock permdock
81
+ `;
82
+ const ZSH = `#compdef permdock
83
+ # permdock completion for zsh: permdock completion zsh > "\${fpath[1]}/_permdock"
84
+ _permdock() {
85
+ local -a reply
86
+ reply=("\${(@f)$(permdock __complete -- "\${words[@]:1:CURRENT-1}" 2>/dev/null)}")
87
+ if (( \${#reply[@]} == 0 )) || [[ -z "\${reply[1]}" ]]; then
88
+ _files
89
+ else
90
+ compadd -a reply
91
+ fi
92
+ }
93
+ compdef _permdock permdock
94
+ `;
95
+ const FISH = `# permdock completion for fish: permdock completion fish > ~/.config/fish/completions/permdock.fish
96
+ function __permdock_complete
97
+ set -l words (commandline -opc)[2..-1] (commandline -ct)
98
+ permdock __complete -- $words 2>/dev/null
99
+ end
100
+ complete -c permdock -f -a '(__permdock_complete)'
101
+ `;
102
+ function completionScript(shell) {
103
+ switch (shell) {
104
+ case "bash": return BASH;
105
+ case "zsh": return ZSH;
106
+ case "fish": return FISH;
107
+ default: return shell;
108
+ }
109
+ }
110
+ //#endregion
111
+ //#region src/cli/commands/completion.ts
112
+ const completion = defineLeaf({
113
+ positionals: [{
114
+ name: "shell",
115
+ description: "bash, zsh or fish",
116
+ required: true
117
+ }],
118
+ flags: {},
119
+ run(_ctx, { args }) {
120
+ const typed = args["shell"] ?? "";
121
+ const shell = SHELLS.find((name) => name === typed);
122
+ if (shell === void 0) throw new CliError("usage", `completion: unknown shell '${typed}'.${suggestion(typed, SHELLS)} Use bash, zsh or fish.`, { code: "invalid_value" });
123
+ return {
124
+ code: 0,
125
+ output: completionScript(shell),
126
+ data: { shell }
127
+ };
128
+ }
129
+ });
130
+ const complete = defineLeaf({
131
+ flags: {},
132
+ async run(ctx, { passthrough }) {
133
+ const found = await candidates(passthrough);
134
+ ctx.io.stdout(found.length === 0 ? "" : `${found.join("\n")}\n`);
135
+ return {
136
+ code: 0,
137
+ output: "",
138
+ streamed: true
139
+ };
140
+ }
141
+ });
142
+ //#endregion
143
+ export { complete, completion };
@@ -0,0 +1,26 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { a as failOnFlag } from "./flags-C3DktBDY.js";
3
+ //#region src/cli/commands/config.ts
4
+ const config = defineLeaf({
5
+ flags: {
6
+ print: {
7
+ type: "boolean",
8
+ description: "Print the effective config as JSON: the file, as written, and each default"
9
+ },
10
+ ...failOnFlag
11
+ },
12
+ async run(ctx, { flags }) {
13
+ const { runConfig } = await import("./config-report-DUgj62Ai.js");
14
+ return runConfig({
15
+ cwd: ctx.cwd,
16
+ config: ctx.config,
17
+ file: ctx.configPath,
18
+ warnings: ctx.configWarnings,
19
+ print: flags.print,
20
+ json: ctx.json,
21
+ strict: flags["fail-on"] === "warning"
22
+ });
23
+ }
24
+ });
25
+ //#endregion
26
+ export { config };
@@ -1,7 +1,8 @@
1
- import { t as CliError } from "./errors-CWfoNg9N.js";
1
+ import { r as isRecord } from "./compact-CAf557ZB.js";
2
+ import { n as CliError } from "./errors-CWTY6uih.js";
2
3
  import { existsSync } from "node:fs";
3
4
  import { relative, resolve } from "node:path";
4
- //#region src/cli/config-schema.ts
5
+ //#region src/cli/project/config-schema.ts
5
6
  const SECTIONS = {
6
7
  collect: {
7
8
  srcPath: true,
@@ -25,6 +26,7 @@ const SECTIONS = {
25
26
  teamType: true,
26
27
  scopeTypes: true,
27
28
  roleClaim: true,
29
+ roleValues: true,
28
30
  gucPrefix: true,
29
31
  out: true,
30
32
  drizzle: true,
@@ -33,6 +35,8 @@ const SECTIONS = {
33
35
  authorize: true,
34
36
  policyPerRole: true,
35
37
  customRoles: true,
38
+ triggers: true,
39
+ audit: true,
36
40
  capabilities: true,
37
41
  anonymousSignIns: true,
38
42
  fields: true,
@@ -59,7 +63,10 @@ const SECTIONS = {
59
63
  realtime: true,
60
64
  storage: true
61
65
  },
62
- supabase: { hook: true },
66
+ supabase: {
67
+ hook: true,
68
+ schemas: true
69
+ },
63
70
  powersync: {
64
71
  out: true,
65
72
  resources: true,
@@ -79,11 +86,9 @@ const SECTIONS = {
79
86
  const TOP_LEVEL = /* @__PURE__ */ new Set([
80
87
  "permissions",
81
88
  "policy",
89
+ "operations",
82
90
  ...Object.keys(SECTIONS)
83
91
  ]);
84
- function isRecord(value) {
85
- return value !== null && typeof value === "object" && !Array.isArray(value);
86
- }
87
92
  function isSection(key) {
88
93
  return Object.hasOwn(SECTIONS, key);
89
94
  }
@@ -101,7 +106,7 @@ function parseConfig(value, file) {
101
106
  const warnings = [];
102
107
  const unknown = (path, known) => `${file}: unknown key ${path}; PermDock reads ${[...known].join(", ")}`;
103
108
  for (const [key, entry] of Object.entries(value)) {
104
- if (key === "permissions" || key === "policy") {
109
+ if (key === "permissions" || key === "policy" || key === "operations") {
105
110
  if (entry !== void 0 && typeof entry !== "string") throw new CliError("usage", `PermDock CLI: ${file}: ${key} must be a module path string`);
106
111
  continue;
107
112
  }
@@ -120,7 +125,7 @@ function parseConfig(value, file) {
120
125
  };
121
126
  }
122
127
  //#endregion
123
- //#region src/cli/config.ts
128
+ //#region src/cli/project/config.ts
124
129
  const CONFIG_FILES = [
125
130
  "permdock.config.ts",
126
131
  "permdock.config.mts",
@@ -140,8 +145,8 @@ async function readConfig(cwd, fromFlag, options) {
140
145
  warnings: [],
141
146
  file: void 0
142
147
  };
143
- if (!existsSync(path)) throw new Error(`PermDock CLI: config file not found: ${path}`);
144
- const { loadModule, pickNamed } = await import("./load-DwJUafYN.js");
148
+ if (!existsSync(path)) throw new CliError("usage", `PermDock CLI: config file not found: ${path}`, { code: "config_not_found" });
149
+ const { loadModule, pickNamed } = await import("./load-BxEtwlBS.js");
145
150
  return {
146
151
  ...parseConfig(pickNamed(await loadModule(path, options), ["default"]), relative(cwd, path).replaceAll("\\", "/")),
147
152
  file: path
@@ -1,10 +1,10 @@
1
- import { n as CONFIG_REPORT_SCHEMA } from "./version-BvacVTZR.js";
1
+ import { a as rel, t as defaultSrcPath } from "./files-D_JIzUrP.js";
2
+ import { r as CONFIG_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
3
+ import { n as guessPermissions, t as barrelFile } from "./collect-CrZJJnEF.js";
2
4
  import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
3
- import { i as rel, t as defaultSrcPath } from "./files-DWUN9PzI.js";
4
- import { n as guessPermissions, t as barrelFile } from "./collect-DSTE3ml9.js";
5
- import "./sources-4p0-4xQm.js";
6
- import { r as MIGRATION_DIRS } from "./supabase-config-Bj3iDH2I.js";
7
- import { t as DEFAULT_SENSITIVE_ACTIONS } from "./doctor-collect-CjdO0wQX.js";
5
+ import "./sources-vs5dGOsS.js";
6
+ import { t as DOCS_BASE } from "./manifest-CtKR3GXL.js";
7
+ import { n as MIGRATION_DIRS, t as DEFAULT_SENSITIVE_ACTIONS } from "./constants-DcJABbLW.js";
8
8
  //#region src/cli/config-report.ts
9
9
  function configReport(input) {
10
10
  const { cwd, config } = input;
@@ -31,13 +31,22 @@ function configReport(input) {
31
31
  function runConfig(input) {
32
32
  const report = configReport(input);
33
33
  const code = input.strict && report.warnings.length > 0 ? 1 : 0;
34
+ const findings = report.warnings.map((warning) => ({
35
+ code: "config-warning",
36
+ severity: "warning",
37
+ message: warning,
38
+ ...report.file === null ? {} : { file: report.file },
39
+ docs: `${DOCS_BASE}/config`
40
+ }));
34
41
  if (input.print || input.json) return {
35
42
  code,
36
- output: `${JSON.stringify(report, null, 2)}\n`
43
+ output: `${JSON.stringify(report, null, 2)}\n`,
44
+ findings
37
45
  };
38
46
  return {
39
47
  code,
40
- output: `${[report.file === null ? "no permdock.config file; every option takes its default" : `${report.file}: ${report.warnings.length === 0 ? "ok" : `${String(report.warnings.length)} warning${report.warnings.length === 1 ? "" : "s"}`}`, ...report.warnings.map((warning) => ` warn ${warning}`)].join("\n")}\n`
48
+ output: `${[report.file === null ? "no permdock.config file; every option takes its default" : `${report.file}: ${report.warnings.length === 0 ? "ok" : `${String(report.warnings.length)} warning${report.warnings.length === 1 ? "" : "s"}`}`, ...report.warnings.map((warning) => ` warn ${warning}`)].join("\n")}\n`,
49
+ findings
41
50
  };
42
51
  }
43
52
  //#endregion
@@ -1,5 +1,6 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { r as PermDockRevokedError } from "./errors-Cz5zn0mW.js";
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { r as PermDockRevokedError } from "./errors-BKy0EfhN.js";
3
+ import { a as durationOf, o as epochSeconds } from "./time-DkWjdL98.js";
3
4
  //#region src/server/connection.ts
4
5
  /** `setTimeout` stores delays in a signed 32-bit integer. */
5
6
  const MAX_DELAY = 2147483647;
@@ -52,7 +53,7 @@ async function openConnection(input) {
52
53
  const controller = new AbortController();
53
54
  const timers = /* @__PURE__ */ new Set();
54
55
  const decideOptions = compact({
55
- source: "adapter",
56
+ call: "adapter",
56
57
  adapter: input.adapter
57
58
  });
58
59
  let unsubscribe;
@@ -123,7 +124,7 @@ async function openConnection(input) {
123
124
  });
124
125
  };
125
126
  schedule = (permdock) => {
126
- const now = Date.now() / 1e3;
127
+ const now = epochSeconds();
127
128
  const expiresAt = permdock.subject.expiresAt;
128
129
  if (expiresAt !== void 0) {
129
130
  if (expiresAt <= now) {
@@ -141,8 +142,8 @@ async function openConnection(input) {
141
142
  }
142
143
  const membership = nextMembershipExpiry(permdock, now);
143
144
  if (membership !== void 0) after((membership - now) * 1e3, revalidate);
144
- const every = input.options.revalidate;
145
- if (every !== void 0 && Number.isFinite(every) && every > 0) after(every, revalidate);
145
+ const every = durationOf(input.options.revalidate);
146
+ if (every !== void 0) after(every * 1e3, revalidate);
146
147
  };
147
148
  try {
148
149
  current = await input.open();
@@ -184,6 +185,7 @@ async function openConnection(input) {
184
185
  const permdock = live();
185
186
  return permdock === void 0 ? [] : permdock.filter(permission, items, decideOptions);
186
187
  },
188
+ settled: () => chain,
187
189
  close() {
188
190
  closed = true;
189
191
  clear();