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,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as PermDock } from "./permdock-
|
|
4
|
-
import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-
|
|
5
|
-
import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-
|
|
6
|
-
import { t as JsonSchemaNode } from "./json-schema-
|
|
1
|
+
import { Sn as Approver, T as Policy, Un as Decision, Wt as Instant, ar as AuthorizationDetail, fr as Membership, hr as Subject, mt as TokenSigner, nt as MembershipSource, ot as RelationSource } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { M as AppData, f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "./permdock-CprAPN3w.js";
|
|
4
|
+
import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-DLvhVm1r.js";
|
|
5
|
+
import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-B2efzoSX.js";
|
|
6
|
+
import { t as JsonSchemaNode } from "./json-schema-BfXgnRNT.js";
|
|
7
7
|
//#region src/approvals/access-reviews/handler.d.ts
|
|
8
8
|
type AccessReviewsHandlerOptions = {
|
|
9
9
|
readonly subject: (request: Request) => Subject | null | undefined | Promise<Subject | null | undefined>;
|
|
@@ -15,8 +15,8 @@ type AccessReviewsHandlerOptions = {
|
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
17
|
* HTTP for one access-review store: `GET` a review and its items, `POST`
|
|
18
|
-
* `.../keep`, `.../revoke`, `.../applied` and `.../close`. A caller who is
|
|
19
|
-
*
|
|
18
|
+
* `.../keep`, `.../revoke`, `.../applied` and `.../close`. A caller who is not
|
|
19
|
+
* a reviewer and did not open the review gets 404.
|
|
20
20
|
*/
|
|
21
21
|
declare function accessReviewsHandler(store: AccessReviewStore, options: AccessReviewsHandlerOptions): (request: Request) => Promise<Response>;
|
|
22
22
|
//#endregion
|
|
@@ -31,11 +31,14 @@ type AccessReviewVerdict = {
|
|
|
31
31
|
*/
|
|
32
32
|
readonly permissions?: readonly string[];
|
|
33
33
|
};
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Whether `by` is named as a reviewer. A link, a feed or a contact is never a
|
|
36
|
+
* reviewer.
|
|
37
|
+
*/
|
|
35
38
|
declare function accessReviewerEligible(review: AccessReview, by: Subject, permissions?: readonly string[], now?: Instant): boolean;
|
|
36
39
|
/**
|
|
37
|
-
* The decision to persist, or throws. A reviewer cannot decide a holding
|
|
38
|
-
*
|
|
40
|
+
* The decision to persist, or throws. A reviewer cannot decide a holding of
|
|
41
|
+
* their own principal. `holder()` matches only through `permissions`.
|
|
39
42
|
*/
|
|
40
43
|
declare function decideAccessReviewItem(review: AccessReview, item: AccessReviewItem, verdict: AccessReviewVerdict, at?: Instant): AccessReviewDecision;
|
|
41
44
|
//#endregion
|
|
@@ -78,16 +81,16 @@ type AccessReviewOptions = {
|
|
|
78
81
|
readonly permdockFor?: (principalId: string) => PermDock | Promise<PermDock>;
|
|
79
82
|
/**
|
|
80
83
|
* When set, a global role, a plan, a relation or an inherit grant on a
|
|
81
|
-
* reviewed permission makes `complete` false. Without it the membership
|
|
82
|
-
*
|
|
84
|
+
* reviewed permission makes `complete` false. Without it the membership path
|
|
85
|
+
* is incomplete, because those holders cannot be listed from a tenant.
|
|
83
86
|
*/
|
|
84
87
|
readonly policy?: Policy;
|
|
85
88
|
readonly now?: Instant;
|
|
86
89
|
};
|
|
87
90
|
/**
|
|
88
|
-
* Opens a review of who holds `permissions` in the caller's active tenant.
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
+
* Opens a review of who holds `permissions` in the caller's active tenant. The
|
|
92
|
+
* caller must be signed in. PermDock stores the population and does not revoke
|
|
93
|
+
* anything: the application changes the source, then `markApplied`.
|
|
91
94
|
*/
|
|
92
95
|
declare function startAccessReview(permdock: PermDock, input: StartAccessReviewInput, options: AccessReviewOptions): Promise<AccessReview>;
|
|
93
96
|
//#endregion
|
|
@@ -102,9 +105,9 @@ declare function memoryAccessReviewStore(): MemoryAccessReviewStore;
|
|
|
102
105
|
//#endregion
|
|
103
106
|
//#region src/approvals/delegation.d.ts
|
|
104
107
|
/**
|
|
105
|
-
* A frozen copy of a delegation with only the known fields, or `undefined`
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
+
* A frozen copy of a delegation with only the known fields, or `undefined` when
|
|
109
|
+
* a known field has the wrong type, `until` is not after `from`, or the
|
|
110
|
+
* delegate and the delegator are the same principal.
|
|
108
111
|
*/
|
|
109
112
|
declare function parseApprovalDelegation(input: unknown): ApprovalDelegation | undefined;
|
|
110
113
|
/** In-process delegations. An entry that does not parse is dropped. */
|
|
@@ -126,8 +129,8 @@ type MatchDelegationOptions = {
|
|
|
126
129
|
}>;
|
|
127
130
|
};
|
|
128
131
|
/**
|
|
129
|
-
* The first active delegation under which `delegate` may approve `request`,
|
|
130
|
-
*
|
|
132
|
+
* The first active delegation under which `delegate` may approve `request`, or
|
|
133
|
+
* `undefined`. The delegator is resolved by `subjectFor` and checked with
|
|
131
134
|
* `assertApprover`, so relation and permission approvers use the delegator's
|
|
132
135
|
* facts. A throw, a missing option or a delegator the source does not name
|
|
133
136
|
* matches nobody. The delegator's own delegations are never read.
|
|
@@ -145,7 +148,10 @@ type IdempotentCall = {
|
|
|
145
148
|
};
|
|
146
149
|
/** One `Idempotency-Key` entry as `approvalsHandler` stores it. */
|
|
147
150
|
type IdempotencyRecord = {
|
|
148
|
-
/**
|
|
151
|
+
/**
|
|
152
|
+
* The store key: the approver's principal id and the field value, joined by a
|
|
153
|
+
* newline.
|
|
154
|
+
*/
|
|
149
155
|
readonly key: string;
|
|
150
156
|
readonly response: IdempotentResponse;
|
|
151
157
|
/** Epoch milliseconds. */
|
|
@@ -153,7 +159,10 @@ type IdempotencyRecord = {
|
|
|
153
159
|
};
|
|
154
160
|
/** A response the approvals handler replays for a repeated `Idempotency-Key`. */
|
|
155
161
|
type IdempotentResponse = {
|
|
156
|
-
/**
|
|
162
|
+
/**
|
|
163
|
+
* Which request produced it: a reused key with another fingerprint is refused
|
|
164
|
+
* with `422`.
|
|
165
|
+
*/
|
|
157
166
|
readonly fingerprint: string;
|
|
158
167
|
readonly status: number;
|
|
159
168
|
readonly headers: readonly (readonly [name: string, value: string])[];
|
|
@@ -168,16 +177,19 @@ type IdempotentResponse = {
|
|
|
168
177
|
type IdempotencyStore = {
|
|
169
178
|
/** Names the implementation in errors and events. */
|
|
170
179
|
readonly name?: string;
|
|
171
|
-
get(key: string)
|
|
180
|
+
get: (key: string) => IdempotentResponse | undefined | Promise<IdempotentResponse | undefined>;
|
|
172
181
|
/** `expiresAt` is epoch milliseconds; the store may drop the entry after it. */
|
|
173
|
-
set(key: string, response: IdempotentResponse, expiresAt: number)
|
|
182
|
+
set: (key: string, response: IdempotentResponse, expiresAt: number) => void | Promise<void>;
|
|
174
183
|
};
|
|
175
|
-
/**
|
|
184
|
+
/**
|
|
185
|
+
* The `IdempotencyStore` key for one approver's `Idempotency-Key`: keys never
|
|
186
|
+
* cross approvers.
|
|
187
|
+
*/
|
|
176
188
|
declare function idempotencyRecordKey(principalId: string, key: string): string;
|
|
177
189
|
/**
|
|
178
|
-
* The record `approvalsHandler` stores after `call` answered `response`:
|
|
179
|
-
*
|
|
180
|
-
*
|
|
190
|
+
* The record `approvalsHandler` stores after `call` answered `response`: the
|
|
191
|
+
* status, headers and body text, the call's fingerprint, and an expiry 24 hours
|
|
192
|
+
* after `now` (epoch milliseconds, default the clock).
|
|
181
193
|
*/
|
|
182
194
|
declare function idempotencyRecord(input: {
|
|
183
195
|
readonly principalId: string;
|
|
@@ -186,7 +198,10 @@ declare function idempotencyRecord(input: {
|
|
|
186
198
|
readonly response: Response;
|
|
187
199
|
readonly now?: number;
|
|
188
200
|
}): Promise<IdempotencyRecord>;
|
|
189
|
-
/**
|
|
201
|
+
/**
|
|
202
|
+
* Whether a stored response came from the same call: a reused key with another
|
|
203
|
+
* call is refused with `422`.
|
|
204
|
+
*/
|
|
190
205
|
declare function matchesIdempotencyRecord(response: IdempotentResponse, call: IdempotentCall): boolean;
|
|
191
206
|
/** An in-process `IdempotencyStore`, for one instance and for tests. */
|
|
192
207
|
declare function memoryIdempotencyStore(): IdempotencyStore;
|
|
@@ -194,18 +209,28 @@ declare function memoryIdempotencyStore(): IdempotencyStore;
|
|
|
194
209
|
//#region src/approvals/handler.d.ts
|
|
195
210
|
type ApprovalsHandlerOptions = {
|
|
196
211
|
readonly subject: (request: Request) => Subject | null | undefined | Promise<Subject | null | undefined>;
|
|
197
|
-
/**
|
|
212
|
+
/**
|
|
213
|
+
* Refuse the principal even on grants that set `approval: { distinct: false
|
|
214
|
+
* }`.
|
|
215
|
+
*/
|
|
198
216
|
readonly requireDistinctApprover?: boolean;
|
|
199
217
|
readonly signer?: TokenSigner;
|
|
200
218
|
readonly audience?: string | readonly string[];
|
|
201
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Where `relation()` approvers are read, by the request's resource id;
|
|
221
|
+
* without it they match nobody.
|
|
222
|
+
*/
|
|
202
223
|
readonly relations?: RelationSource;
|
|
203
|
-
/**
|
|
224
|
+
/**
|
|
225
|
+
* The policy's permission tree, for `through` links and `includes` on
|
|
226
|
+
* relation approvers.
|
|
227
|
+
*/
|
|
204
228
|
readonly permissions?: PermissionTree;
|
|
205
229
|
/**
|
|
206
230
|
* The approver's own instance in the request's tenant, for
|
|
207
231
|
* `holder(permission)` approvers (custom roles included when the instance
|
|
208
|
-
* reads a `CustomRoleSource`). Without it, or when it throws, they match
|
|
232
|
+
* reads a `CustomRoleSource`). Without it, or when it throws, they match
|
|
233
|
+
* nobody.
|
|
209
234
|
*/
|
|
210
235
|
readonly permdockFor?: (approver: Subject, request: ApprovalRequest) => PermDock | Promise<PermDock>;
|
|
211
236
|
/**
|
|
@@ -215,8 +240,8 @@ type ApprovalsHandlerOptions = {
|
|
|
215
240
|
*/
|
|
216
241
|
readonly approvalDelegations?: ApprovalDelegationSource;
|
|
217
242
|
/**
|
|
218
|
-
* Resolves a delegator's subject from their principal id. Server-side:
|
|
219
|
-
*
|
|
243
|
+
* Resolves a delegator's subject from their principal id. Server-side: never
|
|
244
|
+
* from the request body. A throw matches nobody.
|
|
220
245
|
*/
|
|
221
246
|
readonly subjectFor?: (principalId: string, request: ApprovalRequest) => Subject | null | undefined | Promise<Subject | null | undefined>;
|
|
222
247
|
/**
|
|
@@ -229,11 +254,10 @@ declare function approvalsHandler(store: ApprovalStore, options: ApprovalsHandle
|
|
|
229
254
|
//#endregion
|
|
230
255
|
//#region src/approvals/parse-request.d.ts
|
|
231
256
|
/**
|
|
232
|
-
* Reads an `ApprovalRequest` (parsed, or the JSON text) as an approval store
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
* or `prototype` key.
|
|
257
|
+
* Reads an `ApprovalRequest` (parsed, or the JSON text) as an approval store or
|
|
258
|
+
* the Cloud returns it, validated against `schemas/approval-request-v1.json`.
|
|
259
|
+
* Returns a deep-frozen copy, or `null` for anything that does not match,
|
|
260
|
+
* including a `__proto__`, `constructor` or `prototype` key.
|
|
237
261
|
*/
|
|
238
262
|
declare function parseApprovalRequest(value: unknown): ApprovalRequest | null;
|
|
239
263
|
//#endregion
|
|
@@ -246,7 +270,10 @@ declare function parseApprovalRequest(value: unknown): ApprovalRequest | null;
|
|
|
246
270
|
declare const APPROVAL_REQUEST_SCHEMA: JsonSchemaNode;
|
|
247
271
|
//#endregion
|
|
248
272
|
//#region src/approvals/signature.d.ts
|
|
249
|
-
/**
|
|
273
|
+
/**
|
|
274
|
+
* One recorded approval as the `approvals` claim of a
|
|
275
|
+
* `vnd.permdock.approval+jwt` carries it.
|
|
276
|
+
*/
|
|
250
277
|
type ApprovalSignatureEntry = {
|
|
251
278
|
readonly by: string;
|
|
252
279
|
/** RFC 3339. */
|
|
@@ -257,9 +284,9 @@ type ApprovalSignatureEntry = {
|
|
|
257
284
|
readonly delegation?: string;
|
|
258
285
|
};
|
|
259
286
|
/**
|
|
260
|
-
* The claims of a `vnd.permdock.approval+jwt` other than `iss`, `aud`,
|
|
261
|
-
* `
|
|
262
|
-
* `
|
|
287
|
+
* The claims of a `vnd.permdock.approval+jwt` other than `iss`, `aud`, `iat`,
|
|
288
|
+
* `exp` and `jti`, which the signer sets: `jti` is the request `id`, `iat` its
|
|
289
|
+
* `resolvedAt` and `exp` its `expiresAt`.
|
|
263
290
|
*/
|
|
264
291
|
type ApprovalSignatureClaims = {
|
|
265
292
|
readonly sub?: string;
|
|
@@ -293,16 +320,22 @@ type ApprovalView = Omit<ApprovalRequest, "token">;
|
|
|
293
320
|
declare function approvalView(request: ApprovalRequest): ApprovalView;
|
|
294
321
|
/**
|
|
295
322
|
* A strong RFC 9110 entity tag: the quoted `sha-256:` digest of
|
|
296
|
-
* `approvalView(request)` as RFC 8785 JSON. A field outside
|
|
297
|
-
*
|
|
323
|
+
* `approvalView(request)` as RFC 8785 JSON. A field outside `ApprovalRequest`
|
|
324
|
+
* changes the tag, so hash the stored request as is.
|
|
298
325
|
*/
|
|
299
326
|
declare function approvalEntityTag(request: ApprovalRequest): string;
|
|
300
327
|
//#endregion
|
|
301
328
|
//#region src/approvals/relations.d.ts
|
|
302
329
|
type ApproverRelationsOptions = {
|
|
303
|
-
/**
|
|
330
|
+
/**
|
|
331
|
+
* The object graph relation approvers are read from; without it they match
|
|
332
|
+
* nobody.
|
|
333
|
+
*/
|
|
304
334
|
readonly relations?: RelationSource;
|
|
305
|
-
/**
|
|
335
|
+
/**
|
|
336
|
+
* The permission tree the policy declares; needed to follow `through` links
|
|
337
|
+
* and `includes`.
|
|
338
|
+
*/
|
|
306
339
|
readonly permissions?: PermissionTree;
|
|
307
340
|
/** The clock relation expiry is read at; defaults to the current time. */
|
|
308
341
|
readonly now?: Instant;
|
|
@@ -310,8 +343,8 @@ type ApproverRelationsOptions = {
|
|
|
310
343
|
/**
|
|
311
344
|
* The relation approvers of `request` that `subject` holds on its resource,
|
|
312
345
|
* keyed by `approverRelationKey`, for `ApprovalVerdict.relations`. Reads go
|
|
313
|
-
* through `relations` by the request's resource id; a request without an id,
|
|
314
|
-
*
|
|
346
|
+
* through `relations` by the request's resource id; a request without an id, a
|
|
347
|
+
* missing source or a read that fails holds nothing.
|
|
315
348
|
*/
|
|
316
349
|
declare function approverRelations(request: ApprovalRequest, subject: Subject, options: ApproverRelationsOptions): Promise<readonly string[]>;
|
|
317
350
|
//#endregion
|
|
@@ -378,18 +411,24 @@ declare function resumeDecision(input: {
|
|
|
378
411
|
};
|
|
379
412
|
readonly adapter: string;
|
|
380
413
|
readonly token: string | undefined;
|
|
381
|
-
/**
|
|
414
|
+
/**
|
|
415
|
+
* `false` for checks that do not run the action, such as the decision
|
|
416
|
+
* endpoint.
|
|
417
|
+
*/
|
|
382
418
|
readonly consume?: boolean;
|
|
383
419
|
readonly now?: Instant;
|
|
384
420
|
/**
|
|
385
|
-
* Seconds a request this call opens stays open; absent means the
|
|
386
|
-
*
|
|
387
|
-
*
|
|
421
|
+
* Seconds a request this call opens stays open; absent means the store's
|
|
422
|
+
* `ttl`, else `DEFAULT_APPROVAL_TTL`. The grant's `approval.ttl` still caps
|
|
423
|
+
* it.
|
|
388
424
|
*/
|
|
389
425
|
readonly ttl?: number;
|
|
390
426
|
}): Promise<Decision>;
|
|
391
427
|
declare function cancelApprovals(store: ApprovalStore, filter: ApprovalListFilter, meta: ApprovalCancelMeta): Promise<number>;
|
|
392
|
-
/**
|
|
428
|
+
/**
|
|
429
|
+
* The token of a `PermDock-Approval` field: one RFC 9651 sf-token Item with no
|
|
430
|
+
* parameters, else `undefined`.
|
|
431
|
+
*/
|
|
393
432
|
declare function readApprovalHeader(headers: Headers | {
|
|
394
433
|
readonly get: (name: string) => string | null;
|
|
395
434
|
}): string | undefined;
|
|
@@ -398,14 +437,14 @@ declare function resumeFromHeader(store: ApprovalStore, headers: Headers | {
|
|
|
398
437
|
}, now?: Instant): Promise<ApprovalInspectResult>;
|
|
399
438
|
/**
|
|
400
439
|
* The token to resume `decision` with when the caller carries none: the
|
|
401
|
-
* decision's own token when the store holds an approved or rejected request
|
|
402
|
-
*
|
|
403
|
-
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
*
|
|
440
|
+
* decision's own token when the store holds an approved or rejected request for
|
|
441
|
+
* it, so `resumeDecision` resumes (or denies) the call without the caller
|
|
442
|
+
* passing the token back. The token already binds permission, resource (or the
|
|
443
|
+
* call's data when there is no row id), subject and actor. A pending request
|
|
444
|
+
* counts only with `denyPending: true`, which makes the call deny with
|
|
445
|
+
* `approval-pending` instead of asking again. `undefined` when the decision
|
|
446
|
+
* needs no approval, there is no store, or the store has no unexpired request
|
|
447
|
+
* for the token; a store that throws counts as none.
|
|
409
448
|
*/
|
|
410
449
|
declare function storedApprovalToken(store: ApprovalStore | undefined, decision: Decision, options?: {
|
|
411
450
|
readonly denyPending?: boolean;
|
|
@@ -419,16 +458,22 @@ declare function approvalPageSize(limit: number | undefined): number;
|
|
|
419
458
|
type ApprovalCursorPosition = readonly [createdAt: string, token: string];
|
|
420
459
|
/** The `next` cursor after `request`, for a store that pages in its own query. */
|
|
421
460
|
declare function encodeApprovalCursor(request: ApprovalRequest): string;
|
|
422
|
-
/**
|
|
461
|
+
/**
|
|
462
|
+
* The `(createdAt, token)` position a `next` cursor names, or `null` for one
|
|
463
|
+
* that does not parse.
|
|
464
|
+
*/
|
|
423
465
|
declare function decodeApprovalCursor(cursor: string): ApprovalCursorPosition | null;
|
|
424
466
|
/**
|
|
425
467
|
* Pages already-filtered requests in `(createdAt, token)` order, as the
|
|
426
468
|
* built-in stores do: `limit` within 1 to 200 (50 when absent), `cursor` from
|
|
427
|
-
* the previous page's `next`, and no items for a cursor that does not parse.
|
|
428
|
-
*
|
|
469
|
+
* the previous page's `next`, and no items for a cursor that does not parse. A
|
|
470
|
+
* custom `ApprovalStore` that filters in memory returns it from `list`.
|
|
429
471
|
*/
|
|
430
472
|
declare function pageApprovals(matching: readonly ApprovalRequest[], query: ApprovalListQuery): ApprovalPage;
|
|
431
|
-
/**
|
|
473
|
+
/**
|
|
474
|
+
* Every matching request of `store`, following `next` until the last page (at
|
|
475
|
+
* most 1000 pages of 200).
|
|
476
|
+
*/
|
|
432
477
|
declare function listAllApprovals(store: ApprovalStore, filter: ApprovalListFilter): Promise<ApprovalRequest[]>;
|
|
433
478
|
//#endregion
|
|
434
479
|
//#region src/approvals/permissions.d.ts
|
|
@@ -443,23 +488,23 @@ declare function approverPermissions(request: ApprovalRequest, approver: PermDoc
|
|
|
443
488
|
//#endregion
|
|
444
489
|
//#region src/approvals/store.d.ts
|
|
445
490
|
/**
|
|
446
|
-
* Refuses `by` as an approver of `request`, or returns the index of the
|
|
447
|
-
*
|
|
448
|
-
*
|
|
449
|
-
*
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
491
|
+
* Refuses `by` as an approver of `request`, or returns the index of the stage
|
|
492
|
+
* the approval counts for (`undefined` without `stages`). Eligibility is
|
|
493
|
+
* `approvers.by` or, under `stages`, the first incomplete stage (`sequential`)
|
|
494
|
+
* or any incomplete stage (`all`); `approvers.escalation.to` is eligible too
|
|
495
|
+
* once the request has waited `escalation.after`. A principal who already
|
|
496
|
+
* approved is refused, so one person never completes two stages. `relations`
|
|
497
|
+
* are the relation approvers `by` holds on the request's resource (see
|
|
498
|
+
* `ApprovalVerdict.relations`).
|
|
454
499
|
*/
|
|
455
500
|
declare function assertApprover(request: ApprovalRequest, by: Subject, requireDistinctApprover: boolean, at?: Instant, relations?: readonly string[], permissions?: readonly string[]): number | undefined;
|
|
456
501
|
/**
|
|
457
|
-
* The request after `verdict`, for a store to persist: a rejection resolves
|
|
458
|
-
*
|
|
459
|
-
* `approvers.quorum` (default 1). Throws an `ApprovalError` when the request
|
|
460
|
-
*
|
|
461
|
-
*
|
|
462
|
-
*
|
|
502
|
+
* The request after `verdict`, for a store to persist: a rejection resolves it;
|
|
503
|
+
* an approval is appended to `approvals` and resolves it once there are
|
|
504
|
+
* `approvers.quorum` (default 1). Throws an `ApprovalError` when the request is
|
|
505
|
+
* not pending, has expired or `verdict.by` may not approve it. Stores should
|
|
506
|
+
* write the result only when the stored row is still pending with the same
|
|
507
|
+
* number of approvals, so two approvers racing both count.
|
|
463
508
|
*/
|
|
464
509
|
declare function applyApprovalVerdict(request: ApprovalRequest, verdict: ApprovalVerdict, at?: Instant): ApprovalRequest;
|
|
465
510
|
type MemoryApprovalStore = ApprovalStore & {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { n as RevocationFeed } from "./revocations-
|
|
4
|
-
import { t as ClaimsMap } from "./claims-map-
|
|
5
|
-
import { t as SqlQuery } from "./sql-
|
|
1
|
+
import { J as DecisionSink, ht as TokenVerifier, nt as MembershipSource } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { M as AppData } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { n as RevocationFeed } from "./revocations-BaUXHM1N.js";
|
|
4
|
+
import { t as ClaimsMap } from "./claims-map-D1Pb5oRq.js";
|
|
5
|
+
import { t as SqlQuery } from "./sql-B80DFdpG.js";
|
|
6
6
|
//#region src/scim/types.d.ts
|
|
7
7
|
declare const SCIM_CONTENT_TYPE = "application/scim+json";
|
|
8
8
|
declare const USER_SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:User";
|
|
@@ -12,7 +12,10 @@ declare const ERROR_SCHEMA = "urn:ietf:params:scim:api:messages:2.0:Error";
|
|
|
12
12
|
declare const PATCH_SCHEMA = "urn:ietf:params:scim:api:messages:2.0:PatchOp";
|
|
13
13
|
/** The RFC 7643 section 3.3 Group extension that carries PermDock roles. */
|
|
14
14
|
declare const ROLES_EXTENSION = "urn:ietf:params:scim:schemas:extension:permdock:2.0:Group";
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The extension that carries the application's own data (`x`) on a User or a
|
|
17
|
+
* Group.
|
|
18
|
+
*/
|
|
16
19
|
declare const APP_DATA_EXTENSION = "urn:ietf:params:scim:schemas:extension:permdock:2.0:AppData";
|
|
17
20
|
type DirectoryMeta = {
|
|
18
21
|
readonly created: string;
|
|
@@ -31,7 +34,10 @@ type DirectoryUser = {
|
|
|
31
34
|
readonly userName: string;
|
|
32
35
|
readonly active: boolean;
|
|
33
36
|
readonly emails?: readonly DirectoryEmail[];
|
|
34
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The application's own data, from the `AppData` extension; plain JSON, never
|
|
39
|
+
* read by a decision.
|
|
40
|
+
*/
|
|
35
41
|
readonly x?: AppData;
|
|
36
42
|
readonly meta: DirectoryMeta;
|
|
37
43
|
};
|
|
@@ -44,7 +50,10 @@ type DirectoryGroup = {
|
|
|
44
50
|
readonly displayName: string;
|
|
45
51
|
readonly members: readonly DirectoryGroupMember[];
|
|
46
52
|
readonly roles?: readonly string[];
|
|
47
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* The application's own data, from the `AppData` extension; plain JSON, never
|
|
55
|
+
* read by a decision.
|
|
56
|
+
*/
|
|
48
57
|
readonly x?: AppData;
|
|
49
58
|
readonly meta: DirectoryMeta;
|
|
50
59
|
};
|
|
@@ -80,17 +89,17 @@ type ScimPatchOp = {
|
|
|
80
89
|
type DirectoryStore = {
|
|
81
90
|
/** Shown in errors and events; optional, as on every extension interface. */
|
|
82
91
|
readonly name?: string;
|
|
83
|
-
getUser(tenant: string, id: string)
|
|
84
|
-
findUsers(tenant: string, filter: ScimFilter | undefined, page: ScimPage)
|
|
85
|
-
putUser(tenant: string, user: DirectoryUser)
|
|
86
|
-
patchUser(tenant: string, id: string, ops: readonly ScimPatchOp[])
|
|
87
|
-
deleteUser(tenant: string, id: string)
|
|
88
|
-
getGroup(tenant: string, id: string)
|
|
89
|
-
findGroups(tenant: string, filter: ScimFilter | undefined, page: ScimPage)
|
|
90
|
-
putGroup(tenant: string, group: DirectoryGroup)
|
|
91
|
-
patchGroup(tenant: string, id: string, ops: readonly ScimPatchOp[])
|
|
92
|
-
deleteGroup(tenant: string, id: string)
|
|
93
|
-
groupsFor(tenant: string, userId: string)
|
|
92
|
+
getUser: (tenant: string, id: string) => DirectoryUser | null | Promise<DirectoryUser | null>;
|
|
93
|
+
findUsers: (tenant: string, filter: ScimFilter | undefined, page: ScimPage) => ScimPageResult<DirectoryUser> | Promise<ScimPageResult<DirectoryUser>>;
|
|
94
|
+
putUser: (tenant: string, user: DirectoryUser) => DirectoryUser | Promise<DirectoryUser>;
|
|
95
|
+
patchUser: (tenant: string, id: string, ops: readonly ScimPatchOp[]) => DirectoryUser | Promise<DirectoryUser>;
|
|
96
|
+
deleteUser: (tenant: string, id: string) => void | Promise<void>;
|
|
97
|
+
getGroup: (tenant: string, id: string) => DirectoryGroup | null | Promise<DirectoryGroup | null>;
|
|
98
|
+
findGroups: (tenant: string, filter: ScimFilter | undefined, page: ScimPage) => ScimPageResult<DirectoryGroup> | Promise<ScimPageResult<DirectoryGroup>>;
|
|
99
|
+
putGroup: (tenant: string, group: DirectoryGroup) => DirectoryGroup | Promise<DirectoryGroup>;
|
|
100
|
+
patchGroup: (tenant: string, id: string, ops: readonly ScimPatchOp[]) => DirectoryGroup | Promise<DirectoryGroup>;
|
|
101
|
+
deleteGroup: (tenant: string, id: string) => void | Promise<void>;
|
|
102
|
+
groupsFor: (tenant: string, userId: string) => readonly DirectoryGroup[] | Promise<readonly DirectoryGroup[]>;
|
|
94
103
|
};
|
|
95
104
|
type ScimTokenOptions = {
|
|
96
105
|
readonly hash: "sha256";
|
|
@@ -99,7 +108,10 @@ type ScimTokenOptions = {
|
|
|
99
108
|
type DirectoryChange = {
|
|
100
109
|
readonly tenant: string;
|
|
101
110
|
readonly userIds: readonly string[];
|
|
102
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* `session-revoked` when a user was deactivated or deleted; `changed`
|
|
113
|
+
* otherwise.
|
|
114
|
+
*/
|
|
103
115
|
readonly kind: "session-revoked" | "changed";
|
|
104
116
|
};
|
|
105
117
|
type ScimHandlerOptions = {
|
|
@@ -108,7 +120,10 @@ type ScimHandlerOptions = {
|
|
|
108
120
|
readonly token?: ScimTokenOptions;
|
|
109
121
|
readonly verifier?: TokenVerifier;
|
|
110
122
|
readonly audience?: string;
|
|
111
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* With `verifier`: where the JWT names its tenant (`claims.tenant`); default
|
|
125
|
+
* `tenant`, then `tid`.
|
|
126
|
+
*/
|
|
112
127
|
readonly claims?: Pick<ClaimsMap, "tenant">;
|
|
113
128
|
readonly groupRoles?: Readonly<Record<string, readonly string[]>>;
|
|
114
129
|
readonly assignable?: readonly string[];
|
|
@@ -116,8 +131,8 @@ type ScimHandlerOptions = {
|
|
|
116
131
|
readonly onChange?: (change: DirectoryChange) => void | Promise<void>;
|
|
117
132
|
/**
|
|
118
133
|
* Publishes for each affected user's id, `externalId` and `userName`:
|
|
119
|
-
* `session-revoked` when a user is deactivated (`active: false`) or
|
|
120
|
-
*
|
|
134
|
+
* `session-revoked` when a user is deactivated (`active: false`) or deleted,
|
|
135
|
+
* so open connections end; `changed` otherwise, so they revalidate.
|
|
121
136
|
*/
|
|
122
137
|
readonly revocations?: RevocationFeed;
|
|
123
138
|
readonly onUnknownRole?: (name: string) => void;
|
|
@@ -139,9 +154,15 @@ declare class DirectoryNotFoundError extends Error {
|
|
|
139
154
|
readonly code: "not-found";
|
|
140
155
|
constructor(message?: string);
|
|
141
156
|
}
|
|
142
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Matches by `name` and `code`, so an error from another copy of the module
|
|
159
|
+
* still maps.
|
|
160
|
+
*/
|
|
143
161
|
declare function isDirectoryUniquenessError(error: unknown): error is DirectoryUniquenessError;
|
|
144
|
-
/**
|
|
162
|
+
/**
|
|
163
|
+
* Matches by `name` and `code`, so an error from another copy of the module
|
|
164
|
+
* still maps.
|
|
165
|
+
*/
|
|
145
166
|
declare function isDirectoryNotFoundError(error: unknown): error is DirectoryNotFoundError;
|
|
146
167
|
//#endregion
|
|
147
168
|
//#region src/scim/auth.d.ts
|
|
@@ -195,15 +216,18 @@ declare function memoryDirectoryStore(): DirectoryStore;
|
|
|
195
216
|
//#endregion
|
|
196
217
|
//#region src/scim/postgres-store.d.ts
|
|
197
218
|
type PostgresDirectoryStoreOptions = {
|
|
198
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Schema of the generated tables (`permdock scim generate --schema`). Default
|
|
221
|
+
* `permdock`.
|
|
222
|
+
*/
|
|
199
223
|
readonly schema?: string;
|
|
200
224
|
};
|
|
201
225
|
/**
|
|
202
226
|
* A `DirectoryStore` over the tables `permdock scim generate` writes, called
|
|
203
|
-
* through a `SqlQuery` that may read and write them (the table owner, or a
|
|
204
|
-
*
|
|
205
|
-
* transaction: a group and its members change together, and a PATCH that
|
|
206
|
-
*
|
|
227
|
+
* through a `SqlQuery` that may read and write them (the table owner, or a role
|
|
228
|
+
* granted on them). Every method is one statement, so a pool needs no
|
|
229
|
+
* transaction: a group and its members change together, and a PATCH that races
|
|
230
|
+
* another write re-reads the row and applies its operations again.
|
|
207
231
|
*/
|
|
208
232
|
declare function postgresDirectoryStore(query: SqlQuery, options?: PostgresDirectoryStoreOptions): DirectoryStore;
|
|
209
233
|
//#endregion
|