permdock 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/checks-CGkP3Z7A.js +40 -0
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/connector-schema-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/prompt-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/sources-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/text-diff-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { t as freezeCopy } from "./freeze-
|
|
3
|
-
import { n as isForbiddenKey } from "./paths-
|
|
4
|
-
import { i as idText, n as expirySeconds } from "./expiry-
|
|
5
|
-
import { i as readAppData } from "./app-data-
|
|
2
|
+
import { t as freezeCopy } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { n as isForbiddenKey } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { i as idText, n as expirySeconds } from "./expiry-6XByK0dm.js";
|
|
5
|
+
import { i as readAppData } from "./app-data-UNNm07jV.js";
|
|
6
6
|
//#region src/core/scopes.ts
|
|
7
7
|
const RESERVED = /* @__PURE__ */ new Set(["global", "resource"]);
|
|
8
8
|
const NAME = /^[a-z][a-z0-9_]*$/u;
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* A policy without `scopes` keeps the historical pair: `tenant`, and `team`
|
|
11
|
+
* inside it.
|
|
12
|
+
*/
|
|
10
13
|
const IMPLICIT = Object.freeze([Object.freeze({ name: "tenant" }), Object.freeze({
|
|
11
14
|
name: "team",
|
|
12
15
|
within: "tenant"
|
|
@@ -17,9 +20,9 @@ function fail(message) {
|
|
|
17
20
|
/**
|
|
18
21
|
* Validates `definePolicy({ scopes })`. Declaration order is the scope order;
|
|
19
22
|
* every scope after the first names an earlier one in `within`, so the scopes
|
|
20
|
-
* form one tree rooted at the first and have no cycles.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
+
* form one tree rooted at the first and have no cycles. A scope named `tenant`
|
|
24
|
+
* is the first and `team` the second, so the aliases never point at two
|
|
25
|
+
* different scopes.
|
|
23
26
|
*/
|
|
24
27
|
function defineScopes(input) {
|
|
25
28
|
if (input === void 0) return Object.freeze([]);
|
|
@@ -49,7 +52,10 @@ function defineScopes(input) {
|
|
|
49
52
|
}
|
|
50
53
|
return Object.freeze(out);
|
|
51
54
|
}
|
|
52
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* The scopes a policy or snapshot evaluates with: the declared list, or the
|
|
57
|
+
* implicit pair.
|
|
58
|
+
*/
|
|
53
59
|
function scopeList(declared) {
|
|
54
60
|
return declared === void 0 || declared.length === 0 ? IMPLICIT : declared;
|
|
55
61
|
}
|
|
@@ -77,7 +83,10 @@ function scopeChain(scopes, name) {
|
|
|
77
83
|
function rootScope(scopes) {
|
|
78
84
|
return scopes[0]?.name;
|
|
79
85
|
}
|
|
80
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* The id a membership holds for `scope`: its own id, or the `within` entry of
|
|
88
|
+
* an ancestor.
|
|
89
|
+
*/
|
|
81
90
|
function scopeIdOf(membership, scope) {
|
|
82
91
|
if (membership.scope === scope) return membership.id;
|
|
83
92
|
const within = membership.within;
|
|
@@ -85,19 +94,25 @@ function scopeIdOf(membership, scope) {
|
|
|
85
94
|
return within[scope];
|
|
86
95
|
}
|
|
87
96
|
/**
|
|
88
|
-
* A membership of the first scope itself (the only scope without a parent):
|
|
89
|
-
*
|
|
97
|
+
* A membership of the first scope itself (the only scope without a parent): its
|
|
98
|
+
* id is a tenant. Needs no scope list, for code that holds only a subject.
|
|
90
99
|
*/
|
|
91
100
|
function rootMembershipId(membership) {
|
|
92
101
|
if (membership.scope !== void 0) return membership.within === void 0 ? membership.id : void 0;
|
|
93
102
|
return membership.team === void 0 ? membership.tenant : void 0;
|
|
94
103
|
}
|
|
95
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* The instance of the first scope a membership sits in; what the active tenant
|
|
106
|
+
* selects.
|
|
107
|
+
*/
|
|
96
108
|
function tenantOf(membership, scopes) {
|
|
97
109
|
const root = rootScope(scopes);
|
|
98
110
|
return root === void 0 ? void 0 : scopeIdOf(membership, root);
|
|
99
111
|
}
|
|
100
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* A non-empty string. Unlike `isId` in `./ids.ts` it has no length cap:
|
|
114
|
+
* membership fields come from the app, not the wire.
|
|
115
|
+
*/
|
|
101
116
|
function isNonEmptyString(value) {
|
|
102
117
|
return typeof value === "string" && value !== "";
|
|
103
118
|
}
|
|
@@ -107,10 +122,10 @@ function roleList(value) {
|
|
|
107
122
|
}
|
|
108
123
|
/**
|
|
109
124
|
* The canonical form of one membership, or `undefined` when it is malformed
|
|
110
|
-
* (fail-closed: it grants nothing). A named membership is
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
125
|
+
* (fail-closed: it grants nothing). A named membership is `{ scope, id, within
|
|
126
|
+
* }` with one `within` entry per ancestor of `scope`; the `tenant` / `team`
|
|
127
|
+
* input shape and alias names normalise to it. A resource membership keeps
|
|
128
|
+
* `on`. Shapes are exclusive.
|
|
114
129
|
*/
|
|
115
130
|
function normalizeMembership(input, scopes) {
|
|
116
131
|
if (input === null || typeof input !== "object" || Array.isArray(input)) return;
|
|
@@ -212,8 +227,8 @@ function normalizeMemberships(input, scopes) {
|
|
|
212
227
|
}
|
|
213
228
|
/**
|
|
214
229
|
* A subject's memberships in canonical form. Resolved subjects already are;
|
|
215
|
-
* this accepts a hand-built subject passed straight to a condition evaluator
|
|
216
|
-
*
|
|
230
|
+
* this accepts a hand-built subject passed straight to a condition evaluator or
|
|
231
|
+
* compiler.
|
|
217
232
|
*/
|
|
218
233
|
function subjectMemberships(memberships, scopes) {
|
|
219
234
|
const list = memberships ?? [];
|
|
@@ -228,13 +243,16 @@ function activeFor(membership, scopes, active) {
|
|
|
228
243
|
if (root === void 0 || membership.scope === void 0 || !scopeChain(scopes, membership.scope).includes(root)) return true;
|
|
229
244
|
return active !== void 0 && scopeIdOf(membership, root) === active;
|
|
230
245
|
}
|
|
231
|
-
/**
|
|
246
|
+
/**
|
|
247
|
+
* Whether `membership` counts for `key`: always, unless a suspension limits it
|
|
248
|
+
* to `keep`.
|
|
249
|
+
*/
|
|
232
250
|
function keepsPermission(membership, key) {
|
|
233
251
|
return membership.keep === void 0 || membership.keep.includes(key);
|
|
234
252
|
}
|
|
235
253
|
/**
|
|
236
|
-
* The subject as it stands for one permission: memberships a suspension
|
|
237
|
-
*
|
|
254
|
+
* The subject as it stands for one permission: memberships a suspension limits
|
|
255
|
+
* to other permissions are left out. The same object when none is.
|
|
238
256
|
*/
|
|
239
257
|
function subjectForPermission(subject, key) {
|
|
240
258
|
const principal = subject.principal;
|
|
@@ -249,4 +267,4 @@ function subjectForPermission(subject, key) {
|
|
|
249
267
|
};
|
|
250
268
|
}
|
|
251
269
|
//#endregion
|
|
252
|
-
export {
|
|
270
|
+
export { normalizeMembership as a, rootMembershipId as c, scopeIdOf as d, scopeList as f, tenantOf as h, keepsPermission as i, rootScope as l, subjectMemberships as m, defineScopes as n, normalizeMemberships as o, subjectForPermission as p, findScope as r, resolveScope as s, activeFor as t, scopeChain as u };
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { n as PermDockValidationError, t as PROBLEM_BASE } from "../validation-error-
|
|
2
|
-
import { i as PermDockRevokedError, n as PermDockApprovalRequiredError, r as PermDockDeniedError, t as ApprovalHint } from "../errors-
|
|
1
|
+
import { n as PermDockValidationError, t as PROBLEM_BASE } from "../validation-error-YGg2mXyH.js";
|
|
2
|
+
import { i as PermDockRevokedError, n as PermDockApprovalRequiredError, r as PermDockDeniedError, t as ApprovalHint } from "../errors-zi_4T-rx.js";
|
|
3
3
|
import { t as RequestContext } from "../request-context-C2_1lchh.js";
|
|
4
|
-
import { i as memoryRevocationFeed, n as RevocationFeed, t as RevocationEvent } from "../revocations-
|
|
5
|
-
import { C as TenantScope, D as ConnectionOptions, E as ConnectionData, S as TenantOption, T as Connection, _ as WebBotAuthVerifier, a as OperationScopes, b as invalidSignatureResponse, c as ServerPermDock, d as DiscoverViaSignatureAgentOptions, f as InvalidSignatureError, g as WebBotAuthOptions, h as WebBotAuthKeys, i as OpenApiHooks, l as ServerPermDockOptions, m as WebBotAuthKeyLookup, n as DeniedResponseEvent, o as ProtectOptions, p as WebBotAuthJwk, r as Guard, s as ScopeGuard, t as DeniedResponse, u as SnapshotQuery, v as discoverViaSignatureAgent, w as tenantScope, x as webBotAuthVerifier, y as invalidSignatureProblem } from "../server-types-
|
|
6
|
-
import { i as evaluationsHandler } from "../evaluations-
|
|
7
|
-
import { C as subjectFromApiKey, E as createPermDock, S as parseFeedKey, T as problemFromError, _ as generateApiKey, a as SupportSessionContext, b as memoryCredentialStore, c as SupportSessionSubjectOptions, d as ApiKeyFailureCause, f as ApiKeyParts, g as apiKeyVerifier, h as StoredCredential, i as wwwAuthenticate, l as signSupportSession, m as MemoryCredentialStore, n as problemResponse, o as SupportSessionFailureCause, p as ApiKeySubjectOptions, r as validationProblem, s as SupportSessionSource, t as problemFromDecision, u as subjectFromSupportSession, v as generateFeedKey, w as ProblemFromErrorOptions, x as parseApiKey, y as hashApiKey } from "../index-
|
|
8
|
-
import { l as ReplayStore } from "../types-
|
|
9
|
-
import { a as WebhookInput, c as WebhookMessage, d as WebhookSigningKey, f as WebhookVerifier, h as webhookVerifier, i as WebhookHeaders, l as WebhookSigner, m as webhookSigner, n as WebhookAlgorithm, o as WebhookJwk, p as WebhookVerifierOptions, r as WebhookFailureCause, s as WebhookJwks, t as VerifiedWebhookMessage, u as WebhookSignerOptions } from "../standard-webhooks-
|
|
10
|
-
import { t as memoryReplayStore } from "../replay-
|
|
11
|
-
import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-
|
|
12
|
-
import { a as
|
|
13
|
-
export { type ApiKeyFailureCause, type ApiKeyParts, type ApiKeySubjectOptions, type ApprovalHint, type CacheLifeForOptions, type Connection, type ConnectionData, type ConnectionOptions, type DeniedResponse, type DeniedResponseEvent, type DiscoverViaSignatureAgentOptions, type Guard, InvalidSignatureError, type MemoryCredentialStore, type OpenApiHooks, type OperationScopes, PROBLEM_BASE, PermDockApprovalRequiredError, PermDockDeniedError, PermDockRevokedError, PermDockValidationError, type ProblemFromErrorOptions, type ProtectOptions, type ReplayStore, type RequestContext, type RevocationEvent, type RevocationFeed, type RunActClaim, type RunAutomation, type RunBinding, type RunContext, type RunKind, type RunPrincipal, type RunTicket, type RunTicketAutomations, type RunTicketFailureCause, type RunTicketInput, type RunTicketOptions, type RunTicketSubjectOptions, type ScopeGuard, type ServerPermDock, type ServerPermDockOptions, type SnapshotHeaders, type SnapshotHeadersOptions, type SnapshotQuery, type StoredCredential, type SupportSessionContext, type SupportSessionFailureCause, type SupportSessionSource, type SupportSessionSubjectOptions, type TenantOption, type TenantScope, type VerifiedWebhookMessage, type WebBotAuthJwk, type WebBotAuthKeyLookup, type WebBotAuthKeys, type WebBotAuthOptions, type WebBotAuthVerifier, type WebhookAlgorithm, type WebhookFailureCause, type WebhookHeaders, type WebhookInput, type WebhookJwk, type WebhookJwks, type WebhookMessage, type WebhookSigner, type WebhookSignerOptions, type WebhookSigningKey, type WebhookVerifier, type WebhookVerifierOptions, apiKeyVerifier, cacheLifeFor, createPermDock, discoverViaSignatureAgent, evaluationsHandler, generateApiKey, generateFeedKey, hashApiKey, invalidSignatureProblem, invalidSignatureResponse, memoryCredentialStore, memoryReplayStore, memoryRevocationFeed, parseApiKey, parseFeedKey, parseRunTicket, problemFromDecision, problemFromError, problemResponse, signRunTicket, signSupportSession, snapshotHeaders, snapshotTag, subjectFromApiKey, subjectFromRunTicket, subjectFromSupportSession, tenantScope, validationProblem, webBotAuthVerifier, webhookSigner, webhookVerifier, wwwAuthenticate };
|
|
4
|
+
import { i as memoryRevocationFeed, n as RevocationFeed, t as RevocationEvent } from "../revocations-BaUXHM1N.js";
|
|
5
|
+
import { C as TenantScope, D as ConnectionOptions, E as ConnectionData, S as TenantOption, T as Connection, _ as WebBotAuthVerifier, a as OperationScopes, b as invalidSignatureResponse, c as ServerPermDock, d as DiscoverViaSignatureAgentOptions, f as InvalidSignatureError, g as WebBotAuthOptions, h as WebBotAuthKeys, i as OpenApiHooks, l as ServerPermDockOptions, m as WebBotAuthKeyLookup, n as DeniedResponseEvent, o as ProtectOptions, p as WebBotAuthJwk, r as Guard, s as ScopeGuard, t as DeniedResponse, u as SnapshotQuery, v as discoverViaSignatureAgent, w as tenantScope, x as webBotAuthVerifier, y as invalidSignatureProblem } from "../server-types-CIlpSA2G.js";
|
|
6
|
+
import { i as evaluationsHandler } from "../evaluations-z8dQFDaN.js";
|
|
7
|
+
import { C as subjectFromApiKey, E as createPermDock, S as parseFeedKey, T as problemFromError, _ as generateApiKey, a as SupportSessionContext, b as memoryCredentialStore, c as SupportSessionSubjectOptions, d as ApiKeyFailureCause, f as ApiKeyParts, g as apiKeyVerifier, h as StoredCredential, i as wwwAuthenticate, l as signSupportSession, m as MemoryCredentialStore, n as problemResponse, o as SupportSessionFailureCause, p as ApiKeySubjectOptions, r as validationProblem, s as SupportSessionSource, t as problemFromDecision, u as subjectFromSupportSession, v as generateFeedKey, w as ProblemFromErrorOptions, x as parseApiKey, y as hashApiKey } from "../index-B8s204GL.js";
|
|
8
|
+
import { l as ReplayStore } from "../types-DjuMBNF9.js";
|
|
9
|
+
import { a as WebhookInput, c as WebhookMessage, d as WebhookSigningKey, f as WebhookVerifier, h as webhookVerifier, i as WebhookHeaders, l as WebhookSigner, m as webhookSigner, n as WebhookAlgorithm, o as WebhookJwk, p as WebhookVerifierOptions, r as WebhookFailureCause, s as WebhookJwks, t as VerifiedWebhookMessage, u as WebhookSignerOptions } from "../standard-webhooks-C-qX4mJW.js";
|
|
10
|
+
import { t as memoryReplayStore } from "../replay-DNftIb_R.js";
|
|
11
|
+
import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-BAXZ0KOp.js";
|
|
12
|
+
import { a as RunContext, c as RunTicket, d as RunTicketInput, f as RunTicketOptions, g as subjectFromRunTicket, h as signRunTicket, i as RunBinding, l as RunTicketAutomations, m as parseRunTicket, n as RunActClaim, o as RunKind, p as RunTicketSubjectOptions, r as RunAutomation, s as RunPrincipal, t as RUN_TICKET_CLAIMS, u as RunTicketFailureCause } from "../run-ticket-DbWI9f99.js";
|
|
13
|
+
export { type ApiKeyFailureCause, type ApiKeyParts, type ApiKeySubjectOptions, type ApprovalHint, type CacheLifeForOptions, type Connection, type ConnectionData, type ConnectionOptions, type DeniedResponse, type DeniedResponseEvent, type DiscoverViaSignatureAgentOptions, type Guard, InvalidSignatureError, type MemoryCredentialStore, type OpenApiHooks, type OperationScopes, PROBLEM_BASE, PermDockApprovalRequiredError, PermDockDeniedError, PermDockRevokedError, PermDockValidationError, type ProblemFromErrorOptions, type ProtectOptions, RUN_TICKET_CLAIMS, type ReplayStore, type RequestContext, type RevocationEvent, type RevocationFeed, type RunActClaim, type RunAutomation, type RunBinding, type RunContext, type RunKind, type RunPrincipal, type RunTicket, type RunTicketAutomations, type RunTicketFailureCause, type RunTicketInput, type RunTicketOptions, type RunTicketSubjectOptions, type ScopeGuard, type ServerPermDock, type ServerPermDockOptions, type SnapshotHeaders, type SnapshotHeadersOptions, type SnapshotQuery, type StoredCredential, type SupportSessionContext, type SupportSessionFailureCause, type SupportSessionSource, type SupportSessionSubjectOptions, type TenantOption, type TenantScope, type VerifiedWebhookMessage, type WebBotAuthJwk, type WebBotAuthKeyLookup, type WebBotAuthKeys, type WebBotAuthOptions, type WebBotAuthVerifier, type WebhookAlgorithm, type WebhookFailureCause, type WebhookHeaders, type WebhookInput, type WebhookJwk, type WebhookJwks, type WebhookMessage, type WebhookSigner, type WebhookSignerOptions, type WebhookSigningKey, type WebhookVerifier, type WebhookVerifierOptions, apiKeyVerifier, cacheLifeFor, createPermDock, discoverViaSignatureAgent, evaluationsHandler, generateApiKey, generateFeedKey, hashApiKey, invalidSignatureProblem, invalidSignatureResponse, memoryCredentialStore, memoryReplayStore, memoryRevocationFeed, parseApiKey, parseFeedKey, parseRunTicket, problemFromDecision, problemFromError, problemResponse, signRunTicket, signSupportSession, snapshotHeaders, snapshotTag, subjectFromApiKey, subjectFromRunTicket, subjectFromSupportSession, tenantScope, validationProblem, webBotAuthVerifier, webhookSigner, webhookVerifier, wwwAuthenticate };
|
package/dist/server/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { n as PermDockValidationError, t as PROBLEM_BASE } from "../validation-error-
|
|
2
|
-
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-
|
|
1
|
+
import { n as PermDockValidationError, t as PROBLEM_BASE } from "../validation-error-CYg2kJEw.js";
|
|
2
|
+
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-B6R_lg2a.js";
|
|
3
3
|
import { t as memoryRevocationFeed } from "../revocations-Bhr0aMIC.js";
|
|
4
|
-
import { c as
|
|
5
|
-
import { t as memoryReplayStore } from "../replay-
|
|
6
|
-
import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-
|
|
7
|
-
import { d as
|
|
8
|
-
import { n as tenantScope } from "../adapter-context-
|
|
9
|
-
import { t as createPermDock } from "../create-
|
|
10
|
-
import { a as generateFeedKey, c as parseApiKey, i as generateApiKey, l as parseFeedKey, n as subjectFromSupportSession, o as hashApiKey, r as apiKeyVerifier, s as memoryCredentialStore, t as signSupportSession, u as subjectFromApiKey } from "../server-
|
|
11
|
-
import { n as
|
|
12
|
-
import { t as problemFromError } from "../map-error-
|
|
13
|
-
import { n as webhookVerifier, t as webhookSigner } from "../standard-webhooks-
|
|
14
|
-
export { InvalidSignatureError, PROBLEM_BASE, PermDockApprovalRequiredError, PermDockDeniedError, PermDockRevokedError, PermDockValidationError, apiKeyVerifier, cacheLifeFor, createPermDock, discoverViaSignatureAgent, evaluationsHandler, generateApiKey, generateFeedKey, hashApiKey, invalidSignatureProblem, invalidSignatureResponse, memoryCredentialStore, memoryReplayStore, memoryRevocationFeed, parseApiKey, parseFeedKey, parseRunTicket, problemFromDecision, problemFromError, problemResponse, signRunTicket, signSupportSession, snapshotHeaders, snapshotTag, subjectFromApiKey, subjectFromRunTicket, subjectFromSupportSession, tenantScope, validationProblem, webBotAuthVerifier, webhookSigner, webhookVerifier, wwwAuthenticate };
|
|
4
|
+
import { c as problemFromDecision, f as validationProblem, l as problemResponse, p as wwwAuthenticate } from "../problem-BVLHFK33.js";
|
|
5
|
+
import { t as memoryReplayStore } from "../replay-BU09ad4L.js";
|
|
6
|
+
import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-Bx_4xC_6.js";
|
|
7
|
+
import { d as invalidSignatureProblem, f as invalidSignatureResponse, l as InvalidSignatureError, o as evaluationsHandler, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
|
|
8
|
+
import { n as tenantScope } from "../adapter-context-CIQpQxbE.js";
|
|
9
|
+
import { t as createPermDock } from "../create-_noSrY1T.js";
|
|
10
|
+
import { a as generateFeedKey, c as parseApiKey, i as generateApiKey, l as parseFeedKey, n as subjectFromSupportSession, o as hashApiKey, r as apiKeyVerifier, s as memoryCredentialStore, t as signSupportSession, u as subjectFromApiKey } from "../server-3cVlTLde.js";
|
|
11
|
+
import { i as subjectFromRunTicket, n as parseRunTicket, r as signRunTicket, t as RUN_TICKET_CLAIMS } from "../run-ticket-Dv7aF7Dk.js";
|
|
12
|
+
import { t as problemFromError } from "../map-error-pasIGqMT.js";
|
|
13
|
+
import { n as webhookVerifier, t as webhookSigner } from "../standard-webhooks-D67a3nzk.js";
|
|
14
|
+
export { InvalidSignatureError, PROBLEM_BASE, PermDockApprovalRequiredError, PermDockDeniedError, PermDockRevokedError, PermDockValidationError, RUN_TICKET_CLAIMS, apiKeyVerifier, cacheLifeFor, createPermDock, discoverViaSignatureAgent, evaluationsHandler, generateApiKey, generateFeedKey, hashApiKey, invalidSignatureProblem, invalidSignatureResponse, memoryCredentialStore, memoryReplayStore, memoryRevocationFeed, parseApiKey, parseFeedKey, parseRunTicket, problemFromDecision, problemFromError, problemResponse, signRunTicket, signSupportSession, snapshotHeaders, snapshotTag, subjectFromApiKey, subjectFromRunTicket, subjectFromSupportSession, tenantScope, validationProblem, webBotAuthVerifier, webhookSigner, webhookVerifier, wwwAuthenticate };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { a as ownRecord } from "./paths-
|
|
3
|
-
import { m as annotationsFor, n as findPermission } from "./permission-registry-
|
|
4
|
-
import { n as isThenable } from "./thenable-
|
|
5
|
-
import { f as nowMillis, g as secondsOf, m as rfc3339, o as epochSeconds, u as isoAt } from "./time-
|
|
6
|
-
import { t as bytesToBase64Url } from "./sha256-
|
|
7
|
-
import { n as parseSupportSession } from "./support-session-
|
|
2
|
+
import { a as ownRecord } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { m as annotationsFor, n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
4
|
+
import { n as isThenable } from "./thenable-BNSM1U2R.js";
|
|
5
|
+
import { f as nowMillis, g as secondsOf, m as rfc3339, o as epochSeconds, u as isoAt } from "./time-nR1JesoH.js";
|
|
6
|
+
import { t as bytesToBase64Url } from "./sha256-C-4WXKIu.js";
|
|
7
|
+
import { n as parseSupportSession } from "./support-session-BsmPCbz8.js";
|
|
8
8
|
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
9
|
-
import { c as credentialEvent } from "./sink-
|
|
10
|
-
import { i as credentialTenant, n as credentialPolicyViolation, o as isFeedId, r as credentialSubject, s as parseCredential } from "./credential-
|
|
9
|
+
import { c as credentialEvent } from "./sink-D9_vh372.js";
|
|
10
|
+
import { i as credentialTenant, n as credentialPolicyViolation, o as isFeedId, r as credentialSubject, s as parseCredential } from "./credential-CyyyvCsL.js";
|
|
11
11
|
//#region src/server/credentials.ts
|
|
12
12
|
const PREFIX = "pdk_";
|
|
13
13
|
const ID = /^[\w-]{1,128}$/u;
|
|
@@ -41,8 +41,8 @@ function checksum(text, alphabet) {
|
|
|
41
41
|
/**
|
|
42
42
|
* Splits `pdk_<id>_<secret><checksum>`: `id` is 1 to 128 of `A-Z a-z 0-9 _ -`,
|
|
43
43
|
* the secret 43 base62 characters and the checksum the 6 base62 characters of
|
|
44
|
-
* the CRC-32 of everything before it. Anything else, including a checksum
|
|
45
|
-
*
|
|
44
|
+
* the CRC-32 of everything before it. Anything else, including a checksum that
|
|
45
|
+
* does not match, is `undefined`.
|
|
46
46
|
*/
|
|
47
47
|
function parseApiKey(key) {
|
|
48
48
|
if (typeof key !== "string" || key.length > MAX_KEY || !key.startsWith(PREFIX)) return;
|
|
@@ -63,9 +63,9 @@ const FEED_ALPHABET = "abcdefghijklmnopqrstuvwxyz234567";
|
|
|
63
63
|
const FEED_SECRET_LENGTH = 26;
|
|
64
64
|
const FEED_TAIL = /* @__PURE__ */ new RegExp(`^[a-z2-7]{${String(32)}}$`, "u");
|
|
65
65
|
/**
|
|
66
|
-
* Splits `pdfeed_<id>_<secret><checksum>`. `id` is `isFeedId`, the secret is
|
|
67
|
-
*
|
|
68
|
-
*
|
|
66
|
+
* Splits `pdfeed_<id>_<secret><checksum>`. `id` is `isFeedId`, the secret is 26
|
|
67
|
+
* lowercase base32 characters and the checksum is 6 more. A checksum that does
|
|
68
|
+
* not match is `undefined`.
|
|
69
69
|
*/
|
|
70
70
|
function parseFeedKey(key) {
|
|
71
71
|
if (typeof key !== "string" || key.length > 56 || !key.startsWith(FEED_PREFIX)) return;
|
|
@@ -82,8 +82,8 @@ function parseFeedKey(key) {
|
|
|
82
82
|
} : void 0;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
|
-
* A fresh `pdfeed_<id>_<secret><checksum>`: 26 lowercase base32 characters
|
|
86
|
-
*
|
|
85
|
+
* A fresh `pdfeed_<id>_<secret><checksum>`: 26 lowercase base32 characters (130
|
|
86
|
+
* bits) and a 6-character CRC-32 checksum. The whole key is lowercase.
|
|
87
87
|
*/
|
|
88
88
|
function generateFeedKey(id) {
|
|
89
89
|
if (!isFeedId(id)) throw new TypeError("PermDock: a feed id is 1 to 16 of a-z, 0-9 and -");
|
|
@@ -124,11 +124,11 @@ function sameHash(left, right) {
|
|
|
124
124
|
return difference === 0;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
* A `CredentialVerifier` over the application's own table: `find` looks a
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
127
|
+
* A `CredentialVerifier` over the application's own table: `find` looks a key
|
|
128
|
+
* up by the id in it, and the key's hash is compared in constant time. A record
|
|
129
|
+
* that is not a valid v1 credential, or whose id is not the key's, verifies to
|
|
130
|
+
* `null`. A throwing `find` propagates, so the resolver denies with
|
|
131
|
+
* `source-threw`.
|
|
132
132
|
*/
|
|
133
133
|
function apiKeyVerifier(options) {
|
|
134
134
|
return Object.freeze({
|
|
@@ -266,10 +266,10 @@ function anonymous() {
|
|
|
266
266
|
}
|
|
267
267
|
/**
|
|
268
268
|
* Resolves an opaque API key (`pdk_<id>_<secret>`) into the subject its
|
|
269
|
-
* credential acts as. Every failure (a malformed or unknown key, a record
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
269
|
+
* credential acts as. Every failure (a malformed or unknown key, a record that
|
|
270
|
+
* is not a valid credential, expiry, a tenant policy the key breaks, a revoked
|
|
271
|
+
* id, a missing owner, a throwing verifier, source or callback) is the
|
|
272
|
+
* anonymous subject, never a throw.
|
|
273
273
|
*/
|
|
274
274
|
async function subjectFromApiKey(key, options) {
|
|
275
275
|
const tenant = options.tenant;
|
|
@@ -314,8 +314,8 @@ async function subjectFromApiKey(key, options) {
|
|
|
314
314
|
const SUPPORT_SESSION_TYP = "vnd.permdock.support-session+jwt";
|
|
315
315
|
/**
|
|
316
316
|
* Signs a granted `SupportSession` as a `vnd.permdock.support-session+jwt`
|
|
317
|
-
* (`sub` the viewed principal, `act` the support actor, `jti` the session
|
|
318
|
-
*
|
|
317
|
+
* (`sub` the viewed principal, `act` the support actor, `jti` the session id)
|
|
318
|
+
* that expires with the session. Throws a `TypeError` for a record
|
|
319
319
|
* `parseSupportSession` refuses.
|
|
320
320
|
*/
|
|
321
321
|
function signSupportSession(session, signer, options = {}) {
|
|
@@ -380,11 +380,11 @@ async function ended(sessions, id) {
|
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
382
|
/**
|
|
383
|
-
* Resolves a `vnd.permdock.support-session+jwt` into the subject each
|
|
384
|
-
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
383
|
+
* Resolves a `vnd.permdock.support-session+jwt` into the subject each request
|
|
384
|
+
* of the session acts as: the viewed principal loaded live, a `support` actor,
|
|
385
|
+
* the session's permissions as the delegation and `context.supportSession`. The
|
|
386
|
+
* actor must still exist. Every failure is the anonymous subject, never a
|
|
387
|
+
* throw.
|
|
388
388
|
*/
|
|
389
389
|
async function subjectFromSupportSession(token, options) {
|
|
390
390
|
if (typeof token !== "string" || token.length === 0) return anonymousSubject();
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { m as ApprovalStore } from "./types-
|
|
5
|
-
import { a as ProblemDetails, t as ApprovalHint } from "./errors-
|
|
6
|
-
import { t as InstanceOptions } from "./instance-options-
|
|
1
|
+
import { Gt as Snapshot, Ln as Decision, Rt as Instant, Zn as Actor, ar as JsonWebKeyLike, j as PolicyVocabulary, lr as Subject } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock, u as SnapshotOptions } from "./permdock-B6Sf4T_S.js";
|
|
4
|
+
import { m as ApprovalStore } from "./types-B_tiYvk8.js";
|
|
5
|
+
import { a as ProblemDetails, t as ApprovalHint } from "./errors-zi_4T-rx.js";
|
|
6
|
+
import { t as InstanceOptions } from "./instance-options-B0KXqTrJ.js";
|
|
7
7
|
import { t as RequestContext } from "./request-context-C2_1lchh.js";
|
|
8
|
-
import { n as PermDockWrap } from "./wrap-
|
|
9
|
-
import { n as RevocationFeed } from "./revocations-
|
|
10
|
-
import { r as PdpFactory } from "./types-
|
|
11
|
-
import { i as evaluationsHandler } from "./evaluations-
|
|
8
|
+
import { n as PermDockWrap } from "./wrap-DlJE3gS_.js";
|
|
9
|
+
import { n as RevocationFeed } from "./revocations-BaUXHM1N.js";
|
|
10
|
+
import { r as PdpFactory } from "./types-B4uqKDnp.js";
|
|
11
|
+
import { i as evaluationsHandler } from "./evaluations-z8dQFDaN.js";
|
|
12
12
|
//#region src/server/connection.d.ts
|
|
13
13
|
type ConnectionData<T> = T | (() => T | null | undefined | Promise<T | null | undefined>);
|
|
14
14
|
type ConnectionOptions<T = unknown> = {
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The permission the stream or socket is opened for; re-checked after every
|
|
17
|
+
* revalidation.
|
|
18
|
+
*/
|
|
16
19
|
readonly permission?: Permission;
|
|
17
20
|
/** The row for `permission`, or a loader re-run on every revalidation. */
|
|
18
21
|
readonly data?: ConnectionData<T>;
|
|
@@ -25,13 +28,13 @@ type Connection = {
|
|
|
25
28
|
/** Aborts with a `PermDockRevokedError` when the connection must end. */
|
|
26
29
|
readonly signal: AbortSignal;
|
|
27
30
|
/**
|
|
28
|
-
* Per-message decision. Data is validated against the resource schema
|
|
29
|
-
*
|
|
31
|
+
* Per-message decision. Data is validated against the resource schema first
|
|
32
|
+
* unless `{ trusted: true }` marks it as a row the server loaded.
|
|
30
33
|
*/
|
|
31
34
|
readonly check: (permission: Permission, data?: unknown, options?: {
|
|
32
35
|
readonly trusted?: boolean;
|
|
33
36
|
}) => Decision;
|
|
34
|
-
readonly filter: <T>(permission: Permission<string, T
|
|
37
|
+
readonly filter: <T>(permission: Permission<string, NoInfer<T>, "instance">, items: readonly T[]) => T[];
|
|
35
38
|
/**
|
|
36
39
|
* Resolves once every revalidation queued so far has finished, so a message
|
|
37
40
|
* checked after a revocation event is checked against the rebuilt instance.
|
|
@@ -43,14 +46,17 @@ type Connection = {
|
|
|
43
46
|
//#endregion
|
|
44
47
|
//#region src/core/adapter-context.d.ts
|
|
45
48
|
/**
|
|
46
|
-
* The active tenant an adapter resolved from its own framework context.
|
|
47
|
-
*
|
|
49
|
+
* The active tenant an adapter resolved from its own framework context. Present
|
|
50
|
+
* means "use this tenant", even when `tenant` is `undefined`.
|
|
48
51
|
*/
|
|
49
52
|
type TenantScope = {
|
|
50
53
|
readonly tenant: string | undefined;
|
|
51
54
|
};
|
|
52
55
|
type TenantOption<TContext> = string | ((context: TContext) => string | undefined | Promise<string | undefined>);
|
|
53
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Resolves an adapter `tenant` option against its framework context; a throw is
|
|
58
|
+
* no tenant.
|
|
59
|
+
*/
|
|
54
60
|
declare function tenantScope<TContext>(option: TenantOption<TContext> | undefined, context: TContext): Promise<TenantScope>;
|
|
55
61
|
//#endregion
|
|
56
62
|
//#region src/server/web-bot-auth.d.ts
|
|
@@ -75,13 +81,16 @@ type WebBotAuthOptions = {
|
|
|
75
81
|
readonly now?: () => Instant;
|
|
76
82
|
};
|
|
77
83
|
/**
|
|
78
|
-
* An adapter's `webBotAuth` option: `webBotAuthVerifier(options)`,
|
|
79
|
-
*
|
|
84
|
+
* An adapter's `webBotAuth` option: `webBotAuthVerifier(options)`, so an app
|
|
85
|
+
* without it does not bundle RFC 9421 verification.
|
|
80
86
|
*/
|
|
81
87
|
type WebBotAuthVerifier = {
|
|
82
88
|
readonly name?: string;
|
|
83
|
-
/**
|
|
84
|
-
|
|
89
|
+
/**
|
|
90
|
+
* The verified signer as an actor, `undefined` for an unsigned request;
|
|
91
|
+
* throws `InvalidSignatureError` for a bad signature.
|
|
92
|
+
*/
|
|
93
|
+
verify: (request: Request) => Promise<Actor | undefined>;
|
|
85
94
|
};
|
|
86
95
|
type DiscoverViaSignatureAgentOptions = {
|
|
87
96
|
readonly allow: readonly string[];
|
|
@@ -104,7 +113,10 @@ declare function webBotAuthVerifier(options?: WebBotAuthOptions): WebBotAuthVeri
|
|
|
104
113
|
//#endregion
|
|
105
114
|
//#region src/server/server-types.d.ts
|
|
106
115
|
type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
107
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* The user, or a full `Subject` (core then skips `policy.subject`); `null` is
|
|
118
|
+
* anonymous.
|
|
119
|
+
*/
|
|
108
120
|
readonly subject: (request: Request) => TUser | Subject | null | Promise<TUser | Subject | null>;
|
|
109
121
|
readonly actor?: (request: Request) => unknown;
|
|
110
122
|
/** `webBotAuthVerifier(options)`; a verified bot becomes the actor. */
|
|
@@ -123,23 +135,32 @@ type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
|
123
135
|
readonly approval?: ApprovalHint;
|
|
124
136
|
readonly operations?: OperationScopes;
|
|
125
137
|
/**
|
|
126
|
-
* Replaces the response of a refused guard. A status below 300, or a
|
|
127
|
-
*
|
|
138
|
+
* Replaces the response of a refused guard. A status below 300, or a throw,
|
|
139
|
+
* keeps the default response and reports through `on('error')`.
|
|
128
140
|
*/
|
|
129
141
|
readonly deniedResponse?: DeniedResponse;
|
|
130
142
|
/**
|
|
131
|
-
* Request values merged into `subject.context`, under `policy.context`.
|
|
132
|
-
*
|
|
133
|
-
*
|
|
143
|
+
* Request values merged into `subject.context`, under `policy.context`. Only
|
|
144
|
+
* values the server derived belong here, never client input. A throw or a
|
|
145
|
+
* value that is not a JSON object adds nothing and reports through
|
|
134
146
|
* `on('error')`.
|
|
135
147
|
*/
|
|
136
148
|
readonly context?: (request: Request) => RequestContext | undefined | Promise<RequestContext | undefined>;
|
|
137
|
-
/**
|
|
149
|
+
/**
|
|
150
|
+
* Wraps each instance the factory builds; build it with `wrapPermDock` to
|
|
151
|
+
* cover derived instances.
|
|
152
|
+
*/
|
|
138
153
|
readonly wrap?: PermDockWrap;
|
|
139
|
-
/**
|
|
154
|
+
/**
|
|
155
|
+
* The `adapter` label on decision events, revocations and approvals. Defaults
|
|
156
|
+
* to `server`.
|
|
157
|
+
*/
|
|
140
158
|
readonly adapter?: string;
|
|
141
159
|
};
|
|
142
|
-
/**
|
|
160
|
+
/**
|
|
161
|
+
* What `deniedResponse` receives: the refusal and the default Problem Details
|
|
162
|
+
* for it.
|
|
163
|
+
*/
|
|
143
164
|
type DeniedResponseEvent = {
|
|
144
165
|
readonly decision: Exclude<Decision, {
|
|
145
166
|
readonly outcome: "granted";
|
|
@@ -147,10 +168,13 @@ type DeniedResponseEvent = {
|
|
|
147
168
|
readonly problem: ProblemDetails;
|
|
148
169
|
readonly request: Request | undefined;
|
|
149
170
|
};
|
|
150
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* Returns Problem Details with extra members, a `Response`, or nothing for the
|
|
173
|
+
* default.
|
|
174
|
+
*/
|
|
151
175
|
type DeniedResponse = (event: DeniedResponseEvent) => ProblemDetails | Response | undefined | Promise<ProblemDetails | Response | undefined>;
|
|
152
176
|
type OperationScopes = {
|
|
153
|
-
oauthScopesForRequest(method: string, path: string)
|
|
177
|
+
oauthScopesForRequest: (method: string, path: string) => readonly string[] | undefined;
|
|
154
178
|
};
|
|
155
179
|
type Guard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
156
180
|
readonly ok: true;
|
|
@@ -162,7 +186,10 @@ type Guard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
162
186
|
} | {
|
|
163
187
|
readonly ok: false;
|
|
164
188
|
readonly response: Response;
|
|
165
|
-
/**
|
|
189
|
+
/**
|
|
190
|
+
* The refusal behind `response`; absent for a missing row or a bad
|
|
191
|
+
* signature.
|
|
192
|
+
*/
|
|
166
193
|
readonly decision?: Exclude<Decision, {
|
|
167
194
|
readonly outcome: "granted";
|
|
168
195
|
}>;
|
|
@@ -179,15 +206,18 @@ type ScopeGuard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
179
206
|
} | {
|
|
180
207
|
readonly ok: false;
|
|
181
208
|
readonly response: Response;
|
|
182
|
-
/**
|
|
209
|
+
/**
|
|
210
|
+
* The refusal behind `response`; absent for a missing row or a bad
|
|
211
|
+
* signature.
|
|
212
|
+
*/
|
|
183
213
|
readonly decision?: Exclude<Decision, {
|
|
184
214
|
readonly outcome: "granted";
|
|
185
215
|
}>;
|
|
186
216
|
};
|
|
187
217
|
type Loader<T> = (request: Request) => T | null | undefined | Promise<T | null | undefined>;
|
|
188
218
|
/**
|
|
189
|
-
* `protect(permission, data?, options?)`, or `protect(null, data?,
|
|
190
|
-
*
|
|
219
|
+
* `protect(permission, data?, options?)`, or `protect(null, data?, {
|
|
220
|
+
* oauthScopes })` for a route that needs a signed-in principal and, from a
|
|
191
221
|
* delegated token, one of the OAuth scopes it declares, but no permission.
|
|
192
222
|
*/
|
|
193
223
|
type Protect<V extends PolicyVocabulary = PolicyVocabulary, TArgs extends unknown[] = []> = {
|
|
@@ -204,9 +234,9 @@ type OpenApiHooks = {
|
|
|
204
234
|
};
|
|
205
235
|
type ProtectOptions = {
|
|
206
236
|
/**
|
|
207
|
-
* `true` when `data` returns a row the server loaded itself, to skip
|
|
208
|
-
*
|
|
209
|
-
*
|
|
237
|
+
* `true` when `data` returns a row the server loaded itself, to skip schema
|
|
238
|
+
* validation. Anything else is validated against the resource schema before
|
|
239
|
+
* the check.
|
|
210
240
|
*/
|
|
211
241
|
readonly trusted?: boolean;
|
|
212
242
|
/**
|
|
@@ -221,7 +251,10 @@ type ProtectOptions = {
|
|
|
221
251
|
readonly explain?: boolean;
|
|
222
252
|
};
|
|
223
253
|
type SnapshotQuery = {
|
|
224
|
-
/**
|
|
254
|
+
/**
|
|
255
|
+
* The active tenant; defaults to the `tenant` option resolved from the
|
|
256
|
+
* request.
|
|
257
|
+
*/
|
|
225
258
|
readonly tenant?: string;
|
|
226
259
|
readonly include?: SnapshotOptions["include"];
|
|
227
260
|
readonly tenants?: "all";
|
|
@@ -234,23 +267,25 @@ type SnapshotQuery = {
|
|
|
234
267
|
type ServerPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
235
268
|
readonly getPermDock: (request: Request, scope?: TenantScope) => Promise<PermDock<V>>;
|
|
236
269
|
/**
|
|
237
|
-
* The JSON snapshot for a loader (React Router, TanStack Start, SvelteKit,
|
|
238
|
-
* request's cached subject. Send it with
|
|
270
|
+
* The JSON snapshot for a loader (React Router, TanStack Start, SvelteKit,
|
|
271
|
+
* Nuxt), built from the request's cached subject. Send it with
|
|
272
|
+
* `snapshotHeaders(snapshot)`.
|
|
239
273
|
*/
|
|
240
274
|
readonly getSnapshot: (request: Request, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
241
275
|
readonly protect: Protect<V, [scope?: TenantScope]>;
|
|
242
276
|
/**
|
|
243
277
|
* `protect` against an instance the adapter already holds, such as a gateway
|
|
244
|
-
* connection's: the same OAuth scope check, loader, decision and approval
|
|
245
|
-
* A method, so a `ServerPermDock<V>` stays assignable to
|
|
278
|
+
* connection's: the same OAuth scope check, loader, decision and approval
|
|
279
|
+
* resume. A method, so a `ServerPermDock<V>` stays assignable to
|
|
280
|
+
* `ServerPermDock`.
|
|
246
281
|
*/
|
|
247
282
|
protectOn<T = unknown>(instance: PermDock<V>, permission: Permission | null, data?: () => T | null | undefined | Promise<T | null | undefined>, protectOptions?: ProtectOptions, request?: Request): Promise<Guard<T, V> | ScopeGuard<T, V>>;
|
|
248
283
|
/** A long-lived connection for a stream or socket opened by `request`. */
|
|
249
284
|
readonly connection: <T = unknown>(request: Request, options?: ConnectionOptions<T>, scope?: TenantScope) => Promise<Connection>;
|
|
250
285
|
/**
|
|
251
286
|
* Lets `to`, a second `Request` an adapter built for the same incoming
|
|
252
|
-
* request (to re-read a body a parser consumed), reuse the subject and
|
|
253
|
-
*
|
|
287
|
+
* request (to re-read a body a parser consumed), reuse the subject and actor
|
|
288
|
+
* already resolved for `from`.
|
|
254
289
|
*/
|
|
255
290
|
readonly shareSubject: (from: Request, to: Request) => void;
|
|
256
291
|
readonly problem: (decision: Decision, init?: {
|
|
@@ -69,7 +69,8 @@ function rotr(value, bits) {
|
|
|
69
69
|
return value >>> bits | value << 32 - bits;
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* SHA-256 of UTF-8 text. Pure JS so `decide` stays synchronous and
|
|
72
|
+
* SHA-256 of UTF-8 text. Pure JS so `decide` stays synchronous and
|
|
73
|
+
* WinterTC-safe.
|
|
73
74
|
*/
|
|
74
75
|
function sha256(message) {
|
|
75
76
|
const bytes = new TextEncoder().encode(message);
|
|
@@ -142,8 +143,8 @@ function sha256(message) {
|
|
|
142
143
|
return out;
|
|
143
144
|
}
|
|
144
145
|
/**
|
|
145
|
-
* The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
|
|
146
|
-
*
|
|
146
|
+
* The one digest notation: `sha-256:` plus the unpadded base64url SHA-256 of
|
|
147
|
+
* `text`. An RFC 9651 sf-token, so it fits a structured header as is.
|
|
147
148
|
*/
|
|
148
149
|
function sha256Digest(text) {
|
|
149
150
|
return `sha-256:${bytesToBase64Url(sha256(text))}`;
|