permdock 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-BLs67P1l.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-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- 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-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.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-BAkBDMqn.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-DqEoWHBc.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-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
- 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-BFpz2EmT.js} +20 -19
- package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.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-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.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-BFlGMaak.js} +4 -5
- package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
- package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
- 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-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/{connector-schema-_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-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
- package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
- package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
- package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
- 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-CHNlVInN.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
- 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-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.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-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.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-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -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-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
- package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
- package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
- package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
- package/dist/index.d.ts +22 -22
- package/dist/index.js +33 -33
- package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
- 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-C-fYydV2.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-D-8tMqzo.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.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-BNWCJtmP.js} +14 -8
- 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 +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
- 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-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-BQhTlLQS.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-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
- package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
- 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-mDcTWoBs.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-Ba4bDhaj.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-CJgOm6aq.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-CCiDRZBH.d.ts} +738 -349
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
- package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
- package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-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-BE7N_Luo.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-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +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-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
- package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
- 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-fNqAIqQk.js} +8 -5
- package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.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-iWnUdwCt.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.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-CIlpSA2G.d.ts} +81 -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-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
- package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.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-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
- package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- 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-DZ0l9UAg.js} +190 -100
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- 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-BL1qJzzY.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
- 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-DeMNEy6V.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 +224 -141
- package/dist/testing/index.js +299 -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-BIPIDa6a.d.ts +50 -0
- package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
- package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
- package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
- package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-pe8rL_Qw.js → verify-DZeqoWu5.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-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +7 -7
- 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 +14 -22
- 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,24 +1,28 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
|
|
3
|
-
import { n as freezeDeep } from "../freeze-
|
|
4
|
-
import { r as requiredPlans } from "../problem-details-
|
|
5
|
-
import {
|
|
6
|
-
import { n as isThenable } from "../thenable-
|
|
7
|
-
import { h as secondsAt, m as rfc3339 } from "../time-
|
|
8
|
-
import { f as scopeList, h as tenantOf$1, o as normalizeMemberships, s as resolveScope } from "../scopes-
|
|
9
|
-
import { o as flattenGrantee } from "../grantee-
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { t as
|
|
14
|
-
import { t as
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { a as
|
|
3
|
+
import { n as freezeDeep } from "../freeze-jjan0lCv.js";
|
|
4
|
+
import { r as requiredPlans } from "../problem-details-CLDgX1KV.js";
|
|
5
|
+
import { n as describe } from "../describe-Bb4hGK5d.js";
|
|
6
|
+
import { n as isThenable } from "../thenable-BNSM1U2R.js";
|
|
7
|
+
import { h as secondsAt, m as rfc3339 } from "../time-nR1JesoH.js";
|
|
8
|
+
import { f as scopeList, h as tenantOf$1, o as normalizeMemberships, s as resolveScope } from "../scopes-0Up_UA2t.js";
|
|
9
|
+
import { o as flattenGrantee } from "../grantee-Dke-9rd1.js";
|
|
10
|
+
import { t as byCodePoint } from "../compare-DTfyUunF.js";
|
|
11
|
+
import { d as resolveActiveTenant, r as isMembershipExpired } from "../tenancy-5d1zVBvK.js";
|
|
12
|
+
import { a as bindConditionRefs, n as parseSnapshot } from "../snapshot-CXlzi69u.js";
|
|
13
|
+
import { r as heldRoleNames, t as emptySnapshot } from "../from-snapshot-DCakWRsr.js";
|
|
14
|
+
import { t as parseLocalSnapshotManifest } from "../parse-local-manifest-DEiCF4ah.js";
|
|
15
|
+
import { r as approvalHeaders } from "../protected-action-DUYqb-Ma.js";
|
|
16
|
+
import { i as isJws, n as storeOf, r as eventSourceRefresh, t as adapterStore } from "../store-options-Dil3lraY.js";
|
|
17
|
+
import { a as PermDockUiContext, i as PermDockStoreContext, n as useKeyed, t as useLiveOptions } from "../live-options-BBIT68le.js";
|
|
18
|
+
import { a as useAssignableRoles, c as useGate, d as usePermission, f as usePermissions, h as useTenant, i as useAssignablePermissions, l as useMemberships, m as useSubject, n as Protected, o as useDescribe, p as useRoles, r as useApproval, s as useFilter, t as useProtectedAction, u as usePermDock } from "../protected-action-QEA8arRB.js";
|
|
18
19
|
import { useEffect, useMemo, useRef } from "react";
|
|
19
20
|
import { jsx } from "react/jsx-runtime";
|
|
20
21
|
//#region src/react-native/guards.ts
|
|
21
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* `true` once the provider has a snapshot to answer from: storage was read or a
|
|
24
|
+
* seed was given. Hide the splash screen on it.
|
|
25
|
+
*/
|
|
22
26
|
function useSnapshotReady() {
|
|
23
27
|
return usePermDock().status() !== "pending";
|
|
24
28
|
}
|
|
@@ -41,6 +45,71 @@ function usePermissionGuard(permission, data) {
|
|
|
41
45
|
]);
|
|
42
46
|
}
|
|
43
47
|
//#endregion
|
|
48
|
+
//#region src/react-native/local-assignable.ts
|
|
49
|
+
/**
|
|
50
|
+
* The levels a holder of `level` on `key` may hand out; `undefined` when the
|
|
51
|
+
* table does not know the entry.
|
|
52
|
+
*/
|
|
53
|
+
function entryReach(table, key, level) {
|
|
54
|
+
const row = Object.hasOwn(table.permissions, key) ? table.permissions[key] : void 0;
|
|
55
|
+
if (row === void 0) return;
|
|
56
|
+
if (level === void 0) return row.reach;
|
|
57
|
+
return row.levelReach !== void 0 && Object.hasOwn(row.levelReach, level) ? row.levelReach[level] : void 0;
|
|
58
|
+
}
|
|
59
|
+
/** The levels a holder of `role`'s included grants on `key` may hand out. */
|
|
60
|
+
function includeReach(table, role, key) {
|
|
61
|
+
const byKey = table.includeReach !== void 0 && Object.hasOwn(table.includeReach, role) ? table.includeReach[role] : void 0;
|
|
62
|
+
return byKey !== void 0 && Object.hasOwn(byKey, key) ? byKey[key] : void 0;
|
|
63
|
+
}
|
|
64
|
+
function listOf(record, key) {
|
|
65
|
+
return record !== void 0 && Object.hasOwn(record, key) ? record[key] ?? [] : [];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* What the subject may hand out in `tenant`, by the rules of `assignableIn`:
|
|
69
|
+
* declared assignable roles and the tenant's custom roles, intersected with the
|
|
70
|
+
* permissions and levels the subject holds there. Holding a `meta.manageRoles`
|
|
71
|
+
* role, or an unconditioned allow of a `meta.manageRoles` permission, lifts the
|
|
72
|
+
* intersection.
|
|
73
|
+
*/
|
|
74
|
+
function localAssignableFor(input) {
|
|
75
|
+
const { rules, custom, tenant, heldNames } = input;
|
|
76
|
+
const allows = input.held.filter((item) => item.grant.effect === "allow");
|
|
77
|
+
const heldKeys = new Set(allows.map((item) => item.grant.permission));
|
|
78
|
+
const unconditioned = (effect, key) => input.held.some(({ grant }) => grant.effect === effect && grant.permission === key && grant.where === void 0 && grant.check === void 0 && grant.approval === void 0 && grant.validity === void 0);
|
|
79
|
+
const manage = heldNames.some((name) => rules.manage.roles.includes(name)) || rules.manage.permissions.some((key) => unconditioned("allow", key) && !unconditioned("deny", key));
|
|
80
|
+
const held = new Set(heldNames);
|
|
81
|
+
const listed = rules.assigns === void 0 ? void 0 : new Set(heldNames.flatMap((name) => listOf(rules.assigns, name)));
|
|
82
|
+
const roles = rules.roles.filter((item) => {
|
|
83
|
+
if (manage) return true;
|
|
84
|
+
if (listed !== void 0) return listed.has(item.name);
|
|
85
|
+
return held.has(item.name) || item.allows.length > 0 && item.allows.every((key) => heldKeys.has(key));
|
|
86
|
+
});
|
|
87
|
+
const permissions = rules.permissions.filter((leaf) => manage || heldKeys.has(leaf.key));
|
|
88
|
+
const offered = (key) => {
|
|
89
|
+
const names = listOf(rules.levels, key);
|
|
90
|
+
if (manage) return names;
|
|
91
|
+
const reached = new Set(allows.filter((item) => item.grant.permission === key).flatMap((item) => item.reach ?? []));
|
|
92
|
+
return names.filter((name) => reached.has(name));
|
|
93
|
+
};
|
|
94
|
+
const levels = {};
|
|
95
|
+
for (const leaf of permissions) if (listOf(rules.levels, leaf.key).length > 0) levels[leaf.key] = offered(leaf.key);
|
|
96
|
+
const assignsAt = manage ? void 0 : new Set(roles.map((item) => item.on));
|
|
97
|
+
const mayHandOut = (scope, allow) => {
|
|
98
|
+
const table = Object.hasOwn(custom, scope) ? custom[scope] : void 0;
|
|
99
|
+
if (table === void 0 || !Object.hasOwn(table.permissions, allow.key) || !(manage || heldKeys.has(allow.key))) return false;
|
|
100
|
+
if (listOf(rules.levels, allow.key).length === 0) return true;
|
|
101
|
+
const can = offered(allow.key);
|
|
102
|
+
return (allow.reach ?? []).every((name) => can.includes(name));
|
|
103
|
+
};
|
|
104
|
+
const customNames = input.customRoles.filter((role) => (assignsAt === void 0 || assignsAt.has(role.scope)) && role.allows.length > 0 && role.allows.every((allow) => mayHandOut(role.scope, allow))).toSorted((a, b) => Number(!a.shared) - Number(!b.shared) || byCodePoint(a.name, b.name)).map((role) => role.name);
|
|
105
|
+
return compact({
|
|
106
|
+
tenant,
|
|
107
|
+
roles: [...roles.map((item) => item.name), ...new Set(customNames)],
|
|
108
|
+
permissions,
|
|
109
|
+
levels: Object.keys(levels).length === 0 ? void 0 : levels
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
44
113
|
//#region src/react-native/local.ts
|
|
45
114
|
const CARRIED = /* @__PURE__ */ new Set([
|
|
46
115
|
"id",
|
|
@@ -75,8 +144,8 @@ function renamed(grant, name) {
|
|
|
75
144
|
};
|
|
76
145
|
}
|
|
77
146
|
/**
|
|
78
|
-
* The grants a custom role holds, from the entries the server resolved one
|
|
79
|
-
*
|
|
147
|
+
* The grants a custom role holds, from the entries the server resolved one by
|
|
148
|
+
* one: an entry the table does not know grants nothing.
|
|
80
149
|
*/
|
|
81
150
|
function customGrants(table, role) {
|
|
82
151
|
const entries = Array.isArray(role.grants) ? role.grants : [];
|
|
@@ -102,22 +171,38 @@ function customGrants(table, role) {
|
|
|
102
171
|
});
|
|
103
172
|
}
|
|
104
173
|
const out = [];
|
|
174
|
+
const reached = [];
|
|
105
175
|
const included = /* @__PURE__ */ new Set();
|
|
106
176
|
const names = Array.isArray(role.includes) ? role.includes : [];
|
|
107
177
|
for (const name of names) {
|
|
108
178
|
const list = typeof name === "string" && Object.hasOwn(table.includes, name) ? table.includes[name] : void 0;
|
|
109
179
|
for (const grant of list ?? []) {
|
|
110
180
|
if (grant.effect === "deny" || !removed.has(grant.permission)) out.push(grant);
|
|
111
|
-
if (grant.effect === "allow")
|
|
181
|
+
if (grant.effect === "allow") {
|
|
182
|
+
included.add(grant.permission);
|
|
183
|
+
if (!removed.has(grant.permission) && typeof name === "string") reached.push({
|
|
184
|
+
key: grant.permission,
|
|
185
|
+
reach: includeReach(table, name, grant.permission)
|
|
186
|
+
});
|
|
187
|
+
}
|
|
112
188
|
}
|
|
113
189
|
}
|
|
114
190
|
for (const { key, level } of allows) {
|
|
115
191
|
if (removed.has(key) || included.has(key)) continue;
|
|
116
192
|
const row = Object.hasOwn(table.permissions, key) ? table.permissions[key] : void 0;
|
|
117
193
|
const grants = typeof level === "string" ? row?.levels?.[level] : row?.all;
|
|
118
|
-
|
|
194
|
+
if (grants !== void 0 && grants.length > 0) {
|
|
195
|
+
out.push(...grants);
|
|
196
|
+
reached.push({
|
|
197
|
+
key,
|
|
198
|
+
reach: entryReach(table, key, typeof level === "string" ? level : void 0)
|
|
199
|
+
});
|
|
200
|
+
}
|
|
119
201
|
}
|
|
120
|
-
return
|
|
202
|
+
return {
|
|
203
|
+
grants: out.map((grant) => renamed(grant, role.name)),
|
|
204
|
+
allows: reached
|
|
205
|
+
};
|
|
121
206
|
}
|
|
122
207
|
function isList(value) {
|
|
123
208
|
return Array.isArray(value);
|
|
@@ -158,39 +243,60 @@ function buildLocalSnapshot(manifest, data, at) {
|
|
|
158
243
|
const declared = new Set(manifest.roles);
|
|
159
244
|
const globalRoles = new Set(input?.roles ?? []);
|
|
160
245
|
const grants = [];
|
|
161
|
-
const
|
|
162
|
-
|
|
246
|
+
const held = [];
|
|
247
|
+
const attach = (grant, membership, reach) => {
|
|
248
|
+
const bound = bindGrant(membership === void 0 ? grant : {
|
|
163
249
|
...grant,
|
|
164
250
|
membership
|
|
165
|
-
}, subject)
|
|
251
|
+
}, subject);
|
|
252
|
+
grants.push(bound);
|
|
253
|
+
if (membership === void 0 || tenantOf$1(membership, scopes) === tenant && !isMembershipExpired(membership, now)) held.push({
|
|
254
|
+
grant: bound,
|
|
255
|
+
reach
|
|
256
|
+
});
|
|
166
257
|
};
|
|
167
|
-
|
|
258
|
+
const grantReach = manifest.assignable?.grants;
|
|
259
|
+
for (const [index, grant] of manifest.grants.entries()) {
|
|
260
|
+
const reach = grantReach !== void 0 && Object.hasOwn(grantReach, String(index)) ? grantReach[String(index)] : void 0;
|
|
168
261
|
const roleItems = flattenGrantee(grant.to).filter((item) => item.kind === "role");
|
|
169
262
|
if (roleItems.length > 0 && principal === null) continue;
|
|
170
263
|
if (!roleItems.every((item) => item.scope !== "global" || declared.has(item.role) && globalRoles.has(item.role))) continue;
|
|
171
264
|
const scoped = roleItems.filter((item) => item.scope !== "global");
|
|
172
265
|
if (scoped.length === 0) {
|
|
173
|
-
attach(grant);
|
|
266
|
+
attach(grant, void 0, reach);
|
|
174
267
|
continue;
|
|
175
268
|
}
|
|
176
|
-
for (const membership of memberships) if (scoped.every((item) => declared.has(item.role) && membership.roles.includes(item.role) && (typeof item.scope === "string" ? membership.scope === item.scope : membership.on !== void 0))) attach(grant, membership);
|
|
269
|
+
for (const membership of memberships) if (scoped.every((item) => declared.has(item.role) && membership.roles.includes(item.role) && (typeof item.scope === "string" ? membership.scope === item.scope : membership.on !== void 0))) attach(grant, membership, reach);
|
|
177
270
|
}
|
|
178
271
|
const formed = (data.customRoles ?? []).filter((role) => role !== null && typeof role === "object" && typeof role.name === "string" && !declared.has(role.name));
|
|
179
272
|
const sharedNames = new Set(formed.filter((role) => role.shared === true).map((role) => role.name));
|
|
180
273
|
const custom = formed.filter((role) => role.shared === true || role.scope === "global" || !sharedNames.has(role.name));
|
|
274
|
+
const tenantCustom = [];
|
|
275
|
+
const tenantRoles = /* @__PURE__ */ new Set();
|
|
181
276
|
for (const role of custom) {
|
|
182
277
|
const scope = customScope(role, scopes);
|
|
183
278
|
const table = scope !== void 0 && Object.hasOwn(manifest.custom, scope) ? manifest.custom[scope] : void 0;
|
|
184
279
|
if (scope === void 0 || table === void 0) continue;
|
|
185
|
-
const resolved = customGrants(table, role);
|
|
280
|
+
const { grants: resolved, allows } = customGrants(table, role);
|
|
281
|
+
const reachOf = (permission) => [...new Set(allows.filter((allow) => allow.key === permission).flatMap((allow) => allow.reach ?? []))];
|
|
186
282
|
if (scope === "global") {
|
|
187
|
-
if (role.tenant === void 0 && globalRoles.has(role.name)) for (const grant of resolved) attach(grant);
|
|
283
|
+
if (role.tenant === void 0 && globalRoles.has(role.name)) for (const grant of resolved) attach(grant, void 0, reachOf(grant.permission));
|
|
188
284
|
continue;
|
|
189
285
|
}
|
|
286
|
+
if (tenant !== void 0 && (role.shared === true ? role.tenant === void 0 : role.tenant === tenant) && !tenantRoles.has(role.name)) {
|
|
287
|
+
tenantRoles.add(role.name);
|
|
288
|
+
tenantCustom.push({
|
|
289
|
+
name: role.name,
|
|
290
|
+
scope,
|
|
291
|
+
shared: role.shared === true,
|
|
292
|
+
allows
|
|
293
|
+
});
|
|
294
|
+
}
|
|
190
295
|
const id = role.team ?? role.id;
|
|
191
|
-
for (const membership of memberships) if (membership.scope === scope && (role.shared === true ? role.tenant === void 0 && id === void 0 && tenantOf$1(membership, scopes) !== void 0 : typeof role.tenant === "string" && tenantOf$1(membership, scopes) === role.tenant) && (id === void 0 || membership.id === id) && membership.roles.includes(role.name)) for (const grant of resolved) attach(grant, membership);
|
|
296
|
+
for (const membership of memberships) if (membership.scope === scope && (role.shared === true ? role.tenant === void 0 && id === void 0 && tenantOf$1(membership, scopes) !== void 0 : typeof role.tenant === "string" && tenantOf$1(membership, scopes) === role.tenant) && (id === void 0 || membership.id === id) && membership.roles.includes(role.name)) for (const grant of resolved) attach(grant, membership, reachOf(grant.permission));
|
|
192
297
|
}
|
|
193
298
|
const roles = subject.principal === null ? [] : heldRoleNames(subject, tenant, scopes, { rank: manifest.rank ?? [] }, now);
|
|
299
|
+
const rules = manifest.assignable;
|
|
194
300
|
return freezeDeep(compact({
|
|
195
301
|
v: 1,
|
|
196
302
|
issuedAt: rfc3339(now),
|
|
@@ -201,13 +307,21 @@ function buildLocalSnapshot(manifest, data, at) {
|
|
|
201
307
|
roles,
|
|
202
308
|
grants,
|
|
203
309
|
tenants: tenant === void 0 ? [] : [tenant],
|
|
310
|
+
assignable: tenant === void 0 || rules === void 0 ? void 0 : [localAssignableFor({
|
|
311
|
+
rules,
|
|
312
|
+
custom: manifest.custom,
|
|
313
|
+
tenant,
|
|
314
|
+
heldNames: roles,
|
|
315
|
+
held,
|
|
316
|
+
customRoles: tenantCustom
|
|
317
|
+
})],
|
|
204
318
|
scopes: manifest.scopes,
|
|
205
319
|
vocabulary: manifest.vocabulary
|
|
206
320
|
}));
|
|
207
321
|
}
|
|
208
322
|
/**
|
|
209
|
-
* A snapshot source over the device's own membership rows (SQLite, a
|
|
210
|
-
*
|
|
323
|
+
* A snapshot source over the device's own membership rows (SQLite, a PowerSync
|
|
324
|
+
* or Electric replica): offline, the UI guards answer from them.
|
|
211
325
|
*/
|
|
212
326
|
function localSnapshot(options) {
|
|
213
327
|
return compact({
|
|
@@ -223,7 +337,10 @@ function isColumns(roles) {
|
|
|
223
337
|
function quoted(name) {
|
|
224
338
|
return `"${name.replaceAll("\"", "\"\"")}"`;
|
|
225
339
|
}
|
|
226
|
-
/**
|
|
340
|
+
/**
|
|
341
|
+
* The synced tables `rows` names, each read whole: the subject streams sync
|
|
342
|
+
* only the user's own rows.
|
|
343
|
+
*/
|
|
227
344
|
function rowTables(rows) {
|
|
228
345
|
const tables = /* @__PURE__ */ new Set();
|
|
229
346
|
const column = (item) => {
|
|
@@ -258,7 +375,10 @@ function isSet(row, column) {
|
|
|
258
375
|
function rowsOf(tables, table) {
|
|
259
376
|
return (tables[table] ?? []).filter(isRecord);
|
|
260
377
|
}
|
|
261
|
-
/**
|
|
378
|
+
/**
|
|
379
|
+
* The value a column holds, read through its referenced table or map;
|
|
380
|
+
* `undefined` for none.
|
|
381
|
+
*/
|
|
262
382
|
function columnValue(row, column, tables) {
|
|
263
383
|
const raw = text(row[column.column]);
|
|
264
384
|
if (raw === void 0) return;
|
|
@@ -335,7 +455,10 @@ function customRoleOf({ key, grants, includes }) {
|
|
|
335
455
|
id: key.id
|
|
336
456
|
});
|
|
337
457
|
}
|
|
338
|
-
/**
|
|
458
|
+
/**
|
|
459
|
+
* Custom roles from the custom-role rows: a tenant role, a shared role (no
|
|
460
|
+
* tenant) or a global role.
|
|
461
|
+
*/
|
|
339
462
|
function customRolesOf(permissions, includes) {
|
|
340
463
|
const roles = /* @__PURE__ */ new Map();
|
|
341
464
|
const entry = (key) => {
|
|
@@ -371,7 +494,10 @@ function customRolesOf(permissions, includes) {
|
|
|
371
494
|
}
|
|
372
495
|
return [...roles.values()].map(customRoleOf);
|
|
373
496
|
}
|
|
374
|
-
/**
|
|
497
|
+
/**
|
|
498
|
+
* The user's memberships, global roles and custom roles from the rows of the
|
|
499
|
+
* tables `rows` names.
|
|
500
|
+
*/
|
|
375
501
|
function readRows(rows, tables, principal) {
|
|
376
502
|
const { id: user, tenant, attributes } = principal;
|
|
377
503
|
const memberships = rows.memberships.flatMap((source) => membershipsOf(source, tables, user));
|
|
@@ -412,11 +538,10 @@ function planOf(options) {
|
|
|
412
538
|
* A `localSnapshot` source over a PowerSync database: `get` runs every query
|
|
413
539
|
* with `db.getAll`, and a `db.watch` per query reports changes. Without
|
|
414
540
|
* `queries` and `read`, it reads the tables `manifest.rows` names: the
|
|
415
|
-
* memberships of every source with null roles dropped, the global roles and
|
|
416
|
-
*
|
|
417
|
-
*
|
|
418
|
-
*
|
|
419
|
-
* `@powersync/*`.
|
|
541
|
+
* memberships of every source with null roles dropped, the global roles and the
|
|
542
|
+
* custom roles with their levels. A watch result with unchanged content
|
|
543
|
+
* re-renders nothing (`connectSource`). The source takes the database as an
|
|
544
|
+
* argument; `permdock/react-native` never imports `@powersync/*`.
|
|
420
545
|
*/
|
|
421
546
|
function powerSyncSource(db, options) {
|
|
422
547
|
const plan = planOf(options);
|
|
@@ -525,7 +650,10 @@ function guardStorage(storage) {
|
|
|
525
650
|
fail
|
|
526
651
|
};
|
|
527
652
|
}
|
|
528
|
-
/**
|
|
653
|
+
/**
|
|
654
|
+
* `undefined` when the storage answers asynchronously; any failure reads as
|
|
655
|
+
* empty.
|
|
656
|
+
*/
|
|
529
657
|
function readStoredSync(storage, subjectId, signed) {
|
|
530
658
|
if (subjectId === null) return NOTHING;
|
|
531
659
|
const raw = storage.read(SNAPSHOT_KEY);
|
|
@@ -562,8 +690,8 @@ function contentKey(snapshot) {
|
|
|
562
690
|
});
|
|
563
691
|
}
|
|
564
692
|
/**
|
|
565
|
-
* Whether a source read changes nothing: same content as the snapshot the
|
|
566
|
-
*
|
|
693
|
+
* Whether a source read changes nothing: same content as the snapshot the store
|
|
694
|
+
* holds, and the store already settled on it.
|
|
567
695
|
*/
|
|
568
696
|
function unchanged(store, next) {
|
|
569
697
|
if (typeof next === "string" || store.get().status() === "stale") return false;
|
|
@@ -575,9 +703,9 @@ function unchanged(store, next) {
|
|
|
575
703
|
}
|
|
576
704
|
/**
|
|
577
705
|
* Hydrates `store` from `source` now, on every change it reports and on each
|
|
578
|
-
* return to the foreground. Only the latest read applies; a read with
|
|
579
|
-
*
|
|
580
|
-
*
|
|
706
|
+
* return to the foreground. Only the latest read applies; a read with unchanged
|
|
707
|
+
* content re-renders nothing, and a failed read keeps the current snapshot.
|
|
708
|
+
* Returns the unsubscribe.
|
|
581
709
|
*/
|
|
582
710
|
function connectSource(store, source, subscribeForeground) {
|
|
583
711
|
let active = true;
|
|
@@ -585,8 +713,8 @@ function connectSource(store, source, subscribeForeground) {
|
|
|
585
713
|
const pull = () => {
|
|
586
714
|
seq += 1;
|
|
587
715
|
const mine = seq;
|
|
588
|
-
Promise.resolve().then(() => source.get()).then((
|
|
589
|
-
if (active && mine === seq && !unchanged(store,
|
|
716
|
+
Promise.resolve().then(() => source.get()).then((snapshot) => {
|
|
717
|
+
if (active && mine === seq && !unchanged(store, snapshot)) store.replace(snapshot);
|
|
590
718
|
}, () => void 0);
|
|
591
719
|
};
|
|
592
720
|
pull();
|
|
@@ -642,7 +770,8 @@ function nativeStore(options) {
|
|
|
642
770
|
passCache: true,
|
|
643
771
|
onSnapshot: options.onSnapshot,
|
|
644
772
|
onClear: options.onClear,
|
|
645
|
-
approvalInterval: options.approvalInterval
|
|
773
|
+
approvalInterval: options.approvalInterval,
|
|
774
|
+
refreshOn: options.refreshOn
|
|
646
775
|
}), snapshot, {
|
|
647
776
|
server: false,
|
|
648
777
|
stale: revalidates && (fromStorage !== void 0 || waiting),
|
|
@@ -696,6 +825,7 @@ function PermDockProvider(props) {
|
|
|
696
825
|
onSnapshot: live.onSnapshot,
|
|
697
826
|
onClear: live.onClear,
|
|
698
827
|
approvalInterval: props.approvalInterval,
|
|
828
|
+
refreshOn: props.refreshOn,
|
|
699
829
|
previous: shown.current ?? void 0
|
|
700
830
|
})), [
|
|
701
831
|
props.storage,
|
|
@@ -737,9 +867,9 @@ function PermDockProvider(props) {
|
|
|
737
867
|
const refresh = () => {
|
|
738
868
|
if (inFlight || !online) return;
|
|
739
869
|
inFlight = true;
|
|
740
|
-
store.get().refresh().
|
|
870
|
+
store.get().refresh().finally(() => {
|
|
741
871
|
inFlight = false;
|
|
742
|
-
});
|
|
872
|
+
}).catch(() => void 0);
|
|
743
873
|
};
|
|
744
874
|
const startTimer = () => {
|
|
745
875
|
if (typeof mode === "number" && timer === void 0) timer = setInterval(refresh, mode * 1e3);
|
|
@@ -793,7 +923,10 @@ function PermDockProvider(props) {
|
|
|
793
923
|
}
|
|
794
924
|
//#endregion
|
|
795
925
|
//#region src/react-native/storage-adapters.ts
|
|
796
|
-
/**
|
|
926
|
+
/**
|
|
927
|
+
* SecureStore warns above 2048 bytes and may refuse larger values on some
|
|
928
|
+
* devices.
|
|
929
|
+
*/
|
|
797
930
|
const SECURE_STORE_CHUNK_BYTES = 2048;
|
|
798
931
|
const INDEX_PREFIX = "permdock-chunks:";
|
|
799
932
|
function utf8Length(char) {
|
|
@@ -828,9 +961,9 @@ function chunkKey(key, index) {
|
|
|
828
961
|
return `${key}.${index}`;
|
|
829
962
|
}
|
|
830
963
|
/**
|
|
831
|
-
* A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks
|
|
832
|
-
*
|
|
833
|
-
*
|
|
964
|
+
* A `SnapshotStorage` over `expo-secure-store`. Values are split into chunks of
|
|
965
|
+
* at most 2048 bytes under `<key>.<n>`; `<key>` holds the chunk count and is
|
|
966
|
+
* written last, so an interrupted write reads as absent.
|
|
834
967
|
*/
|
|
835
968
|
function secureStoreStorage(store, options) {
|
|
836
969
|
const removeChunks = async (key, from, to) => {
|
|
@@ -863,7 +996,10 @@ function secureStoreStorage(store, options) {
|
|
|
863
996
|
}
|
|
864
997
|
};
|
|
865
998
|
}
|
|
866
|
-
/**
|
|
999
|
+
/**
|
|
1000
|
+
* A synchronous `SnapshotStorage` over a `react-native-mmkv` instance: the
|
|
1001
|
+
* first frame already has the snapshot.
|
|
1002
|
+
*/
|
|
867
1003
|
function mmkvStorage(mmkv) {
|
|
868
1004
|
return {
|
|
869
1005
|
getItem: (key) => mmkv.getString(key) ?? null,
|
|
@@ -879,8 +1015,8 @@ function mmkvStorage(mmkv) {
|
|
|
879
1015
|
//#endregion
|
|
880
1016
|
//#region src/react-native/subscriptions.ts
|
|
881
1017
|
/**
|
|
882
|
-
* `subscribeForeground` over `AppState`: `active` returns to the foreground
|
|
883
|
-
*
|
|
1018
|
+
* `subscribeForeground` over `AppState`: `active` returns to the foreground and
|
|
1019
|
+
* `background` leaves it. iOS `inactive` (a system sheet over the app) is
|
|
884
1020
|
* neither.
|
|
885
1021
|
*/
|
|
886
1022
|
function appStateForeground(appState) {
|
|
@@ -894,11 +1030,14 @@ function appStateForeground(appState) {
|
|
|
894
1030
|
};
|
|
895
1031
|
};
|
|
896
1032
|
}
|
|
897
|
-
/**
|
|
1033
|
+
/**
|
|
1034
|
+
* `subscribeOnline` over NetInfo. An unknown (`null`) connection counts as
|
|
1035
|
+
* online.
|
|
1036
|
+
*/
|
|
898
1037
|
function netInfoOnline(netInfo) {
|
|
899
1038
|
return (listener) => netInfo.addEventListener((state) => {
|
|
900
1039
|
listener(state.isConnected !== false && state.isInternetReachable !== false);
|
|
901
1040
|
});
|
|
902
1041
|
}
|
|
903
1042
|
//#endregion
|
|
904
|
-
export { PermDockProvider, Protected, appStateForeground, approvalHeaders, buildLocalSnapshot, connectSource, describe, localSnapshot, memorySnapshotStorage, mmkvStorage, nativeStore, netInfoOnline, parseLocalSnapshotManifest, powerSyncSource, requiredPlans, secureStoreStorage, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissionGuard, usePermissions, useRoles, useSnapshotReady, useSubject, useTenant };
|
|
1043
|
+
export { PermDockProvider, Protected, appStateForeground, approvalHeaders, buildLocalSnapshot, connectSource, describe, eventSourceRefresh, localSnapshot, memorySnapshotStorage, mmkvStorage, nativeStore, netInfoOnline, parseLocalSnapshotManifest, powerSyncSource, requiredPlans, secureStoreStorage, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissionGuard, usePermissions, useProtectedAction, useRoles, useSnapshotReady, useSubject, useTenant };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as freezeDeep } from "./freeze-
|
|
2
|
-
import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-
|
|
1
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
2
|
+
import { o as readPath, s as splitPath, t as assertSafeKey } from "./paths-CUvURzHp.js";
|
|
3
3
|
//#region src/conditions/ast.ts
|
|
4
4
|
function parentHop(parent) {
|
|
5
5
|
return typeof parent === "string" ? { field: parent } : parent;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { r as ownGet } from "./paths-
|
|
3
|
-
import { n as relationId } from "./relations-
|
|
2
|
+
import { r as ownGet } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { n as relationId } from "./relations-BxvRvDHK.js";
|
|
4
4
|
//#region src/core/relation-walk.ts
|
|
5
5
|
/** Whether the holder's period covers `now`. */
|
|
6
6
|
function activeNow(holder, now) {
|
|
@@ -53,7 +53,10 @@ function restrictedAbove(condition, row, reader) {
|
|
|
53
53
|
if (new Set(ids).size !== ids.length || chain.truncated === true || chain.ancestors.length > above.depth - 1) return "relation-depth";
|
|
54
54
|
return false;
|
|
55
55
|
}
|
|
56
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* The instances a graph relation reads: the start, then ancestors until a
|
|
58
|
+
* restricted one or `depth`.
|
|
59
|
+
*/
|
|
57
60
|
function relationWalk(condition, row, reader) {
|
|
58
61
|
if (!isRecord(row)) return;
|
|
59
62
|
const first = relationId(ownGet(row, condition.field));
|
|
@@ -93,10 +96,10 @@ function relationWalk(condition, row, reader) {
|
|
|
93
96
|
};
|
|
94
97
|
}
|
|
95
98
|
/**
|
|
96
|
-
* Whether the subject holds the relation on the row's instance or an
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
99
|
+
* Whether the subject holds the relation on the row's instance or an ancestor
|
|
100
|
+
* within `depth`. A cycle is `relation-depth`; so is a chain that goes on past
|
|
101
|
+
* `depth` with no holder below it. Any read the instance could not answer is
|
|
102
|
+
* `relation-unavailable` unless a holder was found elsewhere.
|
|
100
103
|
*/
|
|
101
104
|
function resolveRelated(condition, row, subject, now, reader, permitted) {
|
|
102
105
|
if (condition.permission !== void 0) return resolveInherited(condition, condition.permission, row, reader, permitted);
|
|
@@ -148,8 +151,8 @@ function groupKey(group) {
|
|
|
148
151
|
}
|
|
149
152
|
/**
|
|
150
153
|
* Whether the principal holds `at.relation` on one instance, directly or
|
|
151
|
-
* through a group whose members hold it. Groups of `at`'s own resource nest
|
|
152
|
-
*
|
|
154
|
+
* through a group whose members hold it. Groups of `at`'s own resource nest at
|
|
155
|
+
* most `budget` deep; a group of another resource gets a fresh budget
|
|
153
156
|
* (declarations rule out cycles across resources). A group met twice on one
|
|
154
157
|
* path, or one past the budget, is `relation-depth`. `explored` holds the
|
|
155
158
|
* budget each group was walked with across the whole walk: a group already
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { i as idText } from "./expiry-
|
|
3
|
-
import { n as isThenable } from "./thenable-
|
|
4
|
-
import { a as expandRelation } from "./resource-relations-
|
|
2
|
+
import { i as idText } from "./expiry-6XByK0dm.js";
|
|
3
|
+
import { n as isThenable } from "./thenable-BNSM1U2R.js";
|
|
4
|
+
import { a as expandRelation } from "./resource-relations-8-pCScBO.js";
|
|
5
5
|
//#region src/core/relations.ts
|
|
6
6
|
function isInstant(value) {
|
|
7
7
|
return value === void 0 || typeof value === "number" && Number.isFinite(value);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as assertAppData } from "./app-data-
|
|
2
|
-
import { n as wrapPermDock } from "./wrap-
|
|
3
|
-
import { t as buildInstance } from "./build-instance-
|
|
1
|
+
import { t as assertAppData } from "./app-data-UNNm07jV.js";
|
|
2
|
+
import { n as wrapPermDock } from "./wrap-B2wziJI_.js";
|
|
3
|
+
import { t as buildInstance } from "./build-instance-CNWaYJyr.js";
|
|
4
4
|
//#region src/core/request-context.ts
|
|
5
5
|
/**
|
|
6
|
-
* Errors an adapter raises around one instance (a `context` hook that threw,
|
|
7
|
-
*
|
|
6
|
+
* Errors an adapter raises around one instance (a `context` hook that threw, an
|
|
7
|
+
* `onDenied` that failed), fed to the instance's `on('error')` handlers and
|
|
8
8
|
* replayed to later ones, as core replays its own.
|
|
9
9
|
*/
|
|
10
10
|
function deliver(handler, error) {
|
|
@@ -33,9 +33,9 @@ function errorChannel(queued) {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* `buildInstance` with an error channel: the instance's `on('error')`
|
|
37
|
-
*
|
|
38
|
-
*
|
|
36
|
+
* `buildInstance` with an error channel: the instance's `on('error')` replays
|
|
37
|
+
* `errors` raised while resolving the request, and `report` adds more. Kept
|
|
38
|
+
* beside `errorChannel`, so adapters without one do not bundle it.
|
|
39
39
|
*/
|
|
40
40
|
async function buildReportingInstance(input) {
|
|
41
41
|
const channel = errorChannel(input.errors);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
//#region src/approvals/request-schema.ts
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* An RFC 3339 instant as `Temporal.Instant` prints it; pg_jsonschema asserts no
|
|
4
|
+
* `format`.
|
|
5
|
+
*/
|
|
3
6
|
const INSTANT = String.raw`^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$`;
|
|
4
7
|
const STRINGS = {
|
|
5
8
|
type: "array",
|