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,14 +1,14 @@
|
|
|
1
1
|
import { a as sole, n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-
|
|
4
|
-
import { c as isConditionDate, l as isConditionRef, r as isSubjectRef, s as isCondition, u as isSqlFunctionField } from "./refs-
|
|
5
|
-
import { c as isUserApprover, i as flattenApprovers, l as user, o as isAnyOfInput, r as approverLeaves, s as isPermissionApprover } from "./approvers-
|
|
6
|
-
import { c as listPermissions, o as isPermission } from "./permission-registry-
|
|
7
|
-
import { n as assertMetaValue, r as parseAppData, t as assertAppData } from "./app-data-
|
|
8
|
-
import { d as isSelfParented } from "./resource-relations-
|
|
9
|
-
import { a as durationOf, r as assertDuration } from "./time-
|
|
10
|
-
import { a as authenticated, d as roleScopeOf, g as isRole, o as flattenGrantee, r as asGrantee, u as roleNameOf } from "./grantee-
|
|
11
|
-
import { c as sanitizeFields, n as normalizeValidity } from "./validity-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { c as isConditionDate, l as isConditionRef, r as isSubjectRef, s as isCondition, u as isSqlFunctionField } from "./refs-C8BKxc_e.js";
|
|
5
|
+
import { c as isUserApprover, i as flattenApprovers, l as user, o as isAnyOfInput, r as approverLeaves, s as isPermissionApprover } from "./approvers-B4r0N_Uz.js";
|
|
6
|
+
import { c as listPermissions, o as isPermission } from "./permission-registry-B8tYxPIt.js";
|
|
7
|
+
import { n as assertMetaValue, r as parseAppData, t as assertAppData } from "./app-data-UNNm07jV.js";
|
|
8
|
+
import { d as isSelfParented } from "./resource-relations-8-pCScBO.js";
|
|
9
|
+
import { a as durationOf, r as assertDuration } from "./time-nR1JesoH.js";
|
|
10
|
+
import { a as authenticated, d as roleScopeOf, g as isRole, o as flattenGrantee, r as asGrantee, u as roleNameOf } from "./grantee-Dke-9rd1.js";
|
|
11
|
+
import { c as sanitizeFields, n as normalizeValidity } from "./validity-Buc7w8E9.js";
|
|
12
12
|
//#region src/conditions/opaque.ts
|
|
13
13
|
function opaque(input) {
|
|
14
14
|
return freezeDeep({
|
|
@@ -152,7 +152,10 @@ function normalizeSqlFunction(input) {
|
|
|
152
152
|
twin
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* `{ session: … }` under `subject`; any other value is a comparison on a
|
|
157
|
+
* `subject` field.
|
|
158
|
+
*/
|
|
156
159
|
function isSubjectCondition(value) {
|
|
157
160
|
return value !== null && typeof value === "object" && !Array.isArray(value) && Object.hasOwn(value, "session");
|
|
158
161
|
}
|
|
@@ -213,7 +216,10 @@ function normalizeWhere(input) {
|
|
|
213
216
|
}
|
|
214
217
|
//#endregion
|
|
215
218
|
//#region src/core/approval-normalize.ts
|
|
216
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Every approver a requirement names: `by`, each stage and its escalation, and
|
|
221
|
+
* `escalation.to`, inside `anyOf` groups too.
|
|
222
|
+
*/
|
|
217
223
|
function approversOf(requirement) {
|
|
218
224
|
return [
|
|
219
225
|
...approverLeaves(requirement.by),
|
|
@@ -330,9 +336,9 @@ function assertApprovalVersions(grants, resources) {
|
|
|
330
336
|
}
|
|
331
337
|
}
|
|
332
338
|
/**
|
|
333
|
-
* A relation approver is checked by id, from the requested row: the
|
|
334
|
-
*
|
|
335
|
-
*
|
|
339
|
+
* A relation approver is checked by id, from the requested row: the relation
|
|
340
|
+
* lives on the permission's own resource (optionally up its parent chain), or
|
|
341
|
+
* at the end of a list of links from it.
|
|
336
342
|
*/
|
|
337
343
|
function assertApprovalRelations(grants, resources) {
|
|
338
344
|
for (const grant of grants) {
|
|
@@ -347,7 +353,10 @@ function assertApprovalRelations(grants, resources) {
|
|
|
347
353
|
}
|
|
348
354
|
}
|
|
349
355
|
}
|
|
350
|
-
/**
|
|
356
|
+
/**
|
|
357
|
+
* The resource a relation approver's `through` reaches from `start`, or
|
|
358
|
+
* `undefined`.
|
|
359
|
+
*/
|
|
351
360
|
function approverRelationResource(start, through, resources) {
|
|
352
361
|
if (through === void 0) return start;
|
|
353
362
|
if (through === "parent") return isSelfParented(resources.get(start)) ? start : void 0;
|
|
@@ -368,7 +377,10 @@ function assertLimit(limit, permissionKey) {
|
|
|
368
377
|
if (limit.mode !== void 0 && limit.mode !== "hard" && limit.mode !== "soft") throw new Error(`PermDock: limit mode on '${permissionKey}' must be 'hard' or 'soft'`);
|
|
369
378
|
if (limit.alertAt !== void 0 && (typeof limit.alertAt !== "number" || !(limit.alertAt > 0 && limit.alertAt <= 1))) throw new Error(`PermDock: limit alertAt on '${permissionKey}' must be a fraction above 0 and at most 1`);
|
|
370
379
|
}
|
|
371
|
-
/**
|
|
380
|
+
/**
|
|
381
|
+
* The declared fields of a validated `limit`, so extra keys never reach the
|
|
382
|
+
* grant.
|
|
383
|
+
*/
|
|
372
384
|
function normalizeLimit(limit) {
|
|
373
385
|
if (limit === void 0) return;
|
|
374
386
|
return {
|
|
@@ -436,7 +448,10 @@ function makeGrant(permission, effect, condition) {
|
|
|
436
448
|
requires
|
|
437
449
|
});
|
|
438
450
|
}
|
|
439
|
-
/**
|
|
451
|
+
/**
|
|
452
|
+
* Checks a grant's `meta`: plain JSON, string `description`, `x` through the
|
|
453
|
+
* schema when given.
|
|
454
|
+
*/
|
|
440
455
|
function grantMeta(meta, key, schema) {
|
|
441
456
|
if (meta === void 0) return;
|
|
442
457
|
assertAppData(meta, `meta of a grant on ${key}`);
|
|
@@ -478,7 +493,10 @@ function appObligations(input, key, effect) {
|
|
|
478
493
|
}
|
|
479
494
|
return out.length === 0 ? void 0 : freezeDeep(out);
|
|
480
495
|
}
|
|
481
|
-
/**
|
|
496
|
+
/**
|
|
497
|
+
* Re-checks every grant's `meta.x` with the policy's grant schema, keeping the
|
|
498
|
+
* schema output.
|
|
499
|
+
*/
|
|
482
500
|
function withGrantSchema(grant, schema) {
|
|
483
501
|
const meta = grant.meta;
|
|
484
502
|
if (schema === void 0 || meta?.x === void 0) return grant;
|
|
@@ -602,7 +620,10 @@ function holderCount(roleName, option, value) {
|
|
|
602
620
|
if (typeof value !== "number" || !Number.isInteger(value) || value < 0) throw new Error(`PermDock: role '${roleName}' ${option} must be a whole number of holders`);
|
|
603
621
|
return value;
|
|
604
622
|
}
|
|
605
|
-
/**
|
|
623
|
+
/**
|
|
624
|
+
* Ownership rules count holders per scope instance, so they need a named-scope
|
|
625
|
+
* role.
|
|
626
|
+
*/
|
|
606
627
|
function roleRules(roleName, scope, options) {
|
|
607
628
|
const min = holderCount(roleName, "min", options?.min);
|
|
608
629
|
const max = holderCount(roleName, "max", options?.max);
|
|
@@ -9,9 +9,10 @@ const ROW_GRANTEES = /* @__PURE__ */ new Set([
|
|
|
9
9
|
/**
|
|
10
10
|
* Whether a grant depends on more than the role and the scope: a row or body
|
|
11
11
|
* condition, a closure, a field list, a purpose, a break-glass override, a
|
|
12
|
-
* validity window, a `requires`, or a relation, plan, actor or assurance
|
|
13
|
-
* (`permdock_has`, `permitted_<scope>_ids`) check only
|
|
14
|
-
* policy that calls them for such a permission would widen
|
|
12
|
+
* validity window, a `requires`, or a relation, plan, actor or assurance
|
|
13
|
+
* grantee. The SQL helpers (`permdock_has`, `permitted_<scope>_ids`) check only
|
|
14
|
+
* role and scope, so a policy that calls them for such a permission would widen
|
|
15
|
+
* access.
|
|
15
16
|
*/
|
|
16
17
|
function grantHasRowConditions(grant) {
|
|
17
18
|
const grantees = Array.isArray(grant.to) ? grant.to : [grant.to];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { s as requestFromContext } from "./http-
|
|
3
|
-
import { n as tenantScope } from "./adapter-context-
|
|
4
|
-
import { t as adapterKernel } from "./bind-
|
|
5
|
-
import { r as guardIterable } from "./stream-
|
|
2
|
+
import { s as requestFromContext } from "./http-DKLXrFGk.js";
|
|
3
|
+
import { n as tenantScope } from "./adapter-context-CIQpQxbE.js";
|
|
4
|
+
import { t as adapterKernel } from "./bind-BNQA9JK9.js";
|
|
5
|
+
import { r as guardIterable } from "./stream-CDvF0sJm.js";
|
|
6
6
|
//#region src/server/rpc.ts
|
|
7
7
|
/** The tRPC and oRPC error code for a Problem Details status. */
|
|
8
8
|
function rpcCode(status) {
|
|
@@ -83,7 +83,10 @@ function bindRpcKernel(policy, options, adapter, contextOf, path) {
|
|
|
83
83
|
guard
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Wraps a streamed result so revocation ends it and items the subscriber cannot
|
|
88
|
+
* read drop.
|
|
89
|
+
*/
|
|
87
90
|
async function guardStream(source, open, permission, data, protectOptions, guard) {
|
|
88
91
|
const conn = await open(permission === null ? {} : compact({
|
|
89
92
|
permission,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as run } from "./run-PbRlXTfh.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { i as dateAt } from "./time-
|
|
2
|
-
import { a as describeError, l as problemOf, n as CliError, r as cliProblem, s as kindOfCode } from "./errors-
|
|
3
|
-
import { s as cliVersion } from "./version-
|
|
4
|
-
import { a as resolveCwd, i as readConfig } from "./config-
|
|
1
|
+
import { i as dateAt } from "./time-nR1JesoH.js";
|
|
2
|
+
import { a as describeError, l as problemOf, n as CliError, r as cliProblem, s as kindOfCode } from "./errors-Vpu6rKHl.js";
|
|
3
|
+
import { s as cliVersion } from "./version-DMQ0dnN5.js";
|
|
4
|
+
import { a as resolveCwd, i as readConfig } from "./config-BwPBfN0t.js";
|
|
5
5
|
import { t as beforeFirst } from "./text-BMFRfBqc.js";
|
|
6
|
-
import { a as suggestion, i as parseLeaf, n as flagSpellings, o as GLOBAL_FLAGS, r as parseFlags } from "./args-
|
|
7
|
-
import { r as progressReporter, t as redact } from "./credentials-
|
|
8
|
-
import { a as resolve, i as leaves, n as ROOT, r as SECTIONS, t as DOCS_BASE } from "./manifest-
|
|
9
|
-
import { t as createStyle } from "./style-
|
|
10
|
-
import {
|
|
6
|
+
import { a as suggestion, i as parseLeaf, n as flagSpellings, o as GLOBAL_FLAGS, r as parseFlags } from "./args-0FrVs5EH.js";
|
|
7
|
+
import { r as progressReporter, t as redact } from "./credentials-CdDxp7jN.js";
|
|
8
|
+
import { a as resolve, i as leaves, n as ROOT, r as SECTIONS, t as DOCS_BASE } from "./manifest-B2QPh19C.js";
|
|
9
|
+
import { t as createStyle } from "./style-Ds11Hmk4.js";
|
|
10
|
+
import { i as githubAnnotations, n as envelope, o as sarifLog, t as dataOf } from "./output-DV5dwOTs.js";
|
|
11
11
|
import { i as renameMessage, r as flagRename, t as COMMAND_MOVES } from "./renames-CGj7YwcQ.js";
|
|
12
12
|
import { stripVTControlCharacters } from "node:util";
|
|
13
13
|
import { existsSync, statSync } from "node:fs";
|
|
@@ -19,8 +19,8 @@ function set(env, name) {
|
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* The AI agent running the CLI, from the variables `@vercel/detect-agent`
|
|
22
|
-
* reads, in its order. `CURSOR_TRACE_ID` is also set in Cursor's own
|
|
23
|
-
*
|
|
22
|
+
* reads, in its order. `CURSOR_TRACE_ID` is also set in Cursor's own terminal,
|
|
23
|
+
* so it counts only when stdout is not a TTY.
|
|
24
24
|
*/
|
|
25
25
|
function detectAgent(env, probe) {
|
|
26
26
|
const named = env["AI_AGENT"]?.trim();
|
|
@@ -94,8 +94,8 @@ function modeOf(value, source) {
|
|
|
94
94
|
return mode;
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
|
-
* `--agent`, then `PERMDOCK_AGENT`, then detection. An unknown value is a
|
|
98
|
-
*
|
|
97
|
+
* `--agent`, then `PERMDOCK_AGENT`, then detection. An unknown value is a usage
|
|
98
|
+
* error, so a typo never leaves an agent with prompts it cannot answer.
|
|
99
99
|
*/
|
|
100
100
|
function agentMode(flag, env, probe) {
|
|
101
101
|
const mode = flag === void 0 ? modeOf(env["PERMDOCK_AGENT"], "PERMDOCK_AGENT") ?? "auto" : modeOf(flag, "--agent") ?? "auto";
|
|
@@ -110,8 +110,8 @@ function agentMode(flag, env, probe) {
|
|
|
110
110
|
//#region src/cli/core/consent.ts
|
|
111
111
|
/**
|
|
112
112
|
* The reasons a run needs consent: it edits files the project owns, it
|
|
113
|
-
* publishes to the Cloud, or `--force` overwrites files PermDock did not
|
|
114
|
-
*
|
|
113
|
+
* publishes to the Cloud, or `--force` overwrites files PermDock did not write.
|
|
114
|
+
* A `--dry-run` or `--check` run writes nothing and needs none.
|
|
115
115
|
*/
|
|
116
116
|
function consentReasons(effects, flags) {
|
|
117
117
|
if (flags["dry-run"] === true || flags["check"] === true) return [];
|
|
@@ -126,8 +126,8 @@ function quote(token) {
|
|
|
126
126
|
return /^[\w@%+=:,./-]+$/u.test(token) ? token : `'${token.replaceAll("'", String.raw`'\''`)}'`;
|
|
127
127
|
}
|
|
128
128
|
/**
|
|
129
|
-
* The argv as a command line to run again, `--confirm` dropped. Secrets
|
|
130
|
-
*
|
|
129
|
+
* The argv as a command line to run again, `--confirm` dropped. Secrets only
|
|
130
|
+
* arrive through `--*-stdin` flags, so the line holds none.
|
|
131
131
|
*/
|
|
132
132
|
function replayArgv(argv) {
|
|
133
133
|
const out = [];
|
|
@@ -143,8 +143,8 @@ function replayArgv(argv) {
|
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
145
145
|
* A short token bound to what the person agrees to, the directory and the
|
|
146
|
-
* command line. Hex, because a base64url token may start with `-` and parse
|
|
147
|
-
*
|
|
146
|
+
* command line. Hex, because a base64url token may start with `-` and parse as
|
|
147
|
+
* a flag. 16 characters, as better-supabase's.
|
|
148
148
|
*/
|
|
149
149
|
function consentToken(reasons, argv, cwd) {
|
|
150
150
|
return createHash("sha256").update(JSON.stringify([
|
|
@@ -304,7 +304,10 @@ function document(commands) {
|
|
|
304
304
|
commands
|
|
305
305
|
};
|
|
306
306
|
}
|
|
307
|
-
/**
|
|
307
|
+
/**
|
|
308
|
+
* `<command> --help --json`: the `cli-commands-v1` document with that command
|
|
309
|
+
* only.
|
|
310
|
+
*/
|
|
308
311
|
function leafDocument(path, entry, leaf) {
|
|
309
312
|
return document([leafJson(path, entry, leaf)]);
|
|
310
313
|
}
|
|
@@ -402,8 +405,8 @@ function lined(text) {
|
|
|
402
405
|
return text === "" || text.endsWith("\n") ? text : `${text}\n`;
|
|
403
406
|
}
|
|
404
407
|
/**
|
|
405
|
-
* The step that answers an `input_required` error without its own `next`:
|
|
406
|
-
*
|
|
408
|
+
* The step that answers an `input_required` error without its own `next`: the
|
|
409
|
+
* same command line with each missing flag or positional filled by a
|
|
407
410
|
* placeholder the caller replaces.
|
|
408
411
|
*/
|
|
409
412
|
function missingInputNext(argv, error) {
|
|
@@ -675,7 +678,7 @@ async function run(argv, options) {
|
|
|
675
678
|
if (result.streamed === true) return done(result.code);
|
|
676
679
|
if (format === "github" || format === "sarif") {
|
|
677
680
|
const findings = result.findings ?? [];
|
|
678
|
-
writeOut(format === "github" ? githubAnnotations(findings)
|
|
681
|
+
writeOut(format === "github" ? githubAnnotations(findings) : sarifLog(name, findings));
|
|
679
682
|
return done(result.code);
|
|
680
683
|
}
|
|
681
684
|
if (json) {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Wt as Instant, ar as AuthorizationDetail, hr as Subject, ht as TokenVerifier, lr as Delegation, mt as TokenSigner, pr as Principal, pt as TokenFailureCause, rn as AuthEvent, rr as Actor } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { _ as PrincipalSource } from "./permdock-CprAPN3w.js";
|
|
3
3
|
//#region src/server/run-ticket.d.ts
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* What started the run: a saved automation, a background job, or a caller's own
|
|
6
|
+
* request.
|
|
7
|
+
*/
|
|
5
8
|
type RunKind = "automation" | "job" | "caller";
|
|
6
9
|
/** RFC 8693 `act`: the party running the work, with the chain of earlier actors. */
|
|
7
10
|
type RunActClaim = {
|
|
@@ -9,7 +12,10 @@ type RunActClaim = {
|
|
|
9
12
|
readonly kind?: string;
|
|
10
13
|
readonly act?: RunActClaim;
|
|
11
14
|
};
|
|
12
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The connector and tools a run may reach; carried for the adapter, never a
|
|
17
|
+
* grant.
|
|
18
|
+
*/
|
|
13
19
|
type RunBinding = {
|
|
14
20
|
readonly connector?: string;
|
|
15
21
|
readonly tools?: readonly string[];
|
|
@@ -18,7 +24,10 @@ type RunAutomation = {
|
|
|
18
24
|
readonly id: string;
|
|
19
25
|
readonly version: number | string;
|
|
20
26
|
};
|
|
21
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* The v1 claims of a `vnd.permdock.run+jwt`. At least one of `scope` and
|
|
29
|
+
* `authorization_details` is present.
|
|
30
|
+
*/
|
|
22
31
|
type RunTicket = {
|
|
23
32
|
readonly v: 1;
|
|
24
33
|
readonly iss: string;
|
|
@@ -34,13 +43,16 @@ type RunTicket = {
|
|
|
34
43
|
/** Present exactly when `kind` is `automation`. */
|
|
35
44
|
readonly automation?: RunAutomation;
|
|
36
45
|
readonly tenant?: string;
|
|
37
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* The event that started the run, as JSON. Evaluation never reads it as a
|
|
48
|
+
* grant.
|
|
49
|
+
*/
|
|
38
50
|
readonly trigger?: Readonly<Record<string, unknown>>;
|
|
39
51
|
readonly binding?: RunBinding;
|
|
40
52
|
};
|
|
41
53
|
/**
|
|
42
|
-
* Every v1 claim of a `vnd.permdock.run+jwt`, the set `parseRunTicket` keeps.
|
|
43
|
-
*
|
|
54
|
+
* Every v1 claim of a `vnd.permdock.run+jwt`, the set `parseRunTicket` keeps. A
|
|
55
|
+
* signing service passes only these to its signer.
|
|
44
56
|
*/
|
|
45
57
|
declare const RUN_TICKET_CLAIMS: readonly (keyof RunTicket)[];
|
|
46
58
|
type RunTicketInput = {
|
|
@@ -49,7 +61,10 @@ type RunTicketInput = {
|
|
|
49
61
|
readonly kind: RunKind;
|
|
50
62
|
/** Becomes `act`; a nested `act` on the actor is kept as the chain. */
|
|
51
63
|
readonly actor?: Actor;
|
|
52
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* The run's ceiling. Required: a ticket never carries the principal's full
|
|
66
|
+
* authority.
|
|
67
|
+
*/
|
|
53
68
|
readonly delegation: Delegation;
|
|
54
69
|
readonly automation?: RunAutomation;
|
|
55
70
|
readonly tenant?: string;
|
|
@@ -67,9 +82,9 @@ type RunTicketOptions = {
|
|
|
67
82
|
};
|
|
68
83
|
/** The live record of an automation, read on every use of its ticket. */
|
|
69
84
|
type RunTicketAutomations = {
|
|
70
|
-
automation(id: string, options: {
|
|
85
|
+
automation: (id: string, options: {
|
|
71
86
|
readonly tenant?: string;
|
|
72
|
-
})
|
|
87
|
+
}) => {
|
|
73
88
|
readonly id: string;
|
|
74
89
|
readonly version: number | string;
|
|
75
90
|
readonly revoked?: boolean;
|
|
@@ -104,9 +119,9 @@ type RunPrincipal = Principal & {
|
|
|
104
119
|
readonly runTicket: RunTicket;
|
|
105
120
|
};
|
|
106
121
|
/**
|
|
107
|
-
* Validates untrusted run-ticket claims and returns a frozen copy with only
|
|
108
|
-
*
|
|
109
|
-
*
|
|
122
|
+
* Validates untrusted run-ticket claims and returns a frozen copy with only the
|
|
123
|
+
* v1 fields, or `undefined`. Unknown claims are dropped; a wrong type in a
|
|
124
|
+
* known claim, a missing delegation, or an `automation` that does not match
|
|
110
125
|
* `kind` rejects the whole ticket.
|
|
111
126
|
*/
|
|
112
127
|
declare function parseRunTicket(claims: unknown): RunTicket | undefined;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { a as ownRecord, n as isForbiddenKey } from "./paths-
|
|
4
|
-
import { a as isId } from "./expiry-
|
|
5
|
-
import { o as epochSeconds, p as nowSeconds } from "./time-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { a as ownRecord, n as isForbiddenKey } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { a as isId } from "./expiry-6XByK0dm.js";
|
|
5
|
+
import { o as epochSeconds, p as nowSeconds } from "./time-nR1JesoH.js";
|
|
6
6
|
import { n as toWireDelegation, t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
|
|
7
7
|
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
8
8
|
//#region src/server/run-ticket.ts
|
|
9
9
|
const RUN_TICKET_TYP = "vnd.permdock.run+jwt";
|
|
10
10
|
/**
|
|
11
|
-
* Every v1 claim of a `vnd.permdock.run+jwt`, the set `parseRunTicket` keeps.
|
|
12
|
-
*
|
|
11
|
+
* Every v1 claim of a `vnd.permdock.run+jwt`, the set `parseRunTicket` keeps. A
|
|
12
|
+
* signing service passes only these to its signer.
|
|
13
13
|
*/
|
|
14
14
|
const RUN_TICKET_CLAIMS = Object.freeze([
|
|
15
15
|
"v",
|
|
@@ -155,9 +155,9 @@ function parseBody(record) {
|
|
|
155
155
|
});
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
|
-
* Validates untrusted run-ticket claims and returns a frozen copy with only
|
|
159
|
-
*
|
|
160
|
-
*
|
|
158
|
+
* Validates untrusted run-ticket claims and returns a frozen copy with only the
|
|
159
|
+
* v1 fields, or `undefined`. Unknown claims are dropped; a wrong type in a
|
|
160
|
+
* known claim, a missing delegation, or an `automation` that does not match
|
|
161
161
|
* `kind` rejects the whole ticket.
|
|
162
162
|
*/
|
|
163
163
|
function parseRunTicket(claims) {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { l as scopedTenant, s as protectedView } from "./views-
|
|
1
|
+
import { l as scopedTenant, s as protectedView } from "./views-CD8wuL4Z.js";
|
|
2
2
|
//#region src/svelte/protected.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The instance for `tenant`, built once per store change rather than once per
|
|
5
|
+
* check.
|
|
6
|
+
*/
|
|
4
7
|
function scopedFor(store, tenant, _generation) {
|
|
5
8
|
return scopedTenant(store.get(), tenant);
|
|
6
9
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { i as principal } from "./refs-
|
|
3
|
-
import { a as deny, n as role, r as allow } from "./role-builder-
|
|
4
|
-
import {
|
|
5
|
-
import { h as secondsAt } from "./time-
|
|
6
|
-
import { l as relation, n as anyone } from "./grantee-
|
|
7
|
-
import {
|
|
8
|
-
import { s as quoteSqlLiteral } from "./sql-
|
|
9
|
-
import { a as saasPlans, i as saasPermissions, o as saasRoles } from "./permissions-
|
|
2
|
+
import { i as principal } from "./refs-C8BKxc_e.js";
|
|
3
|
+
import { a as deny, n as role, r as allow } from "./role-builder-BK2-T6oD.js";
|
|
4
|
+
import { C as memoryLimitStore, S as limits, j as memoryCustomRoleSource, x as memoryRelationSource } from "./src-C_pi2Rnh.js";
|
|
5
|
+
import { h as secondsAt } from "./time-nR1JesoH.js";
|
|
6
|
+
import { l as relation, n as anyone } from "./grantee-Dke-9rd1.js";
|
|
7
|
+
import { r as definePolicy } from "./policy-CLQ8__GF.js";
|
|
8
|
+
import { s as quoteSqlLiteral } from "./sql-0WjxIp9g.js";
|
|
9
|
+
import { a as saasPlans, i as saasPermissions, o as saasRoles } from "./permissions-CYcHj_w7.js";
|
|
10
10
|
//#region src/testing/saas/policy.ts
|
|
11
11
|
function isSubject(user) {
|
|
12
12
|
return user !== null && "context" in user && "principal" in user;
|
|
@@ -107,6 +107,7 @@ const saasPolicy = definePolicy({
|
|
|
107
107
|
const SAAS_EXPIRED_AT = 1e9;
|
|
108
108
|
/**
|
|
109
109
|
* Users, one hazard each:
|
|
110
|
+
*
|
|
110
111
|
* - alice: admin in acme, viewer in globex (different role per org)
|
|
111
112
|
* - bob: member in acme (owns p1, p3, p4)
|
|
112
113
|
* - carol: owner in acme
|
|
@@ -116,9 +117,11 @@ const SAAS_EXPIRED_AT = 1e9;
|
|
|
116
117
|
* - mallory: no memberships at all
|
|
117
118
|
* - gina: `lead` of team-a in acme
|
|
118
119
|
* - hank: viewer in acme, `collaborator` on project p3 only
|
|
119
|
-
* - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one
|
|
120
|
+
* - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one
|
|
121
|
+
* instant
|
|
120
122
|
* - tina: member of `tenant-1`; `Date.parse('org-1') === Date.parse('tenant-1')`
|
|
121
|
-
* - ivan: viewer in acme who holds the team role `lead` on the tenant membership
|
|
123
|
+
* - ivan: viewer in acme who holds the team role `lead` on the tenant membership
|
|
124
|
+
* (the wrong scope)
|
|
122
125
|
*
|
|
123
126
|
* Acme's folders: `root` ─ `eng` ─ `platform` ─ `infra`, and `root` ─ `hr`
|
|
124
127
|
* (restricted) ─ `payroll`. bob views `root`, hank views `hr`, gina edits
|
|
@@ -391,7 +394,10 @@ const saasSeed = Object.freeze({
|
|
|
391
394
|
}
|
|
392
395
|
]
|
|
393
396
|
});
|
|
394
|
-
/**
|
|
397
|
+
/**
|
|
398
|
+
* The seed's folder tree and shares as a `RelationSource`, for
|
|
399
|
+
* `createPermDock({ relations })`.
|
|
400
|
+
*/
|
|
395
401
|
function saasRelations(seed = saasSeed) {
|
|
396
402
|
const edges = (relation) => seed.shares.filter((share) => share.relation === relation).map((share) => share.expiresAt === void 0 ? {
|
|
397
403
|
id: share.folder,
|
|
@@ -432,9 +438,9 @@ function saasMemberships(user, members = saasSeed.members) {
|
|
|
432
438
|
/** Custom roles of every org, as `createPermDock({ customRoles })` expects. */
|
|
433
439
|
const saasCustomRoles = saasSeed.orgs.flatMap((org) => org.customRoles);
|
|
434
440
|
/**
|
|
435
|
-
* The principal for `user`, with the plans of the requested `tenant`'s org.
|
|
436
|
-
*
|
|
437
|
-
*
|
|
441
|
+
* The principal for `user`, with the plans of the requested `tenant`'s org. The
|
|
442
|
+
* tenant itself is passed to `createPermDock({ tenant })`, never trusted from
|
|
443
|
+
* here.
|
|
438
444
|
*/
|
|
439
445
|
function saasPrincipal(user, tenant) {
|
|
440
446
|
const org = tenant === void 0 ? void 0 : saasOrg(tenant);
|
|
@@ -447,10 +453,10 @@ function saasPrincipal(user, tenant) {
|
|
|
447
453
|
//#endregion
|
|
448
454
|
//#region src/testing/saas/sql.ts
|
|
449
455
|
/**
|
|
450
|
-
* Postgres tables for the SaaS domain. Column names match the resource
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
456
|
+
* Postgres tables for the SaaS domain. Column names match the resource fields
|
|
457
|
+
* (`"orgId"`, `"ownerId"`) so generated RLS and ORM filters compile against
|
|
458
|
+
* them without a column map. RLS is enabled and forced on the row tables;
|
|
459
|
+
* policies come from `permdock rls generate`.
|
|
454
460
|
*/
|
|
455
461
|
const saasSchemaSql = `
|
|
456
462
|
create table org (
|
|
@@ -507,7 +513,7 @@ create table folder_editor (
|
|
|
507
513
|
function literal(value) {
|
|
508
514
|
if (value === null || value === void 0) return "null";
|
|
509
515
|
if (typeof value === "number") {
|
|
510
|
-
if (!Number.isFinite(value)) throw new
|
|
516
|
+
if (!Number.isFinite(value)) throw new TypeError("PermDock: non-finite number in fixture seed");
|
|
511
517
|
return String(value);
|
|
512
518
|
}
|
|
513
519
|
if (typeof value === "boolean") return value ? "true" : "false";
|
|
@@ -592,7 +598,7 @@ const SAAS_TOKEN_TTL_SECONDS = 3600;
|
|
|
592
598
|
function base64url(bytes) {
|
|
593
599
|
let binary = "";
|
|
594
600
|
for (const byte of bytes) binary += String.fromCodePoint(byte);
|
|
595
|
-
return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replace(
|
|
601
|
+
return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replace(/[=]+$/u, "");
|
|
596
602
|
}
|
|
597
603
|
function encodeJson(value) {
|
|
598
604
|
return base64url(new TextEncoder().encode(JSON.stringify(value)));
|
|
@@ -640,9 +646,9 @@ function parseSegment(segment) {
|
|
|
640
646
|
}
|
|
641
647
|
}
|
|
642
648
|
/**
|
|
643
|
-
* Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`)
|
|
644
|
-
*
|
|
645
|
-
*
|
|
649
|
+
* Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`) and
|
|
650
|
+
* returns its `sub`, or `null`; never throws. Identity only: memberships and
|
|
651
|
+
* plans come from the seed, never from the token.
|
|
646
652
|
*/
|
|
647
653
|
async function verifySaasToken(token, now) {
|
|
648
654
|
return (await verifySaasSession(token, now))?.sub ?? null;
|
|
@@ -677,7 +683,10 @@ async function verifySaasSession(token, at) {
|
|
|
677
683
|
}
|
|
678
684
|
//#endregion
|
|
679
685
|
//#region src/testing/saas/scenarios.ts
|
|
680
|
-
/**
|
|
686
|
+
/**
|
|
687
|
+
* What the policy's `subject` receives: the principal, or a `Subject` carrying
|
|
688
|
+
* the actor.
|
|
689
|
+
*/
|
|
681
690
|
function saasUser(scenario) {
|
|
682
691
|
const principal = saasPrincipal(scenario.user, scenario.tenant);
|
|
683
692
|
if (scenario.actor === void 0 && scenario.delegation === void 0) return principal;
|
|
@@ -713,7 +722,10 @@ function saasLimitStore(used = 0) {
|
|
|
713
722
|
}
|
|
714
723
|
};
|
|
715
724
|
}
|
|
716
|
-
/**
|
|
725
|
+
/**
|
|
726
|
+
* The `createPermDock` options a scenario runs with: tenant, custom roles,
|
|
727
|
+
* quota and folder tree.
|
|
728
|
+
*/
|
|
717
729
|
function saasScenarioOptions(scenario) {
|
|
718
730
|
return {
|
|
719
731
|
...scenario.tenant === void 0 ? {} : { tenant: scenario.tenant },
|
|
@@ -738,8 +750,9 @@ function saasFolder(id) {
|
|
|
738
750
|
return row;
|
|
739
751
|
}
|
|
740
752
|
/**
|
|
741
|
-
* The folder tree, decided with `createPermDock({ relations: saasRelations()
|
|
742
|
-
* A snapshot carries no graph, so every graph grant is server-only on a
|
|
753
|
+
* The folder tree, decided with `createPermDock({ relations: saasRelations()
|
|
754
|
+
* })`. A snapshot carries no graph, so every graph grant is server-only on a
|
|
755
|
+
* client.
|
|
743
756
|
*/
|
|
744
757
|
const saasFolderScenarios = Object.freeze([
|
|
745
758
|
{
|
|
@@ -803,8 +816,8 @@ const saasFolderScenarios = Object.freeze([
|
|
|
803
816
|
}
|
|
804
817
|
]);
|
|
805
818
|
/**
|
|
806
|
-
* Hand-written expectations. Never derive `expected` from the engine: the
|
|
807
|
-
*
|
|
819
|
+
* Hand-written expectations. Never derive `expected` from the engine: the list
|
|
820
|
+
* is the oracle every adapter, ORM and client suite runs against.
|
|
808
821
|
*/
|
|
809
822
|
const saasScenarios = Object.freeze([
|
|
810
823
|
{
|
|
@@ -16,7 +16,7 @@ const scan = defineLeaf({
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
async run(ctx, { flags }) {
|
|
19
|
-
const { runAdoptionScan } = await import("./adoption-scan-
|
|
19
|
+
const { runAdoptionScan } = await import("./adoption-scan-Ch07MdxN.js");
|
|
20
20
|
return runAdoptionScan({
|
|
21
21
|
cwd: ctx.cwd,
|
|
22
22
|
srcPath: flags.src.length > 0 ? flags.src : ctx.config.collect?.srcPath ?? ["src"],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as freezeDeep } from "./freeze-
|
|
2
|
-
import { n as RFC3339_PATTERN } from "./time-
|
|
1
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
2
|
+
import { n as RFC3339_PATTERN } from "./time-nR1JesoH.js";
|
|
3
3
|
//#region src/catalog/schema.ts
|
|
4
4
|
const name = {
|
|
5
5
|
type: "string",
|
|
@@ -234,6 +234,7 @@ const catalogSchema = freezeDeep({
|
|
|
234
234
|
},
|
|
235
235
|
renamedFrom: strings,
|
|
236
236
|
levels: strings,
|
|
237
|
+
orderedLevels: { const: true },
|
|
237
238
|
hostable: { const: true },
|
|
238
239
|
rowConditions: { type: "boolean" },
|
|
239
240
|
approvals: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as DRAFT_PINS } from "./pins-
|
|
2
|
+
import { l as packageRoot } from "./version-DMQ0dnN5.js";
|
|
3
|
+
import { t as DRAFT_PINS } from "./pins-nqarl3oE.js";
|
|
4
|
+
import { a as nonEmptyOr } from "./output-DV5dwOTs.js";
|
|
4
5
|
import { t as require__2020 } from "./2020-CJbO8Bvz.js";
|
|
5
6
|
import { readFileSync } from "node:fs";
|
|
6
7
|
import { join } from "node:path";
|
|
@@ -97,9 +98,12 @@ function validatorFor(file) {
|
|
|
97
98
|
return compiled;
|
|
98
99
|
}
|
|
99
100
|
function describeErrors(errors) {
|
|
100
|
-
return (errors ?? []).slice(0, 5).map((error) => ` ${error.instancePath
|
|
101
|
+
return (errors ?? []).slice(0, 5).map((error) => ` ${nonEmptyOr(error.instancePath, "/")} ${error.message ?? ""}`).join("\n");
|
|
101
102
|
}
|
|
102
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* Validates an OpenAPI 3.1 or 3.2 document against the official JSON Schema,
|
|
105
|
+
* and 3.3 against the pinned patch of 3.2.
|
|
106
|
+
*/
|
|
103
107
|
function validateOpenapi(document) {
|
|
104
108
|
const version = isRecord(document) ? document["openapi"] : void 0;
|
|
105
109
|
const match = typeof version === "string" ? /^3\.([123])\.\d+$/u.exec(version) : null;
|
package/dist/scim/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as SqlQuery } from "../sql-
|
|
2
|
-
import { A as ScimFilter, C as DirectoryUser, D as PATCH_SCHEMA, E as LIST_SCHEMA, F as ScimTokenOptions, I as USER_SCHEMA, L as isDirectoryNotFoundError, M as ScimPage, N as ScimPageResult, O as ROLES_EXTENSION, P as ScimPatchOp, R as isDirectoryUniquenessError, S as DirectoryUniquenessError, T as GROUP_SCHEMA, _ as DirectoryChange, a as normalizePatchOps, b as DirectoryNotFoundError, c as filterSupported, d as resourceTypes, f as schemas, g as APP_DATA_EXTENSION, h as sha256Hex, i as directoryMembershipSource, j as ScimHandlerOptions, k as SCIM_CONTENT_TYPE, l as matchFilter, m as authenticateScim, n as postgresDirectoryStore, o as tenantFromPath, p as serviceProviderConfig, r as memoryDirectoryStore, s as scimHandler, t as PostgresDirectoryStoreOptions, u as parseScimFilter, v as DirectoryGroup, w as ERROR_SCHEMA, x as DirectoryStore, y as DirectoryMembershipSourceOptions } from "../index-
|
|
1
|
+
import { t as SqlQuery } from "../sql-B80DFdpG.js";
|
|
2
|
+
import { A as ScimFilter, C as DirectoryUser, D as PATCH_SCHEMA, E as LIST_SCHEMA, F as ScimTokenOptions, I as USER_SCHEMA, L as isDirectoryNotFoundError, M as ScimPage, N as ScimPageResult, O as ROLES_EXTENSION, P as ScimPatchOp, R as isDirectoryUniquenessError, S as DirectoryUniquenessError, T as GROUP_SCHEMA, _ as DirectoryChange, a as normalizePatchOps, b as DirectoryNotFoundError, c as filterSupported, d as resourceTypes, f as schemas, g as APP_DATA_EXTENSION, h as sha256Hex, i as directoryMembershipSource, j as ScimHandlerOptions, k as SCIM_CONTENT_TYPE, l as matchFilter, m as authenticateScim, n as postgresDirectoryStore, o as tenantFromPath, p as serviceProviderConfig, r as memoryDirectoryStore, s as scimHandler, t as PostgresDirectoryStoreOptions, u as parseScimFilter, v as DirectoryGroup, w as ERROR_SCHEMA, x as DirectoryStore, y as DirectoryMembershipSourceOptions } from "../index-Dj2qF9VC.js";
|
|
3
3
|
export { APP_DATA_EXTENSION, type DirectoryChange, type DirectoryGroup, type DirectoryMembershipSourceOptions, DirectoryNotFoundError, type DirectoryStore, DirectoryUniquenessError, type DirectoryUser, ERROR_SCHEMA, GROUP_SCHEMA, LIST_SCHEMA, PATCH_SCHEMA, type PostgresDirectoryStoreOptions, ROLES_EXTENSION, SCIM_CONTENT_TYPE, type ScimFilter, type ScimHandlerOptions, type ScimPage, type ScimPageResult, type ScimPatchOp, type ScimTokenOptions, type SqlQuery, USER_SCHEMA, authenticateScim, directoryMembershipSource, filterSupported, isDirectoryNotFoundError, isDirectoryUniquenessError, matchFilter, memoryDirectoryStore, normalizePatchOps, parseScimFilter, postgresDirectoryStore, resourceTypes, schemas, scimHandler, serviceProviderConfig, sha256Hex, tenantFromPath };
|
package/dist/scim/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as resourceTypes, c as authenticateScim, i as normalizePatchOps, l as sha256Hex, n as scimHandler, o as schemas, r as tenantFromPath, s as serviceProviderConfig, t as directoryMembershipSource } from "../scim-
|
|
2
|
-
import { _ as SCIM_CONTENT_TYPE, a as memoryDirectoryStore, b as isDirectoryUniquenessError, c as parseScimFilter, d as DirectoryUniquenessError, f as ERROR_SCHEMA, g as ROLES_EXTENSION, h as PATCH_SCHEMA, i as postgresDirectoryStore, l as APP_DATA_EXTENSION, m as LIST_SCHEMA, o as filterSupported, p as GROUP_SCHEMA, s as matchFilter, u as DirectoryNotFoundError, v as USER_SCHEMA, y as isDirectoryNotFoundError } from "../postgres-store-
|
|
1
|
+
import { a as resourceTypes, c as authenticateScim, i as normalizePatchOps, l as sha256Hex, n as scimHandler, o as schemas, r as tenantFromPath, s as serviceProviderConfig, t as directoryMembershipSource } from "../scim-jJBJ7g1Z.js";
|
|
2
|
+
import { _ as SCIM_CONTENT_TYPE, a as memoryDirectoryStore, b as isDirectoryUniquenessError, c as parseScimFilter, d as DirectoryUniquenessError, f as ERROR_SCHEMA, g as ROLES_EXTENSION, h as PATCH_SCHEMA, i as postgresDirectoryStore, l as APP_DATA_EXTENSION, m as LIST_SCHEMA, o as filterSupported, p as GROUP_SCHEMA, s as matchFilter, u as DirectoryNotFoundError, v as USER_SCHEMA, y as isDirectoryNotFoundError } from "../postgres-store-DcyrPS-r.js";
|
|
3
3
|
export { APP_DATA_EXTENSION, DirectoryNotFoundError, DirectoryUniquenessError, ERROR_SCHEMA, GROUP_SCHEMA, LIST_SCHEMA, PATCH_SCHEMA, ROLES_EXTENSION, SCIM_CONTENT_TYPE, USER_SCHEMA, authenticateScim, directoryMembershipSource, filterSupported, isDirectoryNotFoundError, isDirectoryUniquenessError, matchFilter, memoryDirectoryStore, normalizePatchOps, parseScimFilter, postgresDirectoryStore, resourceTypes, schemas, scimHandler, serviceProviderConfig, sha256Hex, tenantFromPath };
|