permdock 0.7.0 → 0.9.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 +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- package/dist/action-result-BcudBQOF.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +19 -13
- package/dist/ai-sdk/index.js +6 -6
- 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-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +6 -6
- package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
- package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
- package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
- package/dist/authzen/index.d.ts +34 -28
- package/dist/authzen/index.js +23 -20
- package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
- package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +357 -227
- package/dist/better-supabase/index.js +219 -140
- package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
- package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
- 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-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
- package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
- package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
- package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +51 -30
- package/dist/catalog/index.js +18 -15
- package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
- package/dist/catalog-D3oS2GH3.js +1 -0
- package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
- package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
- package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
- package/dist/catalog-operations-DeHTrJSV.js +60 -0
- package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
- 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-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
- 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 +84 -52
- package/dist/cloud/index.js +53 -39
- package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
- package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
- package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
- package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
- package/dist/collect-D-eroIfV.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
- 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-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.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-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
- package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
- package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
- package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
- package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
- package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
- package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
- package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
- package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
- package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +4 -4
- package/dist/delivery/index.js +5 -5
- package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-DHldhVUv.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.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-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- 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-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
- package/dist/gen-BFfzZSLH.js +58 -0
- package/dist/gen-BtfFWGbz.js +827 -0
- package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-0RtHWQDx.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-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
- package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
- package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
- package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
- package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
- package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
- package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
- package/dist/index.d.ts +22 -22
- package/dist/index.js +34 -34
- package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
- package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
- 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 +57 -27
- package/dist/jwt/index.js +24 -21
- package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
- 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-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
- package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
- package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
- package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
- package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
- package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +114 -61
- package/dist/mcp/index.js +70 -40
- package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
- 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 +79 -26
- package/dist/next/index.js +121 -10
- 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 +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
- package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-BNLes61x.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-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/ownership-DA5YdYTm.js +1059 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
- package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
- 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 +20 -13
- package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
- package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
- package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
- package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
- package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
- package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
- package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
- package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
- package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
- package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
- package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
- package/dist/powersync-B701tvhE.js +1 -0
- package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
- package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
- 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-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
- package/dist/protected-action-D8x73IGm.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
- package/dist/pull-C3EEGzSw.js +1 -0
- package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
- 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 +94 -55
- package/dist/react-native/index.js +200 -61
- package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
- 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-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.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-ConCSj1y.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
- package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
- package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
- package/dist/run-Ck22anC2.js +1 -0
- package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
- package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
- package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +2 -2
- package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
- package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
- package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +12 -12
- package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
- package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
- package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
- package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -16
- 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-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
- package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
- package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
- package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
- package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-DZJvxFIZ.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -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 -38
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
- package/dist/supabase-hook-C0FyEACZ.js +1 -0
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
- package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
- package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
- 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-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
- 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-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +1 -1
- package/dist/testing/core.js +1 -1
- package/dist/testing/fixtures/index.d.ts +8 -5
- package/dist/testing/fixtures/index.js +78 -17
- package/dist/testing/index.d.ts +225 -141
- package/dist/testing/index.js +352 -234
- 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-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
- package/dist/{tool-refusal-reAhIzdl.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-c7Xo_2Cu.d.ts +50 -0
- package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
- package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
- package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
- package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
- package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
- package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
- package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
- package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
- package/dist/types-tQB2CEnY.d.ts +262 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-0hjZPIRX.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.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-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
- package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
- package/dist/vue/index.d.ts +71 -22
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
- package/dist/watch-ClLuO2TL.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.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-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
- package/package.json +8 -8
- package/schemas/catalog-v1.json +3 -0
- package/schemas/supabase-manifest-v1.json +33 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +2 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
- package/skills/permdock-wire/references/adapters.md +16 -23
- package/dist/catalog-BCCjSAdH.js +0 -1
- package/dist/collect-k_Dulxr5.js +0 -1
- package/dist/config-CoQHDrDi.js +0 -166
- package/dist/denied-text-D4qkEtFz.d.ts +0 -19
- package/dist/fields-ClcQLrVc.js +0 -238
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/load-DrMHXzgN.js +0 -1
- package/dist/output-files-DPAY7-GX.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
- package/dist/policies-B2lZIurj.js +0 -295
- package/dist/powersync-CExtTLyA.js +0 -1
- package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
- package/dist/protected-BwZYL1X_.d.ts +0 -39
- package/dist/pull-Cty6Ovyu.js +0 -1
- package/dist/run-Bz7DXGEv.js +0 -1
- package/dist/stores-BAZwSYZA.d.ts +0 -31
- package/dist/supabase-hook-DJxC4PoP.js +0 -1
- package/dist/types-CKV71kKh.d.ts +0 -172
- package/dist/usage-y-kBNdqs.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch-Bd9mx3rd.js +0 -1
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as Permission } from "./permission-types-
|
|
3
|
-
import { a as PermDock,
|
|
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 { Un as Decision, Wt as Instant, X as Intent, Zt as Snapshot, dr as JsonWebKeyLike, hr as Subject, j as PolicyVocabulary, rr as Actor } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock, u as SnapshotOptions } from "./permdock-CprAPN3w.js";
|
|
4
|
+
import { m as ApprovalStore } from "./types-DLvhVm1r.js";
|
|
5
|
+
import { a as ProblemDetails, t as ApprovalHint } from "./errors-BIM4MFsJ.js";
|
|
6
|
+
import { t as InstanceOptions } from "./instance-options-CoHn-0e8.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-DxXB54Wu.js";
|
|
9
|
+
import { n as RevocationFeed } from "./revocations-BaUXHM1N.js";
|
|
10
|
+
import { r as PdpFactory } from "./types-DlelvQk4.js";
|
|
11
|
+
import { i as evaluationsHandler } from "./evaluations-DOWuBpWv.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,39 @@ 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
|
+
* `'read'` lets `claimsFirst(…, { versions })` judge the token from the
|
|
156
|
+
* shared version cache. Defaults to `'read'` for `GET`, `HEAD` and `OPTIONS`
|
|
157
|
+
* and `'write'` for every other method. `undefined` keeps the default; a
|
|
158
|
+
* throw or any other value is `'write'`.
|
|
159
|
+
*/
|
|
160
|
+
readonly intent?: (request: Request) => Intent | undefined;
|
|
161
|
+
/**
|
|
162
|
+
* The `adapter` label on decision events, revocations and approvals. Defaults
|
|
163
|
+
* to `server`.
|
|
164
|
+
*/
|
|
140
165
|
readonly adapter?: string;
|
|
141
166
|
};
|
|
142
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* What `deniedResponse` receives: the refusal and the default Problem Details
|
|
169
|
+
* for it.
|
|
170
|
+
*/
|
|
143
171
|
type DeniedResponseEvent = {
|
|
144
172
|
readonly decision: Exclude<Decision, {
|
|
145
173
|
readonly outcome: "granted";
|
|
@@ -147,10 +175,13 @@ type DeniedResponseEvent = {
|
|
|
147
175
|
readonly problem: ProblemDetails;
|
|
148
176
|
readonly request: Request | undefined;
|
|
149
177
|
};
|
|
150
|
-
/**
|
|
178
|
+
/**
|
|
179
|
+
* Returns Problem Details with extra members, a `Response`, or nothing for the
|
|
180
|
+
* default.
|
|
181
|
+
*/
|
|
151
182
|
type DeniedResponse = (event: DeniedResponseEvent) => ProblemDetails | Response | undefined | Promise<ProblemDetails | Response | undefined>;
|
|
152
183
|
type OperationScopes = {
|
|
153
|
-
oauthScopesForRequest(method: string, path: string)
|
|
184
|
+
oauthScopesForRequest: (method: string, path: string) => readonly string[] | undefined;
|
|
154
185
|
};
|
|
155
186
|
type Guard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
156
187
|
readonly ok: true;
|
|
@@ -162,7 +193,10 @@ type Guard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
162
193
|
} | {
|
|
163
194
|
readonly ok: false;
|
|
164
195
|
readonly response: Response;
|
|
165
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* The refusal behind `response`; absent for a missing row or a bad
|
|
198
|
+
* signature.
|
|
199
|
+
*/
|
|
166
200
|
readonly decision?: Exclude<Decision, {
|
|
167
201
|
readonly outcome: "granted";
|
|
168
202
|
}>;
|
|
@@ -179,15 +213,18 @@ type ScopeGuard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
179
213
|
} | {
|
|
180
214
|
readonly ok: false;
|
|
181
215
|
readonly response: Response;
|
|
182
|
-
/**
|
|
216
|
+
/**
|
|
217
|
+
* The refusal behind `response`; absent for a missing row or a bad
|
|
218
|
+
* signature.
|
|
219
|
+
*/
|
|
183
220
|
readonly decision?: Exclude<Decision, {
|
|
184
221
|
readonly outcome: "granted";
|
|
185
222
|
}>;
|
|
186
223
|
};
|
|
187
224
|
type Loader<T> = (request: Request) => T | null | undefined | Promise<T | null | undefined>;
|
|
188
225
|
/**
|
|
189
|
-
* `protect(permission, data?, options?)`, or `protect(null, data?,
|
|
190
|
-
*
|
|
226
|
+
* `protect(permission, data?, options?)`, or `protect(null, data?, {
|
|
227
|
+
* oauthScopes })` for a route that needs a signed-in principal and, from a
|
|
191
228
|
* delegated token, one of the OAuth scopes it declares, but no permission.
|
|
192
229
|
*/
|
|
193
230
|
type Protect<V extends PolicyVocabulary = PolicyVocabulary, TArgs extends unknown[] = []> = {
|
|
@@ -204,9 +241,9 @@ type OpenApiHooks = {
|
|
|
204
241
|
};
|
|
205
242
|
type ProtectOptions = {
|
|
206
243
|
/**
|
|
207
|
-
* `true` when `data` returns a row the server loaded itself, to skip
|
|
208
|
-
*
|
|
209
|
-
*
|
|
244
|
+
* `true` when `data` returns a row the server loaded itself, to skip schema
|
|
245
|
+
* validation. Anything else is validated against the resource schema before
|
|
246
|
+
* the check.
|
|
210
247
|
*/
|
|
211
248
|
readonly trusted?: boolean;
|
|
212
249
|
/**
|
|
@@ -221,7 +258,10 @@ type ProtectOptions = {
|
|
|
221
258
|
readonly explain?: boolean;
|
|
222
259
|
};
|
|
223
260
|
type SnapshotQuery = {
|
|
224
|
-
/**
|
|
261
|
+
/**
|
|
262
|
+
* The active tenant; defaults to the `tenant` option resolved from the
|
|
263
|
+
* request.
|
|
264
|
+
*/
|
|
225
265
|
readonly tenant?: string;
|
|
226
266
|
readonly include?: SnapshotOptions["include"];
|
|
227
267
|
readonly tenants?: "all";
|
|
@@ -234,23 +274,25 @@ type SnapshotQuery = {
|
|
|
234
274
|
type ServerPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
235
275
|
readonly getPermDock: (request: Request, scope?: TenantScope) => Promise<PermDock<V>>;
|
|
236
276
|
/**
|
|
237
|
-
* The JSON snapshot for a loader (React Router, TanStack Start, SvelteKit,
|
|
238
|
-
* request's cached subject. Send it with
|
|
277
|
+
* The JSON snapshot for a loader (React Router, TanStack Start, SvelteKit,
|
|
278
|
+
* Nuxt), built from the request's cached subject. Send it with
|
|
279
|
+
* `snapshotHeaders(snapshot)`.
|
|
239
280
|
*/
|
|
240
281
|
readonly getSnapshot: (request: Request, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
241
282
|
readonly protect: Protect<V, [scope?: TenantScope]>;
|
|
242
283
|
/**
|
|
243
284
|
* `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
|
|
285
|
+
* connection's: the same OAuth scope check, loader, decision and approval
|
|
286
|
+
* resume. A method, so a `ServerPermDock<V>` stays assignable to
|
|
287
|
+
* `ServerPermDock`.
|
|
246
288
|
*/
|
|
247
289
|
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
290
|
/** A long-lived connection for a stream or socket opened by `request`. */
|
|
249
291
|
readonly connection: <T = unknown>(request: Request, options?: ConnectionOptions<T>, scope?: TenantScope) => Promise<Connection>;
|
|
250
292
|
/**
|
|
251
293
|
* 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
|
-
*
|
|
294
|
+
* request (to re-read a body a parser consumed), reuse the subject and actor
|
|
295
|
+
* already resolved for `from`.
|
|
254
296
|
*/
|
|
255
297
|
readonly shareSubject: (from: Request, to: Request) => void;
|
|
256
298
|
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))}`;
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as isForbiddenKey } from "./paths-
|
|
3
|
-
import { t as byCodePoint } from "./compare-
|
|
4
|
-
import { i as configError } from "./errors-
|
|
5
|
-
import { a as quoteQualifiedTable, c as quoteSqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, t as SQL_IDENT } from "./sql-
|
|
6
|
-
import "./
|
|
2
|
+
import { n as isForbiddenKey } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { t as byCodePoint } from "./compare-DTfyUunF.js";
|
|
4
|
+
import { i as configError } from "./errors-Vpu6rKHl.js";
|
|
5
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, t as SQL_IDENT } from "./sql-0WjxIp9g.js";
|
|
6
|
+
import { t as byScope } from "./compile-EzEMB-7v.js";
|
|
7
|
+
import "./sources-CMAM-2A3.js";
|
|
7
8
|
//#region src/cli/sql/columns.ts
|
|
8
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* The Postgres type a JSON Schema property compares as; `undefined` for text or
|
|
11
|
+
* an unknown shape.
|
|
12
|
+
*/
|
|
9
13
|
function columnTypeOf(property) {
|
|
10
14
|
if (!isRecord(property)) return;
|
|
11
15
|
const variants = [property["anyOf"], property["oneOf"]].find(Array.isArray);
|
|
@@ -67,14 +71,21 @@ function sqlType(name) {
|
|
|
67
71
|
function tenantTypeOf(ctx) {
|
|
68
72
|
return sqlType(ctx.tenantType ?? "uuid");
|
|
69
73
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Postgres type of scope `name`'s id: `scopeTypes` by name or by its `tenant` /
|
|
76
|
+
* `team` alias, then the tenant type.
|
|
77
|
+
*/
|
|
74
78
|
function scopeTypeOf(ctx, name) {
|
|
75
|
-
const declared = ctx.scopeTypes
|
|
76
|
-
|
|
77
|
-
|
|
79
|
+
const declared = byScope(ctx.scopeTypes, ctx.scopes, name);
|
|
80
|
+
return declared === void 0 ? tenantTypeOf(ctx) : sqlType(declared);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The tenant type `rls.scopeTypes` gives the first scope, else `uuid`: the type
|
|
84
|
+
* the tenant claim and the custom-role tenant arguments are cast to.
|
|
85
|
+
*/
|
|
86
|
+
function firstScopeType(scopeTypes, scopes) {
|
|
87
|
+
const first = scopes[0]?.name;
|
|
88
|
+
return (first === void 0 ? void 0 : byScope(scopeTypes, scopes, first)) ?? scopeTypes?.["tenant"] ?? "uuid";
|
|
78
89
|
}
|
|
79
90
|
//#endregion
|
|
80
91
|
//#region src/cli/sql/quote.ts
|
|
@@ -102,10 +113,10 @@ function declaredArray(values) {
|
|
|
102
113
|
return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteLiteral).join(", ")}]::text[]`;
|
|
103
114
|
}
|
|
104
115
|
/**
|
|
105
|
-
* A text array as a Postgres literal (`'{admin,owner}'`). An element that
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
116
|
+
* A text array as a Postgres literal (`'{admin,owner}'`). An element that holds
|
|
117
|
+
* a delimiter, a brace, a quote, a backslash, whitespace, or that reads as
|
|
118
|
+
* `NULL`, is double-quoted and escaped, so one element can never split into
|
|
119
|
+
* several.
|
|
109
120
|
*/
|
|
110
121
|
function textArrayLiteral(values) {
|
|
111
122
|
return quoteLiteral(`{${values.map((value) => value === "" || /[\s,{}"\\]/u.test(value) || /^null$/iu.test(value) ? `"${value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"` : value).join(",")}}`);
|
|
@@ -118,21 +129,21 @@ function parseMembershipsFlag(raw) {
|
|
|
118
129
|
const colon = raw.indexOf(":");
|
|
119
130
|
const table = colon === -1 ? raw : raw.slice(0, colon);
|
|
120
131
|
const cols = (colon === -1 ? "" : raw.slice(colon + 1)).split(",").map((item) => item.trim()).filter((item) => item !== "");
|
|
121
|
-
return { tenant: {
|
|
132
|
+
return { scopes: { tenant: {
|
|
122
133
|
table,
|
|
123
|
-
tenant: cols[0] ?? "tenant_id",
|
|
134
|
+
columns: { tenant: cols[0] ?? "tenant_id" },
|
|
124
135
|
user: cols[1] ?? "user_id",
|
|
125
136
|
role: cols[2] ?? "role",
|
|
126
137
|
...cols[3] === void 0 ? {} : { expiresAt: cols[3] }
|
|
127
|
-
} };
|
|
138
|
+
} } };
|
|
128
139
|
}
|
|
129
140
|
//#endregion
|
|
130
141
|
//#region src/cli/sql/subject.ts
|
|
131
142
|
/**
|
|
132
|
-
* A role with `for` counts only on a membership of one of those kinds:
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
143
|
+
* A role with `for` counts only on a membership of one of those kinds: `case
|
|
144
|
+
* role when 'admin' then via = any(...) ... else true end`. A missing kind
|
|
145
|
+
* (`viaExpr` null) holds none of them. A constant kind folds into the roles it
|
|
146
|
+
* excludes, or no filter. `undefined` when nothing is filtered.
|
|
136
147
|
*/
|
|
137
148
|
function kindFilterSql(ctx, roleExpr, viaExpr) {
|
|
138
149
|
const kinds = Object.entries(ctx.ownership?.kinds ?? {}).toSorted(([a], [b]) => byCodePoint(a, b));
|
|
@@ -143,7 +154,10 @@ function kindFilterSql(ctx, roleExpr, viaExpr) {
|
|
|
143
154
|
}
|
|
144
155
|
return `case ${roleExpr} ${kinds.map(([role, allowed]) => `when ${quoteLiteral(role)} then coalesce(${viaExpr}, '') = any(array[${allowed.map(quoteLiteral).join(", ")}]::text[])`).join(" ")} else true end`;
|
|
145
156
|
}
|
|
146
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* The kind check for one known role; `undefined` when it has no `for` or a
|
|
159
|
+
* constant kind it allows.
|
|
160
|
+
*/
|
|
147
161
|
function roleKindSql(ctx, role, viaExpr) {
|
|
148
162
|
const allowed = ctx.ownership?.kinds[role];
|
|
149
163
|
if (allowed === void 0) return;
|
|
@@ -161,7 +175,10 @@ function keyTenantSql(ctx, tenant) {
|
|
|
161
175
|
const named = `nullif(${subjectClaimJsonSql(ctx, keys.claim)} ->> ${quoteLiteral(keys.tenant)}, '')`;
|
|
162
176
|
return tenant === void 0 ? `${named} is null` : `(${named} is null or (${tenant})::text = ${named})`;
|
|
163
177
|
}
|
|
164
|
-
/**
|
|
178
|
+
/**
|
|
179
|
+
* The active-tenant claim cast to the tenant column's type, so the comparison
|
|
180
|
+
* uses the column's index.
|
|
181
|
+
*/
|
|
165
182
|
function tenantClaimSql(ctx) {
|
|
166
183
|
return `${subjectClaimSql(ctx, ctx.tenantClaim)}::${tenantTypeOf(ctx)}`;
|
|
167
184
|
}
|
|
@@ -170,7 +187,10 @@ function userIdHelperSql(ctx) {
|
|
|
170
187
|
return qualified(ctx, USER_ID_HELPER);
|
|
171
188
|
}
|
|
172
189
|
const SESSION_LIVE_HELPER = "permdock_session_live";
|
|
173
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* `{ subject: { session: { live: true } } }` in a policy; only Supabase has
|
|
192
|
+
* `auth.sessions`.
|
|
193
|
+
*/
|
|
174
194
|
function liveSessionSql(ctx) {
|
|
175
195
|
if (ctx.dialect !== "supabase") throw configError(`PermDock CLI: { subject: { session: { live: true } } } reads auth.sessions, which only the supabase dialect has (got ${ctx.dialect})`);
|
|
176
196
|
return `(select ${qualified(ctx, SESSION_LIVE_HELPER)}())`;
|
|
@@ -245,7 +265,10 @@ function subjectClaimJsonSql(ctx, claim) {
|
|
|
245
265
|
function viaAllowed(value, allowed) {
|
|
246
266
|
return allowed.includes(value ?? "");
|
|
247
267
|
}
|
|
248
|
-
/**
|
|
268
|
+
/**
|
|
269
|
+
* The membership kind of a row `m` of `table`: its column as text, or its
|
|
270
|
+
* constant (`null` without one).
|
|
271
|
+
*/
|
|
249
272
|
function memberVia(table) {
|
|
250
273
|
const via = table.via;
|
|
251
274
|
if (via === void 0) return { value: null };
|
|
@@ -267,7 +290,10 @@ const HELPERS = {
|
|
|
267
290
|
has: "permdock_has",
|
|
268
291
|
hasFor: "permdock_has_for"
|
|
269
292
|
};
|
|
270
|
-
/**
|
|
293
|
+
/**
|
|
294
|
+
* Objects `--custom-roles` adds next to the helpers. Names are part of the SQL
|
|
295
|
+
* contract.
|
|
296
|
+
*/
|
|
271
297
|
const CUSTOM_ROLES = {
|
|
272
298
|
permissions: "custom_role_permissions",
|
|
273
299
|
includes: "custom_role_includes",
|
|
@@ -275,6 +301,7 @@ const CUSTOM_ROLES = {
|
|
|
275
301
|
keys: "permdock_custom_keys",
|
|
276
302
|
beyond: "permdock_custom_role_beyond",
|
|
277
303
|
guard: "permdock_custom_role_guard",
|
|
304
|
+
syncGuard: "permdock_sync_custom_role_guard",
|
|
278
305
|
beyondFor: "permdock_custom_role_beyond_for",
|
|
279
306
|
guardFor: "permdock_custom_role_guard_for",
|
|
280
307
|
shape: "permdock_custom_role_shape",
|
|
@@ -296,16 +323,22 @@ const CUSTOM_ROLES = {
|
|
|
296
323
|
};
|
|
297
324
|
/** The function `rls.roles` adds. The name is part of the SQL contract. */
|
|
298
325
|
const GLOBAL_ROLES = { replace: "permdock_replace_global_roles" };
|
|
299
|
-
/**
|
|
326
|
+
/**
|
|
327
|
+
* `user` is the SQL for the user id: the dialect's (the default) or the
|
|
328
|
+
* `p_user` parameter of a `_for` helper.
|
|
329
|
+
*/
|
|
300
330
|
function signedIn(ctx, user = subjectIdSql(ctx)) {
|
|
301
331
|
return `coalesce(${user}::text, '') <> ''`;
|
|
302
332
|
}
|
|
303
333
|
function rootName(ctx) {
|
|
304
334
|
return ctx.scopes[0]?.name ?? "tenant";
|
|
305
335
|
}
|
|
306
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* The stored allow as `permissions` hands it to `permdock_custom_keys`: `key`,
|
|
338
|
+
* or `key@level` with levels.
|
|
339
|
+
*/
|
|
307
340
|
function allowEntry(ctx) {
|
|
308
341
|
return ctx.customRoles?.levels === true ? "permission || coalesce('@' || c.level, '')" : "permission";
|
|
309
342
|
}
|
|
310
343
|
//#endregion
|
|
311
|
-
export { quoteQualified as A, parseMembershipsFlag as C, qualified as D, helperSchema as E,
|
|
344
|
+
export { quoteQualified as A, parseMembershipsFlag as C, qualified as D, helperSchema as E, firstScopeType as F, scopeTypeOf as I, sqlType as L, textArrayLiteral as M, arrayColumnsOf as N, quoteIdent as O, columnTypesOf as P, tenantTypeOf as R, CLAIM as S, declaredArray as T, subjectClaimJsonSql as _, customRolesOn as a, tenantClaimSql as b, SESSION_LIVE_HELPER as c, keyTenantSql as d, kindFilterSql as f, sessionLiveHelperSql as g, roleKindSql as h, allowEntry as i, quoteTable as j, quoteLiteral as k, USER_ID_HELPER as l, memberVia as m, GLOBAL_ROLES as n, rootName as o, liveSessionSql as p, HELPERS as r, signedIn as s, CUSTOM_ROLES as t, globalKindFilterSql as u, subjectClaimSql as v, CLI as w, userIdHelperSql as x, subjectIdSql as y };
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { a as durationOf, f as nowMillis } from "./time-
|
|
2
|
-
import { t as decisionToken } from "./token-
|
|
1
|
+
import { a as durationOf, f as nowMillis } from "./time-nR1JesoH.js";
|
|
2
|
+
import { t as decisionToken } from "./token-DC9EQiet.js";
|
|
3
3
|
//#region src/pdp/shared.ts
|
|
4
4
|
const MAX_CACHE_TTL = 30;
|
|
5
5
|
const CACHE_MAX = 1e3;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Milliseconds from `ttl` seconds, clamped to 30 s; a `ttl` that is not a whole
|
|
8
|
+
* number of seconds above 0 disables the cache.
|
|
9
|
+
*/
|
|
7
10
|
function ttlMs(cache) {
|
|
8
11
|
const ttl = durationOf(cache?.ttl);
|
|
9
12
|
return ttl === void 0 ? 0 : Math.min(ttl, MAX_CACHE_TTL) * 1e3;
|
|
@@ -48,9 +51,9 @@ function granted(provider, permission, subject, data) {
|
|
|
48
51
|
};
|
|
49
52
|
}
|
|
50
53
|
/**
|
|
51
|
-
* The request that would be sent, plus what a custom mapping may drop
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
+
* The request that would be sent, plus what a custom mapping may drop (issuer,
|
|
55
|
+
* tenant, actor): a tenant switch or a changed row never reuses a cached
|
|
56
|
+
* answer.
|
|
54
57
|
*/
|
|
55
58
|
function cacheKey(subject, permission, body) {
|
|
56
59
|
return JSON.stringify([
|
|
@@ -6,8 +6,8 @@ const EXIT_CODES = {
|
|
|
6
6
|
/** How long a signalled run may take to clean up before the process exits. */
|
|
7
7
|
const GRACE_MS = 2e3;
|
|
8
8
|
/**
|
|
9
|
-
* Turns SIGINT and SIGTERM into an aborted signal and the 128 + n exit code.
|
|
10
|
-
*
|
|
9
|
+
* Turns SIGINT and SIGTERM into an aborted signal and the 128 + n exit code. A
|
|
10
|
+
* second signal, or a run still busy after the grace period, exits at once.
|
|
11
11
|
*/
|
|
12
12
|
function trapSignals() {
|
|
13
13
|
const controller = new AbortController();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { u as OperationRisk } from "./operations-
|
|
4
|
-
import { t as Automation } from "./automation-
|
|
1
|
+
import { J as DecisionSink, St as SupportSession, an as CredentialEvent, fn as MembershipEvent, in as AutomationEvent, kt as Credential, mt as TokenSigner, nn as AccessEvent, pn as SinkEvent } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { M as AppData } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { u as OperationRisk } from "./operations-Ci_rT6Uo.js";
|
|
4
|
+
import { t as Automation } from "./automation-C6Jg75xq.js";
|
|
5
5
|
//#region src/core/sink.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* The closed list of CloudEvents `type` values, `com.permdock.<family>` or
|
|
@@ -40,7 +40,10 @@ declare const CLOUD_EVENT_TYPES: {
|
|
|
40
40
|
readonly deliveryFailed: "com.permdock.delivery.failed";
|
|
41
41
|
};
|
|
42
42
|
type CloudEventType = (typeof CLOUD_EVENT_TYPES)[keyof typeof CLOUD_EVENT_TYPES];
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Types named for a later release; a receiver refuses them until then. None are
|
|
45
|
+
* reserved now.
|
|
46
|
+
*/
|
|
44
47
|
declare const RESERVED_CLOUD_EVENT_TYPES: readonly CloudEventType[];
|
|
45
48
|
/** The CloudEvents JSON format media type for one event (structured mode). */
|
|
46
49
|
declare const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
|
|
@@ -51,27 +54,42 @@ declare const CLOUDEVENTS_BATCH_CONTENT_TYPE = "application/cloudevents-batch+js
|
|
|
51
54
|
* which the Cloud then suspends; the `operation-*` codes only report.
|
|
52
55
|
*/
|
|
53
56
|
type CatalogFindingCode = "permission-removed" | "not-hostable" | "grantee-removed" | "approval-tightened" | "operation-risk-raised" | "operation-approval-removed";
|
|
54
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* One drift finding: the permission key and, when one broke, the hosted grant
|
|
59
|
+
* id.
|
|
60
|
+
*/
|
|
55
61
|
type CatalogFinding = {
|
|
56
62
|
readonly code: CatalogFindingCode;
|
|
57
63
|
readonly permission: string;
|
|
58
64
|
readonly grant?: string;
|
|
59
65
|
/** The operation name, on the `operation-*` codes. */
|
|
60
66
|
readonly operation?: string;
|
|
61
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* `meta.risk` before the publish, on `operation-risk-raised`; an unset risk
|
|
69
|
+
* is `low`.
|
|
70
|
+
*/
|
|
62
71
|
readonly previous?: OperationRisk;
|
|
63
72
|
/** `meta.risk` after the publish, on `operation-risk-raised`. */
|
|
64
73
|
readonly risk?: OperationRisk;
|
|
65
74
|
};
|
|
66
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* `data` of a `com.permdock.catalog.*` event: a `permdock cloud push` or a
|
|
77
|
+
* drift against live hosted grants.
|
|
78
|
+
*/
|
|
67
79
|
type CatalogEventData = {
|
|
68
80
|
readonly kind: "publish" | "drift";
|
|
69
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* The catalog fingerprint after the publish, or the one drift was measured
|
|
83
|
+
* against.
|
|
84
|
+
*/
|
|
70
85
|
readonly fingerprint: string;
|
|
71
86
|
readonly previous?: string;
|
|
72
87
|
readonly findings?: readonly CatalogFinding[];
|
|
73
88
|
};
|
|
74
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* A CloudEvents 1.0 event in the JSON format, with the distributed-tracing
|
|
91
|
+
* extension.
|
|
92
|
+
*/
|
|
75
93
|
type CloudEvent = {
|
|
76
94
|
readonly specversion: "1.0";
|
|
77
95
|
readonly type: CloudEventType;
|
|
@@ -82,9 +100,15 @@ type CloudEvent = {
|
|
|
82
100
|
/** An RFC 3339 instant: the sink event's `at`. */
|
|
83
101
|
readonly time: string;
|
|
84
102
|
readonly datacontenttype: "application/json";
|
|
85
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* The published JSON Schema of `data`,
|
|
105
|
+
* `https://permdock.com/schemas/<family>-event-v1.json`.
|
|
106
|
+
*/
|
|
86
107
|
readonly dataschema: string;
|
|
87
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* W3C Trace Context `traceparent`, the CloudEvents distributed-tracing
|
|
110
|
+
* extension.
|
|
111
|
+
*/
|
|
88
112
|
readonly traceparent?: string;
|
|
89
113
|
readonly tracestate?: string;
|
|
90
114
|
readonly data: SinkEvent | CatalogEventData;
|
|
@@ -141,9 +165,9 @@ declare function automationEvent(input: {
|
|
|
141
165
|
readonly x?: AppData;
|
|
142
166
|
}): AutomationEvent;
|
|
143
167
|
/**
|
|
144
|
-
* The `access` event of a `SupportSession`: `started` when it begins,
|
|
145
|
-
*
|
|
146
|
-
*
|
|
168
|
+
* The `access` event of a `SupportSession`: `started` when it begins, `ended`
|
|
169
|
+
* when it lapses, `revoked` when it is ended early. `principal` is the staff
|
|
170
|
+
* member, as for a support membership.
|
|
147
171
|
*/
|
|
148
172
|
declare function supportSessionEvent(input: {
|
|
149
173
|
readonly operation: AccessEvent["operation"];
|
|
@@ -155,8 +179,8 @@ declare function supportSessionEvent(input: {
|
|
|
155
179
|
readonly x?: AppData;
|
|
156
180
|
}): AccessEvent;
|
|
157
181
|
/**
|
|
158
|
-
* A `credential` sink event for `credential`. `sample` belongs on `used`
|
|
159
|
-
*
|
|
182
|
+
* A `credential` sink event for `credential`. `sample` belongs on `used` events
|
|
183
|
+
* only and must be in `(0, 1]`.
|
|
160
184
|
*/
|
|
161
185
|
declare function credentialEvent(input: {
|
|
162
186
|
readonly operation: CredentialEvent["operation"];
|
|
@@ -215,9 +239,9 @@ declare function accessEvent(input: {
|
|
|
215
239
|
*/
|
|
216
240
|
declare function toCloudEvent(event: SinkEvent, options: CloudEventOptions): CloudEvent;
|
|
217
241
|
/**
|
|
218
|
-
* Signs sink events as an offline evidence export: a compact JWS with
|
|
219
|
-
*
|
|
220
|
-
*
|
|
242
|
+
* Signs sink events as an offline evidence export: a compact JWS with `typ:
|
|
243
|
+
* vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents. Live
|
|
244
|
+
* deliveries use Standard Webhooks instead.
|
|
221
245
|
*/
|
|
222
246
|
declare function signDecisionBatch(events: readonly SinkEvent[], signer: TokenSigner, options: SignDecisionBatchOptions): Promise<string>;
|
|
223
247
|
declare function memoryDecisionSink(options?: MemoryDecisionSinkOptions): MemoryDecisionSink;
|