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,27 +0,0 @@
1
- //#region src/core/sql.ts
2
- /** A bare Postgres identifier PermDock emits unquoted-safe: letters, digits and `_`, not starting with a digit. */
3
- const SQL_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/u;
4
- /** A validated, double-quoted identifier; anything outside `SQL_IDENT` throws. */
5
- function quoteSqlIdent(name, prefix = "PermDock") {
6
- if (!SQL_IDENT.test(name)) throw new TypeError(`${prefix}: unsafe SQL identifier '${name}'`);
7
- return `"${name}"`;
8
- }
9
- /** A schema-qualified name, each part validated by `quoteSqlIdent`. */
10
- function quoteSqlTable(name, prefix = "PermDock") {
11
- return name.split(".").map((part) => quoteSqlIdent(part, prefix)).join(".");
12
- }
13
- /** A single-quoted string literal with embedded quotes doubled. */
14
- function quoteSqlLiteral(value) {
15
- return `'${value.replaceAll("'", "''")}'`;
16
- }
17
- /** A double-quoted identifier read back from a database, embedded quotes doubled rather than refused. */
18
- function escapeSqlIdent(name) {
19
- return `"${name.replaceAll("\"", "\"\"")}"`;
20
- }
21
- const PLAIN_IDENT = /^[a-z_][a-z0-9_]*$/u;
22
- /** An identifier left bare when it is already lower snake case, otherwise quoted by `escapeSqlIdent`. */
23
- function sqlIdent(name) {
24
- return PLAIN_IDENT.test(name) ? name : escapeSqlIdent(name);
25
- }
26
- //#endregion
27
- export { quoteSqlTable as a, quoteSqlLiteral as i, escapeSqlIdent as n, sqlIdent as o, quoteSqlIdent as r, SQL_IDENT as t };
@@ -1,568 +0,0 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
- import { i as findPermission } from "./permissions-DVoF6dMt.js";
4
- import { b as assertSqlFunctionArg, i as declaredRoleNames, s as grantList, u as levelNames, v as normalizeWhere, x as assertSqlFunctionName, y as assertPortableTwin } from "./policy-xyWg7QdR.js";
5
- import { d as scopeList, m as tenantOf } from "./scopes-CVdPrWN-.js";
6
- import { r as snapshotGrant, t as buildSnapshot } from "./snapshot-Enxd0n-s.js";
7
- import { T as listPlans, s as flattenGrantee } from "./grantee-Cv5Sogfv.js";
8
- import { t as canonicalJson } from "./canonical-json-DemiK4Vp.js";
9
- import { n as sha256, t as bytesToBase64Url } from "./sha256-BO0swRXL.js";
10
- import { g as tenantsOf } from "./validity-uOp8UpYn.js";
11
- import { n as isThenable } from "./thenable-okc2xDsj.js";
12
- import { a as collectSnapshotGrants, c as rankRoles, l as usesAssigns, m as ceilingGrants, n as resolveSubject, o as snapshotOf, s as snapshotScopes, u as declaredRoleNames$1, y as resolveCustomRole } from "./permdock-CbgvLnuo.js";
13
- import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-BrMozJCo.js";
14
- //#region src/conditions/sql-function.ts
15
- function sqlFunction(name, options) {
16
- assertSqlFunctionName(name);
17
- const args = options.args ?? [];
18
- for (const arg of args) assertSqlFunctionArg(arg);
19
- const twin = normalizeWhere(options.twin);
20
- assertPortableTwin(twin);
21
- return freezeDeep({
22
- op: "sqlFunction",
23
- name,
24
- args,
25
- twin
26
- });
27
- }
28
- //#endregion
29
- //#region src/core/interfaces.ts
30
- function memoryEntitlementSource(entries) {
31
- return { entitlementsFor(_principal, options) {
32
- return options.tenant === void 0 ? [] : [...entries[options.tenant] ?? []];
33
- } };
34
- }
35
- function memorySettings(settings) {
36
- const byTenant = new Map(Object.entries(settings));
37
- return Object.freeze({ settingsFor(tenant) {
38
- return byTenant.get(tenant);
39
- } });
40
- }
41
- /** Memberships keyed by principal id; `tenant` is not a filter, as for a database source. */
42
- function memoryMembershipSource(entries) {
43
- const byPrincipal = new Map(Object.entries(entries));
44
- return Object.freeze({
45
- membershipsFor(principal) {
46
- return [...byPrincipal.get(principal.id) ?? []];
47
- },
48
- list(query) {
49
- const members = [];
50
- for (const [id, memberships] of byPrincipal) for (const membership of memberships) if (membership.scope === query.scope && membership.id === query.id) members.push({
51
- principal: { id },
52
- membership
53
- });
54
- return members;
55
- }
56
- });
57
- }
58
- /** A snapshot held in memory; `set` replaces it and notifies every subscriber. */
59
- function memorySnapshotSource(initial) {
60
- let current = initial;
61
- const listeners = /* @__PURE__ */ new Set();
62
- return Object.freeze({
63
- get: () => current,
64
- subscribe(listener) {
65
- listeners.add(listener);
66
- return () => {
67
- listeners.delete(listener);
68
- };
69
- },
70
- set(snapshot) {
71
- current = snapshot;
72
- for (const listener of listeners) listener();
73
- }
74
- });
75
- }
76
- function memoryRoleSource(customRoles) {
77
- const byTenant = /* @__PURE__ */ new Map();
78
- const global = [];
79
- for (const role of customRoles) {
80
- if (role.tenant === void 0) {
81
- global.push(role);
82
- continue;
83
- }
84
- const list = byTenant.get(role.tenant) ?? [];
85
- list.push(role);
86
- byTenant.set(role.tenant, list);
87
- }
88
- return {
89
- rolesFor(tenant) {
90
- return [...byTenant.get(tenant) ?? []];
91
- },
92
- globalRoles() {
93
- return [...global];
94
- }
95
- };
96
- }
97
- //#endregion
98
- //#region src/core/stripe-entitlements.ts
99
- const PAGE = 100;
100
- const MAX_PAGES = 10;
101
- /**
102
- * Plan names from Stripe Entitlements: the `lookup_key` of every active
103
- * entitlement of the tenant's Stripe customer. `customer` maps the active
104
- * tenant to its customer id; no tenant or no customer means no entitlements.
105
- * Pass it as `entitlements`, and grant with `plan('<lookup_key>')`.
106
- */
107
- function fromStripeEntitlements(options) {
108
- return { async entitlementsFor(principal, query) {
109
- if (query.tenant === void 0) return [];
110
- const customer = await options.customer(query.tenant, principal);
111
- if (customer === void 0 || customer === "") return [];
112
- const keys = /* @__PURE__ */ new Set();
113
- let after;
114
- for (let page = 0; page < MAX_PAGES; page += 1) {
115
- const result = await options.stripe.entitlements.activeEntitlements.list(after === void 0 ? {
116
- customer,
117
- limit: PAGE
118
- } : {
119
- customer,
120
- limit: PAGE,
121
- starting_after: after
122
- });
123
- for (const item of result.data) if (typeof item.lookup_key === "string" && item.lookup_key !== "") keys.add(item.lookup_key);
124
- const last = result.data.at(-1);
125
- if (!result.has_more || last === void 0) break;
126
- after = last.id;
127
- }
128
- return [...keys].toSorted();
129
- } };
130
- }
131
- //#endregion
132
- //#region src/core/local-manifest.ts
133
- /** A relation grantee needs the relation graph, which a device does not hold: the grant decides on the server only. */
134
- function localGrant(grant) {
135
- const relational = flattenGrantee(grant.to).some((item) => item.kind === "relation");
136
- return snapshotGrant(relational ? {
137
- ...grant,
138
- portable: false
139
- } : grant, void 0);
140
- }
141
- function customTable(policy, scope, roles) {
142
- const keys = [...new Set(ceilingGrants(policy, scope).map((grant) => grant.permission.key))];
143
- if (keys.length === 0) return;
144
- const resolve = (body) => resolveCustomRole(policy, scope === "global" ? {
145
- name: LOCAL_CUSTOM_ROLE,
146
- scope: "global",
147
- ...body
148
- } : {
149
- name: LOCAL_CUSTOM_ROLE,
150
- tenant: LOCAL_CUSTOM_ROLE,
151
- scope,
152
- ...body
153
- }).grants.map(localGrant);
154
- const permissions = {};
155
- for (const key of keys) {
156
- const leaf = findPermission(policy.permissions, key);
157
- const names = leaf?.kind === "instance" ? levelNames(policy, leaf.resource) : [];
158
- permissions[key] = compact({
159
- all: resolve({ grants: [{ permission: key }] }),
160
- levels: names.length === 0 ? void 0 : Object.fromEntries(names.map((level) => [level, resolve({ grants: [{
161
- permission: key,
162
- level
163
- }] })]))
164
- });
165
- }
166
- const includes = {};
167
- for (const role of roles) {
168
- const grants = resolve({ includes: [role] });
169
- if (grants.length > 0) includes[role] = grants;
170
- }
171
- return {
172
- permissions,
173
- includes
174
- };
175
- }
176
- /**
177
- * What the policy grants, as JSON a device turns into snapshots from its own
178
- * membership rows (`localSnapshot` in `permdock/react-native`). Write it at
179
- * build time; the policy itself never ships to the client.
180
- */
181
- function localSnapshotManifest(policy) {
182
- const roles = [...declaredRoleNames(policy)].toSorted();
183
- const custom = {};
184
- for (const scope of [...scopeList(policy.scopes).map((item) => item.name), "global"]) {
185
- const table = customTable(policy, scope, roles);
186
- if (table !== void 0) custom[scope] = table;
187
- }
188
- const scopes = snapshotScopes(policy);
189
- const { vocabulary } = buildSnapshot({
190
- subject: {
191
- principal: null,
192
- context: {}
193
- },
194
- roles: [],
195
- grants: [],
196
- vocabulary: policy.vocabulary
197
- });
198
- return freezeDeep(compact({
199
- v: 1,
200
- scopes,
201
- vocabulary,
202
- roles,
203
- rank: usesAssigns(policy) ? rankRoles(policy, roles) : void 0,
204
- grants: grantList(policy).map(localGrant),
205
- custom
206
- }));
207
- }
208
- //#endregion
209
- //#region src/core/may-access.ts
210
- function policyPlans(policy) {
211
- const names = new Set(listPlans(policy.vocabulary?.plans).map((p) => p.key));
212
- for (const grant of grantList(policy)) for (const item of flattenGrantee(grant.to)) if (item.kind === "plan") names.add(item.plan);
213
- return [...names];
214
- }
215
- function heldRoleNames(principal) {
216
- return [...principal.roles ?? [], ...(principal.memberships ?? []).flatMap((item) => item.roles)];
217
- }
218
- /**
219
- * An optimistic routing hint for a proxy or middleware, never a decision.
220
- * `false` only when the subject's declared roles provably lack `permission`;
221
- * `true` whenever custom roles, plans, memberships the claims do not carry or
222
- * row conditions could still grant it. Synchronous, no network, never throws.
223
- * Pages, Server Actions and RLS remain the enforcement points.
224
- */
225
- function mayAccess(policy, user, permission, options = {}) {
226
- try {
227
- const resolved = resolveSubject(policy, user, compact({ tenant: options.tenant }), []);
228
- if (isThenable(resolved)) return true;
229
- const principal = resolved.principal;
230
- const relevant = policy.index.grantsByKey.get(permission.key) ?? [];
231
- if (principal !== null) {
232
- const declared = declaredRoleNames$1(policy);
233
- if (heldRoleNames(principal).some((name) => !declared.has(name))) return true;
234
- if ((principal.memberships ?? []).length === 0 && relevant.some((grant) => grant.scope !== "global")) return true;
235
- }
236
- const tenant = options.tenant;
237
- const subject = principal === null ? resolved : {
238
- ...resolved,
239
- principal: {
240
- ...principal,
241
- plans: policyPlans(policy),
242
- memberships: (principal.memberships ?? []).filter((item) => {
243
- const owner = tenantOf(item, scopeList(policy.scopes));
244
- return tenant === void 0 || owner === void 0 || owner === tenant;
245
- })
246
- }
247
- };
248
- const matched = collectSnapshotGrants(policy, subject, []).filter((item) => item.grant.permission.key === permission.key);
249
- if (matched.some((item) => item.grant.effect === "deny" && item.grant.where === void 0 && item.grant.check === void 0 && item.grant.portable)) return false;
250
- return matched.some((item) => item.grant.effect === "allow");
251
- } catch {
252
- return true;
253
- }
254
- }
255
- //#endregion
256
- //#region src/core/custom-role-source.ts
257
- function ofTenant(tenant, roles) {
258
- return Array.isArray(roles) ? roles.filter((role) => role !== null && typeof role === "object" && Reflect.get(role, "tenant") === tenant) : [];
259
- }
260
- /**
261
- * A `RoleSource` over a reader that returns every custom role of a tenant.
262
- * It keeps only the roles of the requested tenant. With `read: 'held'` it
263
- * skips a tenant's read, and `globalRoles`, when the subject holds only
264
- * declared roles there.
265
- */
266
- function customRoleSource(reader, options = {}) {
267
- const declared = options.read === "held" ? declaredRoleNames(options.policy) : void 0;
268
- return Object.freeze({
269
- rolesFor(tenant, context) {
270
- if (declared !== void 0 && context?.held.every((name) => declared.has(name)) === true) return [];
271
- const roles = reader.rolesOf(tenant);
272
- return isThenable(roles) ? roles.then((list) => ofTenant(tenant, list)) : ofTenant(tenant, roles);
273
- },
274
- ...reader.assignable === void 0 ? {} : { assignable: (tenant) => reader.assignable?.(tenant) ?? [] },
275
- ...reader.globalRoles === void 0 ? {} : { globalRoles: (context) => declared !== void 0 && context?.held.every((name) => declared.has(name)) === true ? [] : reader.globalRoles?.() ?? [] }
276
- });
277
- }
278
- //#endregion
279
- //#region src/core/snapshot-for.ts
280
- function withPlans(subject, plans) {
281
- if (plans === void 0 || subject.principal === null) return subject;
282
- return freezeDeep(compact({
283
- ...subject,
284
- principal: compact({
285
- ...subject.principal,
286
- plans: [...plans]
287
- })
288
- }));
289
- }
290
- /**
291
- * Builds the serializable access snapshot for a subject without a request,
292
- * a network call or a cache directive: call it inside the app's own
293
- * `'use cache: private'` function. Synchronous; the policy's `subject` and
294
- * `context` mappers must be synchronous too.
295
- */
296
- function snapshotFor(policy, user, options = {}) {
297
- const auth = [];
298
- const memberships = options.memberships;
299
- const resolved = resolveSubject(policy, user, compact({
300
- tenant: options.tenant,
301
- memberships: memberships === void 0 ? void 0 : { membershipsFor: () => [...memberships] }
302
- }), auth);
303
- if (isThenable(resolved)) throw new TypeError("PermDock: snapshotFor() needs synchronous subject and context mappers. Resolve async data first and pass it as a Subject, or use createPermDock(...).snapshot().");
304
- const subject = withPlans(resolved, options.plans);
305
- const tenants = new Set(tenantsOf(subject.principal, scopeList(policy.scopes)));
306
- const customRoles = (options.customRoles ?? []).filter((item) => item.scope === "global" || item.tenant !== void 0 && tenants.has(item.tenant));
307
- const names = options.assignable;
308
- const assignable = names === void 0 ? void 0 : new Map([...tenants].map((tenant) => [tenant, Object.hasOwn(names, tenant) ? names[tenant] ?? [] : []]));
309
- return snapshotOf(policy, subject, compact({
310
- customRoles,
311
- assignable,
312
- include: options.include,
313
- tenants: options.tenants,
314
- now: options.now
315
- }));
316
- }
317
- //#endregion
318
- //#region src/core/presets.ts
319
- const CRUD_ACTIONS = {
320
- read: { readOnly: true },
321
- update: {},
322
- delete: { destructive: true }
323
- };
324
- const CRUD_COLLECTION = {
325
- create: {},
326
- list: { readOnly: true }
327
- };
328
- const READABLE_ACTIONS = { read: { readOnly: true } };
329
- const READABLE_COLLECTION = { list: { readOnly: true } };
330
- const WRITABLE_ACTIONS = {
331
- read: { readOnly: true },
332
- update: {}
333
- };
334
- const WRITABLE_COLLECTION = {};
335
- function isNameList(list) {
336
- return Array.isArray(list);
337
- }
338
- function toRecord(list) {
339
- if (list === void 0) return {};
340
- if (isNameList(list)) {
341
- const out = {};
342
- for (const name of list) out[name] = {};
343
- return out;
344
- }
345
- return { ...list };
346
- }
347
- function mergeMeta(base, extra) {
348
- return compact({
349
- title: extra.title ?? base.title,
350
- description: extra.description ?? base.description,
351
- tags: extra.tags ?? base.tags,
352
- readOnly: extra.readOnly ?? base.readOnly,
353
- destructive: extra.destructive ?? base.destructive,
354
- idempotent: extra.idempotent ?? base.idempotent
355
- });
356
- }
357
- function mergeActionLists(base, extra) {
358
- const extraRecord = toRecord(extra);
359
- const out = {};
360
- for (const [name, baseMeta] of Object.entries(base)) {
361
- const extraMeta = extraRecord[name];
362
- out[name] = extraMeta === void 0 ? baseMeta : mergeMeta(baseMeta, extraMeta);
363
- }
364
- for (const [name, extraMeta] of Object.entries(extraRecord)) {
365
- if (Object.hasOwn(out, name)) continue;
366
- out[name] = extraMeta;
367
- }
368
- return freezeDeep(out);
369
- }
370
- function finishPreset(baseActions, baseCollection, options) {
371
- const actions = mergeActionLists(baseActions, options?.actions);
372
- const collection = mergeActionLists(baseCollection, options?.collection);
373
- return compact({
374
- id: options?.id,
375
- parent: options?.parent,
376
- relations: options?.relations,
377
- restricted: options?.restricted,
378
- disclosure: options?.disclosure,
379
- actions,
380
- collection: Object.keys(collection).length === 0 ? void 0 : collection
381
- });
382
- }
383
- function crud(options) {
384
- return finishPreset(CRUD_ACTIONS, CRUD_COLLECTION, options);
385
- }
386
- function readable(options) {
387
- return finishPreset(READABLE_ACTIONS, READABLE_COLLECTION, options);
388
- }
389
- function writable(options) {
390
- return finishPreset(WRITABLE_ACTIONS, WRITABLE_COLLECTION, options);
391
- }
392
- //#endregion
393
- //#region src/core/ocsf.ts
394
- /** The OCSF schema version `toOcsf` emits. */
395
- const OCSF_VERSION = "1.3.0";
396
- function status(outcome) {
397
- switch (outcome) {
398
- case "granted": return {
399
- status_id: 1,
400
- status: "Success"
401
- };
402
- case "denied": return {
403
- status_id: 2,
404
- status: "Failure"
405
- };
406
- case "approval-required": return {
407
- status_id: 99,
408
- status: "Other"
409
- };
410
- default: return unknownStatus(outcome);
411
- }
412
- }
413
- /** An outcome this build does not know, from a newer producer, is reported as OCSF Unknown. */
414
- function unknownStatus(_outcome) {
415
- return {
416
- status_id: 0,
417
- status: "Unknown"
418
- };
419
- }
420
- /** Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged. */
421
- function toOcsf(event) {
422
- const principal = event.subject.principal;
423
- const actor = event.subject.actor;
424
- const breakGlass = event.matched?.breakGlass === true;
425
- const detail = event.outcome === "approval-required" ? "approval-required" : event.denials?.map((denial) => denial.reason).join(",");
426
- const time = Date.parse(event.at);
427
- return compact({
428
- class_uid: 3003,
429
- category_uid: 3,
430
- activity_id: 1,
431
- type_uid: 300301,
432
- severity_id: breakGlass ? 4 : 1,
433
- time: Number.isNaN(time) ? 0 : time,
434
- ...status(event.outcome),
435
- status_detail: detail === "" ? void 0 : detail,
436
- message: `${event.permission} ${event.outcome}`,
437
- privileges: [event.permission],
438
- user: principal === null ? { name: "anonymous" } : { uid: principal.id },
439
- actor: actor === void 0 ? void 0 : compact({
440
- user: principal === null ? void 0 : { uid: principal.id },
441
- app_name: actor.id
442
- }),
443
- metadata: compact({
444
- version: OCSF_VERSION,
445
- product: compact({
446
- name: "PermDock",
447
- vendor_name: "PermDock",
448
- feature: event.adapter === void 0 ? void 0 : { name: event.adapter }
449
- }),
450
- tenant_uid: event.tenant,
451
- correlation_uid: event.token
452
- }),
453
- unmapped: compact({
454
- outcome: event.outcome,
455
- scope: event.scope,
456
- resource: event.resource,
457
- source: event.source,
458
- phase: event.phase,
459
- role: event.matched?.role,
460
- via: event.via,
461
- breakGlass: breakGlass ? true : void 0,
462
- purpose: event.purpose,
463
- reason: event.reason
464
- })
465
- });
466
- }
467
- function accessToOcsf(event) {
468
- const time = Date.parse(event.at);
469
- const enable = event.operation === "started";
470
- return compact({
471
- class_uid: 3001,
472
- category_uid: 3,
473
- activity_id: enable ? 2 : 5,
474
- type_uid: enable ? 300102 : 300105,
475
- severity_id: 4,
476
- time: Number.isNaN(time) ? 0 : time,
477
- message: `support access ${event.operation}`,
478
- user: { uid: event.principal.id },
479
- actor: event.actor === void 0 ? void 0 : { user: { uid: event.actor.id } },
480
- metadata: {
481
- version: OCSF_VERSION,
482
- product: {
483
- name: "PermDock",
484
- vendor_name: "PermDock"
485
- },
486
- tenant_uid: event.tenant
487
- },
488
- unmapped: compact({
489
- operation: event.operation,
490
- via: event.via,
491
- roles: event.roles,
492
- member: event.member,
493
- grantedBy: event.grantedBy,
494
- reason: event.reason
495
- })
496
- });
497
- }
498
- //#endregion
499
- //#region src/core/csv.ts
500
- /** The CSV export columns, in order; the header row of every CSV file. */
501
- const CSV_COLUMNS = Object.freeze([
502
- "time",
503
- "principal",
504
- "actor",
505
- "tenant",
506
- "permission",
507
- "outcome",
508
- "matched.role",
509
- "via",
510
- "denials.reason",
511
- "token"
512
- ]);
513
- function field(value) {
514
- const text = value ?? "";
515
- return /[",\r\n]/u.test(text) ? `"${text.replaceAll("\"", "\"\"")}"` : text;
516
- }
517
- /**
518
- * One RFC 4180 row for a decision or approval event, without a line
519
- * terminator; join rows with CRLF under a `CSV_COLUMNS` header.
520
- */
521
- function toCsvRow(event) {
522
- return [
523
- event.at,
524
- event.subject.principal?.id,
525
- event.subject.actor?.id,
526
- event.tenant,
527
- event.permission,
528
- event.outcome,
529
- event.matched?.role,
530
- event.via,
531
- event.denials?.map((denial) => denial.reason).join(";"),
532
- event.token
533
- ].map(field).join(",");
534
- }
535
- //#endregion
536
- //#region src/core/catalog-fingerprint.ts
537
- const OMITTED_TOP_LEVEL = /* @__PURE__ */ new Set([
538
- "generatedAt",
539
- "generator",
540
- "fingerprint"
541
- ]);
542
- function isRecord(value) {
543
- return value !== null && typeof value === "object" && !Array.isArray(value);
544
- }
545
- function fingerprintInput(catalog) {
546
- const out = {};
547
- for (const [key, value] of Object.entries(catalog)) {
548
- if (OMITTED_TOP_LEVEL.has(key)) continue;
549
- out[key] = key === "permissions" && Array.isArray(value) ? value.map((permission) => {
550
- if (!isRecord(permission)) return permission;
551
- const { usages: _usages, ...rest } = permission;
552
- return rest;
553
- }) : value;
554
- }
555
- return out;
556
- }
557
- /**
558
- * The catalog v1 fingerprint: base64url SHA-256 of canonical JSON (keys
559
- * sorted, no whitespace) without `generatedAt`, `generator`, `fingerprint`
560
- * and every `permissions[].usages`, so neither the CLI version, the clock nor
561
- * call sites change it.
562
- */
563
- function catalogFingerprint(catalog) {
564
- if (!isRecord(catalog)) throw new TypeError("PermDock: a catalog must be an object");
565
- return bytesToBase64Url(sha256(canonicalJson(fingerprintInput(catalog))));
566
- }
567
- //#endregion
568
- export { memoryRoleSource as _, accessToOcsf as a, sqlFunction as b, readable as c, customRoleSource as d, mayAccess as f, memoryMembershipSource as g, memoryEntitlementSource as h, OCSF_VERSION as i, writable as l, fromStripeEntitlements as m, CSV_COLUMNS as n, toOcsf as o, localSnapshotManifest as p, toCsvRow as r, crud as s, catalogFingerprint as t, snapshotFor as u, memorySettings as v, memorySnapshotSource as y };
@@ -1,36 +0,0 @@
1
- import { Tt as Snapshot, Yn as Decision } from "./policy-IB6yxpC3.js";
2
- import { f as Permission } from "./permissions-DttnqqxC.js";
3
- import { n as ApprovalState, r as ClientPermDock, s as PermissionState } from "./types-CKNSyIf_.js";
4
- //#region src/client/store.d.ts
5
- type ClientStore = {
6
- get(): ClientPermDock;
7
- subscribe(listener: () => void): () => void;
8
- permissionState(permission: Permission, data?: unknown): PermissionState;
9
- requestApproval(decision: Decision, note?: string): Promise<void>;
10
- /** Hydrate from a pushed snapshot; a compact JWS goes through the verifier. */
11
- replace(value: unknown): void;
12
- /** Stay `pending` until `value` settles, then hydrate; a rejection fails closed. */
13
- follow(value: PromiseLike<Snapshot | string>): void;
14
- /**
15
- * `follow()` once per `value`, without suspending. A thenable React already
16
- * settled (`status: 'fulfilled'`) hydrates at once.
17
- */
18
- track(value: PromiseLike<Snapshot | string>): void;
19
- /**
20
- * The approval state for a decision. While something subscribes, an
21
- * `approval-required` decision is polled at `<approvals>/<token>`.
22
- */
23
- approvalState(decision: Decision): ApprovalState;
24
- /**
25
- * Hydrate from a resolved `snapshotPromise` during render. Idempotent per `source`;
26
- * subscribers are notified in a microtask, never synchronously inside render.
27
- */
28
- adopt(value: Snapshot | string, source: object): void;
29
- snapshot(): Snapshot;
30
- /** The tenant the store currently answers for. */
31
- tenant(): string | undefined;
32
- /** Stops polls, drops in-flight results and persistence; the store keeps answering from its last snapshot. */
33
- dispose(): void;
34
- };
35
- //#endregion
36
- export { ClientStore as t };
@@ -1,52 +0,0 @@
1
- import { Ft as TokenVerifier, Mr as Membership, Tt as Snapshot, Yn as Decision } from "./policy-IB6yxpC3.js";
2
- import { f as Permission } from "./permissions-DttnqqxC.js";
3
- import { r as Role } from "./vocabulary-DA8a8zif.js";
4
- import { a as FilterResult, c as SubjectView, l as TenantView, o as PermissionSet, r as ClientPermDock, s as PermissionState, t as ApprovalHandle, u as UseRolesOptions } from "./types-CKNSyIf_.js";
5
- import { Readable } from "svelte/store";
6
- //#region src/svelte/types.d.ts
7
- type PermDockSvelteOptions = {
8
- /**
9
- * A getter (`() => data.snapshot`) or a readable store re-hydrates the
10
- * store when it changes; a promise keeps the store `pending` until it
11
- * settles (render the same promise with `{#await}`).
12
- */
13
- readonly snapshot: Snapshot | string | (() => Snapshot | string) | Readable<Snapshot | string> | PromiseLike<Snapshot | string>;
14
- /**
15
- * The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
16
- * `false` never calls one: such a check is denied with reason `server-only`.
17
- */
18
- readonly endpoint?: string | false;
19
- /** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
20
- readonly snapshotUrl?: string;
21
- readonly approvals?: string;
22
- /** A getter (`() => page.params.org`) switches the active tenant (`refresh({ tenant })`) when it changes. */
23
- readonly tenant?: string | (() => string | undefined);
24
- readonly fetch?: typeof fetch;
25
- /** A getter is read on every request, so a rotated token applies without a new store. */
26
- readonly headers?: Readonly<Record<string, string>> | (() => Readonly<Record<string, string>> | undefined);
27
- readonly maxAge?: number;
28
- readonly verifier?: TokenVerifier;
29
- };
30
- //#endregion
31
- //#region src/svelte/stores.d.ts
32
- declare function setPermDock(options: PermDockSvelteOptions): ClientPermDock;
33
- declare function getPermDock(): ClientPermDock;
34
- declare function permission(reference: Permission, data?: () => unknown): Readable<PermissionState>;
35
- declare function permissions(references: () => readonly Permission[], data?: () => unknown): Readable<PermissionSet>;
36
- declare function filtered<T>(reference: Permission<string, T, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
37
- declare function tenant(): Readable<TenantView>;
38
- declare function memberships(): Readable<readonly Membership[]>;
39
- declare function roles(options?: () => UseRolesOptions): Readable<{
40
- readonly roles: readonly Role[];
41
- }>;
42
- declare function assignable(): Readable<readonly Role[]>;
43
- type AssignableOptions = {
44
- readonly tenant?: string;
45
- } | (() => {
46
- readonly tenant?: string;
47
- });
48
- declare function assignablePermissions(options?: AssignableOptions): Readable<readonly Permission[]>;
49
- declare function subject(): Readable<SubjectView>;
50
- declare function approval(decision: () => Decision): Readable<ApprovalHandle>;
51
- //#endregion
52
- export { getPermDock as a, permissions as c, subject as d, tenant as f, filtered as i, roles as l, assignable as n, memberships as o, PermDockSvelteOptions as p, assignablePermissions as r, permission as s, approval as t, setPermDock as u };