permdock 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/checks-CGkP3Z7A.js +40 -0
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/connector-schema-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/prompt-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/sources-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/text-diff-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Rt as Instant,
|
|
2
|
-
import { l as ReplayStore } from "./types-
|
|
1
|
+
import { Rt as Instant, ar as JsonWebKeyLike } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { l as ReplayStore } from "./types-DjuMBNF9.js";
|
|
3
3
|
//#region src/server/standard-webhooks.d.ts
|
|
4
4
|
/** The three Standard Webhooks headers a delivery carries. */
|
|
5
5
|
type WebhookHeaders = {
|
|
@@ -34,7 +34,7 @@ type WebhookMessage = {
|
|
|
34
34
|
readonly now?: Instant;
|
|
35
35
|
};
|
|
36
36
|
type WebhookSigner = {
|
|
37
|
-
sign(message: WebhookMessage)
|
|
37
|
+
sign: (message: WebhookMessage) => Promise<WebhookHeaders>;
|
|
38
38
|
};
|
|
39
39
|
/** An Ed25519 public JWK set for `v1a`, or the URL that serves one. */
|
|
40
40
|
type WebhookJwks = {
|
|
@@ -70,12 +70,12 @@ type VerifiedWebhookMessage = {
|
|
|
70
70
|
};
|
|
71
71
|
type WebhookVerifier = {
|
|
72
72
|
/** Never throws; claims the `webhook-id` only after a signature verifies. */
|
|
73
|
-
verify(input: WebhookInput)
|
|
73
|
+
verify: (input: WebhookInput) => Promise<VerifiedWebhookMessage>;
|
|
74
74
|
};
|
|
75
75
|
/**
|
|
76
|
-
* Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_`
|
|
77
|
-
*
|
|
78
|
-
*
|
|
76
|
+
* Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_` secret,
|
|
77
|
+
* `v1a` Ed25519 with a private JWK. Throws on an invalid key or id, because
|
|
78
|
+
* both come from the sender's own configuration.
|
|
79
79
|
*/
|
|
80
80
|
declare function webhookSigner(options: WebhookSignerOptions): WebhookSigner;
|
|
81
81
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { m as rfc3339, p as nowSeconds } from "./time-
|
|
2
|
-
import { n as readBodyText } from "./body-text-
|
|
1
|
+
import { m as rfc3339, p as nowSeconds } from "./time-nR1JesoH.js";
|
|
2
|
+
import { n as readBodyText } from "./body-text-DQhcmqdY.js";
|
|
3
3
|
//#region src/server/standard-webhooks.ts
|
|
4
4
|
const DEFAULT_TOLERANCE = 300;
|
|
5
5
|
const JWKS_TTL_SECONDS = 300;
|
|
@@ -41,9 +41,9 @@ function validId(id) {
|
|
|
41
41
|
return id.length > 0 && id.length <= 256 && !/\s/u.test(id);
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_`
|
|
45
|
-
*
|
|
46
|
-
*
|
|
44
|
+
* Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_` secret,
|
|
45
|
+
* `v1a` Ed25519 with a private JWK. Throws on an invalid key or id, because
|
|
46
|
+
* both come from the sender's own configuration.
|
|
47
47
|
*/
|
|
48
48
|
function webhookSigner(options) {
|
|
49
49
|
if (options.keys.length === 0) throw new TypeError("PermDock: webhookSigner() needs at least one key");
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { i as flattenApprovers } from "./approvers-
|
|
4
|
-
import { a as durationOf, i as dateAt } from "./time-
|
|
5
|
-
import {
|
|
6
|
-
import { n as matchGrantee } from "./grantee-match-
|
|
7
|
-
import { a as escalationOpenAt, i as approverRelationKey, o as stageEscalationOpenAt, r as approvalQuorum, s as ApprovalError } from "./types-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { i as flattenApprovers } from "./approvers-B4r0N_Uz.js";
|
|
4
|
+
import { a as durationOf, i as dateAt } from "./time-nR1JesoH.js";
|
|
5
|
+
import { c as rootMembershipId } from "./scopes-0Up_UA2t.js";
|
|
6
|
+
import { n as matchGrantee } from "./grantee-match-7RZZvoT_.js";
|
|
7
|
+
import { a as escalationOpenAt, i as approverRelationKey, o as stageEscalationOpenAt, r as approvalQuorum, s as ApprovalError } from "./types-CcUXciSj.js";
|
|
8
8
|
//#region src/approvals/page.ts
|
|
9
9
|
const DEFAULT_PAGE_SIZE = 50;
|
|
10
10
|
const MAX_PAGE_SIZE = 200;
|
|
@@ -26,7 +26,10 @@ function compare(a, b) {
|
|
|
26
26
|
function encodeApprovalCursor(request) {
|
|
27
27
|
return JSON.stringify(positionOf(request));
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* The `(createdAt, token)` position a `next` cursor names, or `null` for one
|
|
31
|
+
* that does not parse.
|
|
32
|
+
*/
|
|
30
33
|
function decodeApprovalCursor(cursor) {
|
|
31
34
|
try {
|
|
32
35
|
const parsed = JSON.parse(cursor);
|
|
@@ -38,8 +41,8 @@ function decodeApprovalCursor(cursor) {
|
|
|
38
41
|
/**
|
|
39
42
|
* Pages already-filtered requests in `(createdAt, token)` order, as the
|
|
40
43
|
* built-in stores do: `limit` within 1 to 200 (50 when absent), `cursor` from
|
|
41
|
-
* the previous page's `next`, and no items for a cursor that does not parse.
|
|
42
|
-
*
|
|
44
|
+
* the previous page's `next`, and no items for a cursor that does not parse. A
|
|
45
|
+
* custom `ApprovalStore` that filters in memory returns it from `list`.
|
|
43
46
|
*/
|
|
44
47
|
function pageApprovals(matching, query) {
|
|
45
48
|
const after = query.cursor === void 0 ? void 0 : decodeApprovalCursor(query.cursor);
|
|
@@ -53,7 +56,10 @@ function pageApprovals(matching, query) {
|
|
|
53
56
|
next: encodeApprovalCursor(last)
|
|
54
57
|
} : { items };
|
|
55
58
|
}
|
|
56
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Every matching request of `store`, following `next` until the last page (at
|
|
61
|
+
* most 1000 pages of 200).
|
|
62
|
+
*/
|
|
57
63
|
function listAllApprovals(store, filter) {
|
|
58
64
|
const collect = async (cursor, pages, items) => {
|
|
59
65
|
const page = await store.list(cursor === void 0 ? {
|
|
@@ -70,10 +76,13 @@ function listAllApprovals(store, filter) {
|
|
|
70
76
|
return collect(void 0, 0, []);
|
|
71
77
|
}
|
|
72
78
|
//#endregion
|
|
73
|
-
//#region src/approvals/
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
//#region src/approvals/tenancy.ts
|
|
80
|
+
/**
|
|
81
|
+
* The tenants a subject acts in for approvals: `principal.tenant` and the
|
|
82
|
+
* instance of every membership at the first scope. A membership at a nested
|
|
83
|
+
* scope (a team, or one with `within`) names no tenant, even when its parent is
|
|
84
|
+
* the request's tenant.
|
|
85
|
+
*/
|
|
77
86
|
function membershipTenants(subject) {
|
|
78
87
|
const principal = subject.principal;
|
|
79
88
|
if (principal === null) return [];
|
|
@@ -88,6 +97,11 @@ function membershipTenants(subject) {
|
|
|
88
97
|
function belongsToTenant(subject, tenant) {
|
|
89
98
|
return membershipTenants(subject).includes(tenant);
|
|
90
99
|
}
|
|
100
|
+
//#endregion
|
|
101
|
+
//#region src/approvals/store.ts
|
|
102
|
+
function tenantOf(request) {
|
|
103
|
+
return request.subject.principal?.tenant;
|
|
104
|
+
}
|
|
91
105
|
function holdsRole(subject, role, tenant) {
|
|
92
106
|
const principal = subject.principal;
|
|
93
107
|
if (principal === null) return false;
|
|
@@ -164,14 +178,14 @@ function vouchedRule(verdict) {
|
|
|
164
178
|
return typeof verdict.vouched === "string" && verdict.vouched !== "" ? verdict.vouched : void 0;
|
|
165
179
|
}
|
|
166
180
|
/**
|
|
167
|
-
* Refuses `by` as an approver of `request`, or returns the index of the
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
181
|
+
* Refuses `by` as an approver of `request`, or returns the index of the stage
|
|
182
|
+
* the approval counts for (`undefined` without `stages`). Eligibility is
|
|
183
|
+
* `approvers.by` or, under `stages`, the first incomplete stage (`sequential`)
|
|
184
|
+
* or any incomplete stage (`all`); `approvers.escalation.to` is eligible too
|
|
185
|
+
* once the request has waited `escalation.after`. A principal who already
|
|
186
|
+
* approved is refused, so one person never completes two stages. `relations`
|
|
187
|
+
* are the relation approvers `by` holds on the request's resource (see
|
|
188
|
+
* `ApprovalVerdict.relations`).
|
|
175
189
|
*/
|
|
176
190
|
function assertApprover(request, by, requireDistinctApprover, at, relations = [], permissions = []) {
|
|
177
191
|
const now = dateAt(at);
|
|
@@ -211,12 +225,12 @@ function isSystemSubject(by) {
|
|
|
211
225
|
return by.actor?.kind === "system";
|
|
212
226
|
}
|
|
213
227
|
/**
|
|
214
|
-
* The request after `verdict`, for a store to persist: a rejection resolves
|
|
215
|
-
*
|
|
216
|
-
* `approvers.quorum` (default 1). Throws an `ApprovalError` when the request
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
228
|
+
* The request after `verdict`, for a store to persist: a rejection resolves it;
|
|
229
|
+
* an approval is appended to `approvals` and resolves it once there are
|
|
230
|
+
* `approvers.quorum` (default 1). Throws an `ApprovalError` when the request is
|
|
231
|
+
* not pending, has expired or `verdict.by` may not approve it. Stores should
|
|
232
|
+
* write the result only when the stored row is still pending with the same
|
|
233
|
+
* number of approvals, so two approvers racing both count.
|
|
220
234
|
*/
|
|
221
235
|
function applyApprovalVerdict(request, verdict, at) {
|
|
222
236
|
const now = dateAt(at);
|
|
@@ -355,4 +369,4 @@ function memoryApprovalStore(options = {}) {
|
|
|
355
369
|
};
|
|
356
370
|
}
|
|
357
371
|
//#endregion
|
|
358
|
-
export {
|
|
372
|
+
export { belongsToTenant as a, decodeApprovalCursor as c, pageApprovals as d, memoryApprovalStore as i, encodeApprovalCursor as l, assertApprover as n, membershipTenants as o, matchesApprovers as r, approvalPageSize as s, applyApprovalVerdict as t, listAllApprovals as u };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { g as secondsOf } from "./time-
|
|
3
|
-
import { c as rowIdOf } from "./delegation-
|
|
4
|
-
import { c as nowSeconds } from "./tenancy-
|
|
5
|
-
import { n as payloadDigest } from "./token-
|
|
6
|
-
import { n as parseSnapshot } from "./snapshot-
|
|
7
|
-
import {
|
|
8
|
-
import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-
|
|
2
|
+
import { g as secondsOf } from "./time-nR1JesoH.js";
|
|
3
|
+
import { c as rowIdOf } from "./delegation-CDB6_keF.js";
|
|
4
|
+
import { c as nowSeconds } from "./tenancy-5d1zVBvK.js";
|
|
5
|
+
import { n as payloadDigest } from "./token-DC9EQiet.js";
|
|
6
|
+
import { n as parseSnapshot } from "./snapshot-CXlzi69u.js";
|
|
7
|
+
import { c as snapshotClaim } from "./where-scope-DlCdCM_8.js";
|
|
8
|
+
import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-DCakWRsr.js";
|
|
9
9
|
import { t as timeoutSignal } from "./timeout-D51niuQP.js";
|
|
10
10
|
//#region src/client/source.ts
|
|
11
11
|
/** A compact JWS: three non-empty dot-separated parts. */
|
|
@@ -131,7 +131,10 @@ const NO_ENDPOINT = {
|
|
|
131
131
|
}],
|
|
132
132
|
alternatives: []
|
|
133
133
|
};
|
|
134
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* The row's id under the snapshot's id field, or `undefined` for a row without
|
|
136
|
+
* one.
|
|
137
|
+
*/
|
|
135
138
|
function rowId(snapshot, permission, data) {
|
|
136
139
|
const id = rowIdOf(data, snapshot.ids?.[permission.resource]);
|
|
137
140
|
return id === "*" ? void 0 : id;
|
|
@@ -140,7 +143,10 @@ function cacheKey(snapshot, permission, data) {
|
|
|
140
143
|
if (data === void 0) return `${permission.key}:*`;
|
|
141
144
|
return `${permission.key}:${rowId(snapshot, permission, data) ?? `#${payloadDigest(data)}`}`;
|
|
142
145
|
}
|
|
143
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* Collects the checks the snapshot cannot answer and posts them as one AuthZEN
|
|
148
|
+
* batch per microtask.
|
|
149
|
+
*/
|
|
144
150
|
function createBatch(options) {
|
|
145
151
|
const { answers, endpoint } = options;
|
|
146
152
|
let queued = [];
|
|
@@ -230,8 +236,75 @@ function createBatch(options) {
|
|
|
230
236
|
};
|
|
231
237
|
}
|
|
232
238
|
//#endregion
|
|
239
|
+
//#region src/client/refresh-on.ts
|
|
240
|
+
const DEFAULT_TYPES = ["com.permdock.membership.*", "com.permdock.catalog.*"];
|
|
241
|
+
const REFRESH_DELAY = 250;
|
|
242
|
+
function matches(type, patterns) {
|
|
243
|
+
return patterns.some((pattern) => pattern.endsWith("*") ? type.startsWith(pattern.slice(0, -1)) : type === pattern);
|
|
244
|
+
}
|
|
245
|
+
function eventType(data) {
|
|
246
|
+
if (typeof data !== "string") return;
|
|
247
|
+
try {
|
|
248
|
+
const parsed = JSON.parse(data);
|
|
249
|
+
if (typeof parsed === "object" && parsed !== null && "type" in parsed && typeof parsed.type === "string") return parsed.type;
|
|
250
|
+
} catch {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* A `refreshOn` trigger over Server-Sent Events: each `message` whose data is a
|
|
256
|
+
* structured CloudEvent with a matching `type` refreshes the snapshot. Without
|
|
257
|
+
* a global `EventSource` it never fires.
|
|
258
|
+
*/
|
|
259
|
+
function eventSourceRefresh(url, options = {}) {
|
|
260
|
+
const types = options.types ?? DEFAULT_TYPES;
|
|
261
|
+
return (refresh) => {
|
|
262
|
+
if (typeof globalThis.EventSource !== "function") return () => void 0;
|
|
263
|
+
const source = new globalThis.EventSource(url, { withCredentials: options.withCredentials === true });
|
|
264
|
+
source.addEventListener("message", (event) => {
|
|
265
|
+
const type = eventType(event.data);
|
|
266
|
+
if (type !== void 0 && matches(type, types)) refresh();
|
|
267
|
+
});
|
|
268
|
+
return () => {
|
|
269
|
+
source.close();
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Runs `triggers` while `start()` holds, folding calls within 250 ms into one
|
|
275
|
+
* `refresh`. `skip()` answering `true` drops a call: after `clear()` or
|
|
276
|
+
* `dispose()` nothing refetches.
|
|
277
|
+
*/
|
|
278
|
+
function refreshTriggers(triggers, refresh, skip) {
|
|
279
|
+
let offs = [];
|
|
280
|
+
let timer;
|
|
281
|
+
const fire = () => {
|
|
282
|
+
if (skip() || timer !== void 0) return;
|
|
283
|
+
timer = setTimeout(() => {
|
|
284
|
+
timer = void 0;
|
|
285
|
+
if (!skip()) refresh();
|
|
286
|
+
}, REFRESH_DELAY);
|
|
287
|
+
};
|
|
288
|
+
return {
|
|
289
|
+
start() {
|
|
290
|
+
if (offs.length === 0) offs = triggers.map((trigger) => trigger(fire));
|
|
291
|
+
},
|
|
292
|
+
stop() {
|
|
293
|
+
for (const off of offs) off();
|
|
294
|
+
offs = [];
|
|
295
|
+
if (timer !== void 0) {
|
|
296
|
+
clearTimeout(timer);
|
|
297
|
+
timer = void 0;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
//#endregion
|
|
233
303
|
//#region src/client/request.ts
|
|
234
|
-
/**
|
|
304
|
+
/**
|
|
305
|
+
* Milliseconds a decision, refresh or approval request may take; a slower one
|
|
306
|
+
* is an error like a failed request.
|
|
307
|
+
*/
|
|
235
308
|
const STORE_TIMEOUT_MS = 1e4;
|
|
236
309
|
function storeRequest(fetchImpl, headers) {
|
|
237
310
|
return (url, body) => fetchImpl(url, {
|
|
@@ -313,6 +386,7 @@ function createClientStore(options) {
|
|
|
313
386
|
let generation = 0;
|
|
314
387
|
let disposed = false;
|
|
315
388
|
let staleNext = options.stale === true;
|
|
389
|
+
let cleared = false;
|
|
316
390
|
let rawJws;
|
|
317
391
|
const request = storeRequest(fetchImpl, () => typeof options.headers === "function" ? options.headers() : options.headers);
|
|
318
392
|
const emit = () => {
|
|
@@ -364,6 +438,7 @@ function createClientStore(options) {
|
|
|
364
438
|
reset();
|
|
365
439
|
if ((snapshot.subject.principal?.id ?? null) !== (next.subject.principal?.id ?? null)) approvals.forget();
|
|
366
440
|
snapshot = next;
|
|
441
|
+
cleared = false;
|
|
367
442
|
instance = fromSnapshot(snapshot, compact({ tenant }));
|
|
368
443
|
base = "ready";
|
|
369
444
|
if (staleNext && next.subject.principal !== null) {
|
|
@@ -511,12 +586,21 @@ function createClientStore(options) {
|
|
|
511
586
|
decision
|
|
512
587
|
};
|
|
513
588
|
};
|
|
589
|
+
const triggers = refreshTriggers(server ? [] : options.refreshOn ?? [], () => {
|
|
590
|
+
cached.refresh().catch(() => void 0);
|
|
591
|
+
}, () => disposed || cleared);
|
|
514
592
|
const subscribe = (listener) => {
|
|
515
593
|
listeners.add(listener);
|
|
516
|
-
if (listeners.size === 1)
|
|
594
|
+
if (listeners.size === 1) {
|
|
595
|
+
approvals.resume();
|
|
596
|
+
triggers.start();
|
|
597
|
+
}
|
|
517
598
|
return () => {
|
|
518
599
|
listeners.delete(listener);
|
|
519
|
-
if (listeners.size === 0)
|
|
600
|
+
if (listeners.size === 0) {
|
|
601
|
+
approvals.stop();
|
|
602
|
+
triggers.stop();
|
|
603
|
+
}
|
|
520
604
|
};
|
|
521
605
|
};
|
|
522
606
|
const wrap = (permdock) => {
|
|
@@ -596,6 +680,7 @@ function createClientStore(options) {
|
|
|
596
680
|
reset();
|
|
597
681
|
tenant = options.tenant;
|
|
598
682
|
snapshot = emptySnapshot();
|
|
683
|
+
cleared = true;
|
|
599
684
|
instance = fromSnapshot(snapshot, compact({ tenant }));
|
|
600
685
|
base = "server-only";
|
|
601
686
|
approvals.forget();
|
|
@@ -679,6 +764,7 @@ function createClientStore(options) {
|
|
|
679
764
|
generation += 1;
|
|
680
765
|
batch.clear();
|
|
681
766
|
approvals.forget();
|
|
767
|
+
triggers.stop();
|
|
682
768
|
listeners.clear();
|
|
683
769
|
},
|
|
684
770
|
requestApproval: approvals.request
|
|
@@ -688,7 +774,10 @@ function createClientStore(options) {
|
|
|
688
774
|
}
|
|
689
775
|
//#endregion
|
|
690
776
|
//#region src/client/store-options.ts
|
|
691
|
-
/**
|
|
777
|
+
/**
|
|
778
|
+
* One hint per store: the first check `endpoint: false` turns into a
|
|
779
|
+
* `server-only` denial.
|
|
780
|
+
*/
|
|
692
781
|
function hintOnce() {
|
|
693
782
|
let shown = false;
|
|
694
783
|
return (permission) => {
|
|
@@ -723,8 +812,9 @@ function adapterStore(options, snapshot, native) {
|
|
|
723
812
|
stale: native?.stale,
|
|
724
813
|
onSnapshot: both(native?.onSnapshot, options.onSnapshot),
|
|
725
814
|
onClear: both(native?.onClear, options.onClear),
|
|
726
|
-
approvalInterval: options.approvalInterval
|
|
815
|
+
approvalInterval: options.approvalInterval,
|
|
816
|
+
refreshOn: options.refreshOn
|
|
727
817
|
}));
|
|
728
818
|
}
|
|
729
819
|
//#endregion
|
|
730
|
-
export { isPromiseLike as i, storeOf as n,
|
|
820
|
+
export { isPromiseLike as a, isJws as i, storeOf as n, eventSourceRefresh as r, adapterStore as t };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Ln as Decision, j as PolicyVocabulary, or as Membership } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { r as Role } from "./vocabulary-DEJ5j4mR.js";
|
|
4
|
+
import { d as UncheckedData, s as RowData } from "./permdock-B6Sf4T_S.js";
|
|
5
|
+
import { r as DescribeOptions, t as DecisionDescription } from "./describe-ByS9LgHK.js";
|
|
6
|
+
import { n as ProtectedAction } from "./action-result-CL-QCITA.js";
|
|
7
|
+
import { a as FilterResult, c as PermissionSet, h as TenantView, l as PermissionState, m as SubjectView, o as GateMode, p as RolesOptions, r as ClientPermDock, s as GateView, t as ApprovalHandle } from "./types-B_d_g7T3.js";
|
|
8
|
+
import { n as ProtectedActionReadable, r as SveltePermDockOptions } from "./types-djVzLlIV.js";
|
|
9
|
+
import { Readable } from "svelte/store";
|
|
10
|
+
//#region src/svelte/stores.d.ts
|
|
11
|
+
declare function setPermDock(options: SveltePermDockOptions): ClientPermDock;
|
|
12
|
+
declare function getPermDock<V extends PolicyVocabulary = PolicyVocabulary>(): ClientPermDock<V>;
|
|
13
|
+
/**
|
|
14
|
+
* `describe` with the provider's `messages`; a call's own `messages` win. Call
|
|
15
|
+
* it during component init.
|
|
16
|
+
*/
|
|
17
|
+
declare function getDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
|
|
18
|
+
declare function permission<D>(reference: Permission, data?: () => UncheckedData<D>): Readable<PermissionState>;
|
|
19
|
+
declare function permission<P extends Permission>(reference: P, data?: () => RowData<P>): Readable<PermissionState>;
|
|
20
|
+
/**
|
|
21
|
+
* What a permission-gated control renders, as `useGate` in React: `hidden`,
|
|
22
|
+
* `disabled`, `needsApproval`, `upgrade` and a `reason` in the provider's
|
|
23
|
+
* `messages`. Call it during component initialisation.
|
|
24
|
+
*/
|
|
25
|
+
declare function gate<D>(reference: Permission, data?: () => UncheckedData<D>, options?: {
|
|
26
|
+
readonly mode?: GateMode;
|
|
27
|
+
}): Readable<GateView>;
|
|
28
|
+
declare function gate<P extends Permission>(reference: P, data?: () => RowData<P>, options?: {
|
|
29
|
+
readonly mode?: GateMode;
|
|
30
|
+
}): Readable<GateView>;
|
|
31
|
+
declare function permissions(references: () => readonly Permission[], data?: () => unknown): Readable<PermissionSet>;
|
|
32
|
+
declare function filtered<T>(reference: Permission<string, NoInfer<T>, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
|
|
33
|
+
declare function tenant(): Readable<TenantView>;
|
|
34
|
+
declare function memberships(): Readable<readonly Membership[]>;
|
|
35
|
+
declare function roles(options?: () => RolesOptions): Readable<{
|
|
36
|
+
readonly roles: readonly Role[];
|
|
37
|
+
}>;
|
|
38
|
+
declare function assignable(): Readable<readonly Role[]>;
|
|
39
|
+
type AssignableOptions = {
|
|
40
|
+
readonly tenant?: string;
|
|
41
|
+
} | (() => {
|
|
42
|
+
readonly tenant?: string;
|
|
43
|
+
});
|
|
44
|
+
declare function assignablePermissions(options?: AssignableOptions): Readable<readonly Permission[]>;
|
|
45
|
+
declare function subject(): Readable<SubjectView>;
|
|
46
|
+
declare function approval(decision: () => Decision): Readable<ApprovalHandle>;
|
|
47
|
+
/**
|
|
48
|
+
* A `protectAction` server action wired to a control, as `useProtectedAction`
|
|
49
|
+
* in React: a readable store of `gate`, `result`, `pending` and `approval`,
|
|
50
|
+
* with `run` and `retry`. Call it during component initialisation.
|
|
51
|
+
*/
|
|
52
|
+
declare function protectedAction<T, D>(action: ProtectedAction<T>, reference: Permission, data?: () => UncheckedData<D>, options?: {
|
|
53
|
+
readonly mode?: GateMode;
|
|
54
|
+
}): ProtectedActionReadable<T>;
|
|
55
|
+
declare function protectedAction<T, P extends Permission>(action: ProtectedAction<T>, reference: P, data?: () => RowData<P>, options?: {
|
|
56
|
+
readonly mode?: GateMode;
|
|
57
|
+
}): ProtectedActionReadable<T>;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { gate as a, memberships as c, protectedAction as d, roles as f, tenant as h, filtered as i, permission as l, subject as m, assignable as n, getDescribe as o, setPermDock as p, assignablePermissions as r, getPermDock as s, approval as t, permissions as u };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as
|
|
3
|
-
import {
|
|
1
|
+
import { n as actionRunner, t as actionApproval } from "./protected-action-DUYqb-Ma.js";
|
|
2
|
+
import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, i as gateView, n as describeWith, o as permissionSet, r as filterResult, t as approvalHandle } from "./views-CD8wuL4Z.js";
|
|
3
|
+
import { n as getUi, r as providePermDock, t as getStore } from "./context-BnIzxTNE.js";
|
|
4
|
+
import { derived, readable, toStore, writable } from "svelte/store";
|
|
4
5
|
//#region src/svelte/stores.ts
|
|
5
6
|
function fromStore(store, compute) {
|
|
6
7
|
return readable(compute(), (set) => {
|
|
@@ -23,7 +24,10 @@ function setPermDock(options) {
|
|
|
23
24
|
function getPermDock() {
|
|
24
25
|
return sveltePermDock(getStore());
|
|
25
26
|
}
|
|
26
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* `describe` with the provider's `messages`; a call's own `messages` win. Call
|
|
29
|
+
* it during component init.
|
|
30
|
+
*/
|
|
27
31
|
function getDescribe() {
|
|
28
32
|
return describeWith(getUi().messages);
|
|
29
33
|
}
|
|
@@ -33,6 +37,16 @@ function permission(reference, data) {
|
|
|
33
37
|
function permissionFor(store, reference, data) {
|
|
34
38
|
return fromStore(store, () => store.permissionState(reference, data?.()));
|
|
35
39
|
}
|
|
40
|
+
function gate(reference, data, options = {}) {
|
|
41
|
+
return gateFor(getStore(), reference, data, {
|
|
42
|
+
...options,
|
|
43
|
+
describe: getDescribe()
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function gateFor(store, reference, data, options = {}) {
|
|
47
|
+
const describeDecision = options.describe ?? describeWith(void 0);
|
|
48
|
+
return fromStore(store, () => gateView(store.permissionState(reference, data?.()), (decision) => describeDecision(decision, { permission: reference }), options.mode));
|
|
49
|
+
}
|
|
36
50
|
function permissions(references, data) {
|
|
37
51
|
return permissionsFor(getStore(), references, data);
|
|
38
52
|
}
|
|
@@ -87,5 +101,28 @@ function approval(decision) {
|
|
|
87
101
|
function approvalFor(store, decision) {
|
|
88
102
|
return fromStore(store, () => approvalHandle(store, decision()));
|
|
89
103
|
}
|
|
104
|
+
function protectedAction(action, reference, data, options = {}) {
|
|
105
|
+
return protectedActionFor(getStore(), action, reference, data, {
|
|
106
|
+
...options,
|
|
107
|
+
describe: getDescribe()
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function protectedActionFor(store, action, reference, data, options = {}) {
|
|
111
|
+
const state = writable({
|
|
112
|
+
result: void 0,
|
|
113
|
+
pending: false
|
|
114
|
+
});
|
|
115
|
+
const runner = actionRunner(() => action, state.set);
|
|
116
|
+
return {
|
|
117
|
+
subscribe: derived([gateFor(store, reference, data, options), state], ([gated, current]) => ({
|
|
118
|
+
gate: gated,
|
|
119
|
+
result: current.result,
|
|
120
|
+
pending: current.pending,
|
|
121
|
+
approval: actionApproval(store, current.result)
|
|
122
|
+
})).subscribe,
|
|
123
|
+
run: runner.run,
|
|
124
|
+
retry: runner.retry
|
|
125
|
+
};
|
|
126
|
+
}
|
|
90
127
|
//#endregion
|
|
91
|
-
export {
|
|
128
|
+
export { gate as a, memberships as c, protectedAction as d, roles as f, tenant as h, filtered as i, permission as l, subject as m, assignable as n, getDescribe as o, setPermDock as p, assignablePermissions as r, getPermDock as s, approval as t, permissions as u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as PermDockRevokedError } from "./errors-
|
|
1
|
+
import { r as PermDockRevokedError } from "./errors-B6R_lg2a.js";
|
|
2
2
|
//#region src/server/stream.ts
|
|
3
3
|
function isAsyncIterable(value) {
|
|
4
4
|
return value !== null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function";
|
|
@@ -35,8 +35,8 @@ async function* guardIterable(source, connection, options) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
|
-
* The connection loader for a stream `protect` already admitted: the first
|
|
39
|
-
*
|
|
38
|
+
* The connection loader for a stream `protect` already admitted: the first read
|
|
39
|
+
* returns the row `protect` loaded, and each revalidation reloads it.
|
|
40
40
|
*/
|
|
41
41
|
function reloadAfter(loaded, load) {
|
|
42
42
|
let first = true;
|
|
@@ -51,8 +51,8 @@ function reloadAfter(loaded, load) {
|
|
|
51
51
|
/** WebSocket close code for a policy violation (RFC 6455 section 7.4.1). */
|
|
52
52
|
const POLICY_VIOLATION = 1008;
|
|
53
53
|
/**
|
|
54
|
-
* The close reason for a problem: its PermDock type URI, or its `detail`
|
|
55
|
-
*
|
|
54
|
+
* The close reason for a problem: its PermDock type URI, or its `detail` code
|
|
55
|
+
* for an `about:blank` one. RFC 6455 caps a reason at 123 bytes.
|
|
56
56
|
*/
|
|
57
57
|
function closeReason(problem) {
|
|
58
58
|
return problem.type === "about:blank" ? problem.detail : problem.type;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { o as ProtectOptions } from "./server-types-
|
|
1
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
2
|
+
import { o as ProtectOptions } from "./server-types-CIlpSA2G.js";
|
|
3
3
|
//#region src/server/stream.d.ts
|
|
4
4
|
type StreamProtectOptions = ProtectOptions & {
|
|
5
5
|
/**
|
|
6
6
|
* For a procedure that returns an async iterable: each outbound item is
|
|
7
|
-
* checked against this permission and dropped when the subscriber cannot read
|
|
7
|
+
* checked against this permission and dropped when the subscriber cannot read
|
|
8
|
+
* it.
|
|
8
9
|
*/
|
|
9
10
|
readonly items?: Permission<string, unknown, "instance">;
|
|
10
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as createStyle, n as streamHasColors } from "./style-
|
|
1
|
+
export { t as createStyle, n as streamHasColors } from "./style-Ds11Hmk4.js";
|
|
@@ -7,12 +7,14 @@ function createStyle(color) {
|
|
|
7
7
|
paint,
|
|
8
8
|
errorMark: color ? paint("red", "✖") : "error",
|
|
9
9
|
warnMark: color ? paint("yellow", "⚠") : "warn",
|
|
10
|
+
infoMark: color ? paint("cyan", "ℹ") : "info",
|
|
10
11
|
okMark: color ? paint("green", "✔") : "ok"
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
15
|
* Whether a stream takes colour. On a TTY `hasColors()` honours `NO_COLOR`,
|
|
15
|
-
* `FORCE_COLOR` and `TERM`; a pipe colours only under a non-zero
|
|
16
|
+
* `FORCE_COLOR` and `TERM`; a pipe colours only under a non-zero
|
|
17
|
+
* `FORCE_COLOR`.
|
|
16
18
|
*/
|
|
17
19
|
function streamHasColors(stream, env = process.env) {
|
|
18
20
|
if (stream.isTTY === true) return stream.hasColors(env);
|
|
@@ -28,7 +28,10 @@ const DENIED = Object.freeze({
|
|
|
28
28
|
function rowCheckOf(found, granted) {
|
|
29
29
|
return found ? granted ? GRANTED : DENIED : MISSING;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Reads `select <filter> as granted ... where <key> limit 2`; only a boolean
|
|
33
|
+
* `true` or `1` grants.
|
|
34
|
+
*/
|
|
32
35
|
function rowCheckFrom(rows) {
|
|
33
36
|
if (rows.length > 1) throw new Error("PermDock: checkRow key matches more than one row");
|
|
34
37
|
const [row] = rows;
|
|
@@ -88,9 +91,10 @@ function setConfigs(settings) {
|
|
|
88
91
|
}];
|
|
89
92
|
}
|
|
90
93
|
/**
|
|
91
|
-
* The transaction preamble that makes Postgres see `permdock.subject`: one
|
|
92
|
-
* that sets the role, then the claims the generated
|
|
93
|
-
* transaction, so every setting is
|
|
94
|
+
* The transaction preamble that makes Postgres see `permdock.subject`: one
|
|
95
|
+
* `select set_config(…)` that sets the role, then the claims the generated
|
|
96
|
+
* policies read. Runs inside the caller's transaction, so every setting is
|
|
97
|
+
* local to it.
|
|
94
98
|
*/
|
|
95
99
|
function subjectStatements(permdock, options = {}) {
|
|
96
100
|
const principal = permdock.subject.principal;
|