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,19 +1,22 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { r as approverLeaves } from "./approvers-
|
|
4
|
-
import {
|
|
5
|
-
import { i as getRegistry, n as findPermission } from "./permission-registry-
|
|
6
|
-
import { t as assertAppData } from "./app-data-
|
|
7
|
-
import { a as durationOf, i as dateAt, u as isoAt } from "./time-
|
|
8
|
-
import { r as relationReader, t as pendingRelations } from "./relations-
|
|
9
|
-
import { n as resolveRelated } from "./relation-walk-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { r as approverLeaves } from "./approvers-B4r0N_Uz.js";
|
|
4
|
+
import { n as describe } from "./describe-Bb4hGK5d.js";
|
|
5
|
+
import { i as getRegistry, n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
6
|
+
import { t as assertAppData } from "./app-data-UNNm07jV.js";
|
|
7
|
+
import { a as durationOf, i as dateAt, u as isoAt } from "./time-nR1JesoH.js";
|
|
8
|
+
import { r as relationReader, t as pendingRelations } from "./relations-BxvRvDHK.js";
|
|
9
|
+
import { n as resolveRelated } from "./relation-walk-DK_gkgL7.js";
|
|
10
10
|
import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
|
|
11
|
-
import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-
|
|
12
|
-
import {
|
|
13
|
-
import { n as parseApprovalHeader } from "./approval-header-
|
|
11
|
+
import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-CcUXciSj.js";
|
|
12
|
+
import { n as assertApprover, u as listAllApprovals } from "./store-RNFvaJJv.js";
|
|
13
|
+
import { n as parseApprovalHeader } from "./approval-header-8QV6MU4H.js";
|
|
14
14
|
//#region src/approvals/relations.ts
|
|
15
15
|
const DEFAULT_PARENT_DEPTH = 16;
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Every approver a request names: `by`, each stage and its escalation, and
|
|
18
|
+
* `escalation.to`, inside `anyOf` groups too.
|
|
19
|
+
*/
|
|
17
20
|
function requestApprovers(approvers) {
|
|
18
21
|
return [
|
|
19
22
|
...approverLeaves(approvers.by),
|
|
@@ -31,7 +34,10 @@ async function settled(read, unread, cache) {
|
|
|
31
34
|
await Promise.all(pending);
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The id of `item.resource` the walk starts from, after following `through`
|
|
39
|
+
* links.
|
|
40
|
+
*/
|
|
35
41
|
async function startOf(item, resource, id, reader, cache, registry) {
|
|
36
42
|
if (!Array.isArray(item.through)) return resource === item.resource ? id : void 0;
|
|
37
43
|
let current = resource;
|
|
@@ -61,8 +67,8 @@ function depthOf(item) {
|
|
|
61
67
|
/**
|
|
62
68
|
* The relation approvers of `request` that `subject` holds on its resource,
|
|
63
69
|
* keyed by `approverRelationKey`, for `ApprovalVerdict.relations`. Reads go
|
|
64
|
-
* through `relations` by the request's resource id; a request without an id,
|
|
65
|
-
*
|
|
70
|
+
* through `relations` by the request's resource id; a request without an id, a
|
|
71
|
+
* missing source or a read that fails holds nothing.
|
|
66
72
|
*/
|
|
67
73
|
async function approverRelations(request, subject, options) {
|
|
68
74
|
const approvers = request.approvers;
|
|
@@ -118,7 +124,10 @@ function approverPermissions(request, approver) {
|
|
|
118
124
|
}
|
|
119
125
|
});
|
|
120
126
|
}
|
|
121
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* The permission approvers `subject` holds on `request`, read through
|
|
129
|
+
* `permdockFor`.
|
|
130
|
+
*/
|
|
122
131
|
async function heldPermissions(request, subject, permdockFor) {
|
|
123
132
|
if (permdockFor === void 0 || request.approvers === void 0) return [];
|
|
124
133
|
try {
|
|
@@ -156,9 +165,9 @@ function summarizeSubject(subject) {
|
|
|
156
165
|
});
|
|
157
166
|
}
|
|
158
167
|
/**
|
|
159
|
-
* The window (`meta.ttl`, else the store's `ttl`, else the default) capped by
|
|
160
|
-
* `approval.ttl`: a grant shortens how long a request stays open,
|
|
161
|
-
* extends it.
|
|
168
|
+
* The window (`meta.ttl`, else the store's `ttl`, else the default) capped by
|
|
169
|
+
* the grant's `approval.ttl`: a grant shortens how long a request stays open,
|
|
170
|
+
* never extends it.
|
|
162
171
|
*/
|
|
163
172
|
function approvalTtl(storeTtl, approval) {
|
|
164
173
|
if (storeTtl !== void 0 && durationOf(storeTtl) === void 0) throw new RangeError(`PermDock: approval ttl must be a whole number of seconds above 0, got ${String(storeTtl)}`);
|
|
@@ -391,7 +400,10 @@ async function cancelApprovals(store, filter, meta) {
|
|
|
391
400
|
}
|
|
392
401
|
}))).filter(Boolean).length;
|
|
393
402
|
}
|
|
394
|
-
/**
|
|
403
|
+
/**
|
|
404
|
+
* The token of a `PermDock-Approval` field: one RFC 9651 sf-token Item with no
|
|
405
|
+
* parameters, else `undefined`.
|
|
406
|
+
*/
|
|
395
407
|
function readApprovalHeader(headers) {
|
|
396
408
|
return parseApprovalHeader(headers.get(APPROVAL_HEADER));
|
|
397
409
|
}
|
|
@@ -405,14 +417,14 @@ function resumeFromHeader(store, headers, now) {
|
|
|
405
417
|
}
|
|
406
418
|
/**
|
|
407
419
|
* The token to resume `decision` with when the caller carries none: the
|
|
408
|
-
* decision's own token when the store holds an approved or rejected request
|
|
409
|
-
*
|
|
410
|
-
*
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
*
|
|
414
|
-
*
|
|
415
|
-
*
|
|
420
|
+
* decision's own token when the store holds an approved or rejected request for
|
|
421
|
+
* it, so `resumeDecision` resumes (or denies) the call without the caller
|
|
422
|
+
* passing the token back. The token already binds permission, resource (or the
|
|
423
|
+
* call's data when there is no row id), subject and actor. A pending request
|
|
424
|
+
* counts only with `denyPending: true`, which makes the call deny with
|
|
425
|
+
* `approval-pending` instead of asking again. `undefined` when the decision
|
|
426
|
+
* needs no approval, there is no store, or the store has no unexpired request
|
|
427
|
+
* for the token; a store that throws counts as none.
|
|
416
428
|
*/
|
|
417
429
|
async function storedApprovalToken(store, decision, options = {}) {
|
|
418
430
|
if (store === void 0 || decision.outcome !== "approval-required") return;
|
package/dist/hono/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as RevocationFeed } from "../revocations-
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
6
|
-
import { t as ServerAdapterOptions } from "../bind-
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-B6Sf4T_S.js";
|
|
4
|
+
import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CIlpSA2G.js";
|
|
6
|
+
import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
|
|
7
7
|
import { Context, Hono, MiddlewareHandler } from "hono";
|
|
8
8
|
import { SSEMessage, SSEStreamingApi } from "hono/streaming";
|
|
9
9
|
import { WSEvents } from "hono/ws";
|
|
@@ -20,19 +20,25 @@ type HonoPermDockEnv<TData = unknown, V extends PolicyVocabulary = PolicyVocabul
|
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
22
|
type HonoPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The `PermDock` for one request, for code the middleware does not run
|
|
25
|
+
* before.
|
|
26
|
+
*/
|
|
24
27
|
readonly getPermDock: (c: Context) => Promise<PermDock<V>>;
|
|
25
28
|
readonly middleware: () => MiddlewareHandler<HonoPermDockEnv<unknown, V>>;
|
|
26
29
|
readonly protect: <TData = unknown>(permission: Permission | null, data?: (c: Context) => TData | Promise<TData>, protectOptions?: ProtectOptions) => MiddlewareHandler<HonoPermDockEnv<NonNullable<TData>, V>>;
|
|
27
30
|
/** A long-lived connection for the request behind `c`. */
|
|
28
31
|
readonly connection: (c: Context, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
29
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* `upgradeWebSocket` events that close with `1008` when the connection
|
|
34
|
+
* aborts.
|
|
35
|
+
*/
|
|
30
36
|
readonly socket: <T = unknown>(connection: Connection, events: WSEvents<T>) => WSEvents<T>;
|
|
31
37
|
/**
|
|
32
38
|
* Writes `source` to a `streamSSE` stream, dropping items the subscriber
|
|
33
39
|
* cannot read, and resolves when it ends: after an `event: permdock` frame
|
|
34
|
-
* when the connection aborts, when the client disconnects, or when the
|
|
35
|
-
*
|
|
40
|
+
* when the connection aborts, when the client disconnects, or when the source
|
|
41
|
+
* is done. Await it as the last statement of the callback.
|
|
36
42
|
*/
|
|
37
43
|
readonly sse: <T>(connection: Connection, stream: SSEStreamingApi, source: AsyncIterable<T>, options?: SseOptions<T>) => Promise<void>;
|
|
38
44
|
readonly permdockHandler: () => Hono;
|
package/dist/hono/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { r as PermDockRevokedError } from "../errors-
|
|
3
|
-
import {
|
|
4
|
-
import { t as problemFromError } from "../map-error-
|
|
5
|
-
import { r as bindKernel } from "../bind-
|
|
6
|
-
import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-
|
|
2
|
+
import { r as PermDockRevokedError } from "../errors-B6R_lg2a.js";
|
|
3
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
|
|
4
|
+
import { t as problemFromError } from "../map-error-pasIGqMT.js";
|
|
5
|
+
import { r as bindKernel } from "../bind-D_sZSVA3.js";
|
|
6
|
+
import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CDvF0sJm.js";
|
|
7
7
|
import { Hono } from "hono";
|
|
8
8
|
//#region src/hono/create.ts
|
|
9
9
|
function socket(connection, events) {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { T as Policy, a as ApprovalRequirement,
|
|
1
|
+
import { T as Policy, a as ApprovalRequirement, mr as Condition, wn as Grantee } from "./policy-types-CCiDRZBH.js";
|
|
2
2
|
//#region src/core/hosted.d.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* One grant authored in PermDock Cloud; its grantee is a declared role, plan or
|
|
5
|
+
* relation.
|
|
6
|
+
*/
|
|
4
7
|
type HostedGrant = {
|
|
5
8
|
readonly id: string;
|
|
6
9
|
readonly permission: string;
|
|
@@ -12,9 +15,9 @@ type HostedGrant = {
|
|
|
12
15
|
readonly fields?: readonly string[];
|
|
13
16
|
};
|
|
14
17
|
/**
|
|
15
|
-
* PolicyDocument v1. Signed as a `vnd.permdock.policy+jwt`, the `policy`
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
+
* PolicyDocument v1. Signed as a `vnd.permdock.policy+jwt`, the `policy` claim
|
|
19
|
+
* carries every field but `id` and `issuedAt`, which are the token's `jti` and
|
|
20
|
+
* `iat` (`policyDocumentFromClaims`).
|
|
18
21
|
*/
|
|
19
22
|
type PolicyDocument = {
|
|
20
23
|
readonly v: 1;
|
|
@@ -27,17 +30,20 @@ type PolicyDocument = {
|
|
|
27
30
|
readonly grants: readonly HostedGrant[];
|
|
28
31
|
};
|
|
29
32
|
/**
|
|
30
|
-
* The channel for hosted grants. `getPermDock` reads `current()` once;
|
|
31
|
-
*
|
|
33
|
+
* The channel for hosted grants. `getPermDock` reads `current()` once; the
|
|
34
|
+
* application calls `refresh()` on its own schedule, never a check.
|
|
32
35
|
*/
|
|
33
36
|
type PolicySource = {
|
|
34
37
|
/** Names the implementation in errors and events. */
|
|
35
38
|
readonly name?: string;
|
|
36
|
-
current()
|
|
37
|
-
refresh()
|
|
39
|
+
current: () => PolicyDocument | null;
|
|
40
|
+
refresh: () => Promise<void>;
|
|
38
41
|
};
|
|
39
42
|
type HostedGrantDropReason = "not-hostable" | "unknown-permission" | "unknown-grantee" | "non-portable" | "weaker-approval" | "invalid";
|
|
40
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Reported through `on('error')` when a hosted grant is not merged; never
|
|
45
|
+
* thrown.
|
|
46
|
+
*/
|
|
41
47
|
type HostedGrantDropped = {
|
|
42
48
|
readonly kind: "hosted-grant-dropped";
|
|
43
49
|
readonly document: string;
|
|
@@ -47,24 +53,42 @@ type HostedGrantDropped = {
|
|
|
47
53
|
declare function memoryPolicySource(document?: PolicyDocument | null): PolicySource;
|
|
48
54
|
/** Validates the document envelope; per-grant checks happen at merge time. */
|
|
49
55
|
declare function parsePolicyDocument(json: unknown): PolicyDocument;
|
|
50
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with
|
|
58
|
+
* `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`.
|
|
59
|
+
*/
|
|
51
60
|
declare function policyDocumentFromClaims(claims: Readonly<Record<string, unknown>>): PolicyDocument;
|
|
52
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown
|
|
63
|
+
* op.
|
|
64
|
+
*/
|
|
53
65
|
declare function isPortableCondition(value: unknown): value is Condition;
|
|
66
|
+
type HostedGrantCheck = {
|
|
67
|
+
readonly ok: true;
|
|
68
|
+
} | {
|
|
69
|
+
readonly ok: false;
|
|
70
|
+
readonly reason: HostedGrantDropReason;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
|
|
74
|
+
* drop reason it would report when not. Needs no `PolicyDocument`, so a grant
|
|
75
|
+
* form can check a grant before it publishes one.
|
|
76
|
+
*/
|
|
77
|
+
declare function checkHostedGrant(policy: Policy, grant: unknown): HostedGrantCheck;
|
|
54
78
|
/**
|
|
55
|
-
* The code policy plus the hosted grants that pass every rule. Hosted
|
|
56
|
-
*
|
|
57
|
-
*
|
|
79
|
+
* The code policy plus the hosted grants that pass every rule. Hosted allows OR
|
|
80
|
+
* with code allows and any deny still wins, so a hosted grant can never
|
|
81
|
+
* override a code deny; one that fails a rule is dropped, not thrown.
|
|
58
82
|
*/
|
|
59
83
|
declare function mergeHostedGrants(policy: Policy, document: PolicyDocument | null): {
|
|
60
84
|
readonly policy: Policy;
|
|
61
85
|
readonly dropped: readonly HostedGrantDropped[];
|
|
62
86
|
};
|
|
63
87
|
/**
|
|
64
|
-
* Hosted grants as an instance option: `policies: hostedPolicies(source)`.
|
|
65
|
-
*
|
|
66
|
-
* `source.current()` is read once per instance; a throw keeps the code
|
|
67
|
-
*
|
|
88
|
+
* Hosted grants as an instance option: `policies: hostedPolicies(source)`. The
|
|
89
|
+
* merge code ships only with an app that imports this function.
|
|
90
|
+
* `source.current()` is read once per instance; a throw keeps the code policy
|
|
91
|
+
* and is reported as an error event.
|
|
68
92
|
*/
|
|
69
93
|
type HostedPolicies = {
|
|
70
94
|
readonly feature: "hosted-policies";
|
|
@@ -75,4 +99,4 @@ type HostedPolicies = {
|
|
|
75
99
|
};
|
|
76
100
|
declare function hostedPolicies(source: PolicySource): HostedPolicies;
|
|
77
101
|
//#endregion
|
|
78
|
-
export {
|
|
102
|
+
export { HostedPolicies as a, checkHostedGrant as c, memoryPolicySource as d, mergeHostedGrants as f, HostedGrantDropped as i, hostedPolicies as l, policyDocumentFromClaims as m, HostedGrantCheck as n, PolicyDocument as o, parsePolicyDocument as p, HostedGrantDropReason as r, PolicySource as s, HostedGrant as t, isPortableCondition as u };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { n as isForbiddenKey, s as splitPath } from "./paths-
|
|
4
|
-
import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-
|
|
5
|
-
import { a as getResource, n as findPermission } from "./permission-registry-
|
|
6
|
-
import { d as isSelfParented } from "./resource-relations-
|
|
7
|
-
import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-
|
|
8
|
-
import { r as sha256Digest } from "./sha256-
|
|
9
|
-
import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-
|
|
10
|
-
import {
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { n as isForbiddenKey, s as splitPath } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-BK2-T6oD.js";
|
|
5
|
+
import { a as getResource, n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
6
|
+
import { d as isSelfParented } from "./resource-relations-8-pCScBO.js";
|
|
7
|
+
import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-nR1JesoH.js";
|
|
8
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
9
|
+
import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-Dke-9rd1.js";
|
|
10
|
+
import { a as indexPolicy, n as declaredRoleNames } from "./policy-CLQ8__GF.js";
|
|
11
11
|
//#region src/core/hosted.ts
|
|
12
12
|
function memoryPolicySource(document = null) {
|
|
13
13
|
const current = document === null ? null : parsePolicyDocument(document);
|
|
@@ -37,7 +37,10 @@ function parsePolicyDocument(json) {
|
|
|
37
37
|
if (typeof copy["id"] !== "string" || typeof copy["fingerprint"] !== "string" || typeof copy["catalog"] !== "string" || !isRfc3339(copy["issuedAt"]) || !Array.isArray(copy["grants"])) throw new TypeError("PermDock: malformed policy document");
|
|
38
38
|
return freezeDeep(copy);
|
|
39
39
|
}
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* The document verified `vnd.permdock.policy+jwt` claims carry: `policy`, with
|
|
42
|
+
* `jti` as `id` and `iat` as `issuedAt`. Throws like `parsePolicyDocument`.
|
|
43
|
+
*/
|
|
41
44
|
function policyDocumentFromClaims(claims) {
|
|
42
45
|
const claim = claims["policy"];
|
|
43
46
|
const jti = claims["jti"];
|
|
@@ -71,7 +74,10 @@ function portableValue(value) {
|
|
|
71
74
|
if (keys[0] === "ref") return safePath(value["ref"]);
|
|
72
75
|
return keys[0] === "date" && typeof value["date"] === "string";
|
|
73
76
|
}
|
|
74
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown
|
|
79
|
+
* op.
|
|
80
|
+
*/
|
|
75
81
|
function isPortableCondition(value) {
|
|
76
82
|
if (!isRecord(value) || typeof value["op"] !== "string") return false;
|
|
77
83
|
const op = value["op"];
|
|
@@ -105,7 +111,10 @@ function approvalRank(approval) {
|
|
|
105
111
|
escalates: approval.escalation !== void 0
|
|
106
112
|
};
|
|
107
113
|
}
|
|
108
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* A hosted approval must meet every approval a code allow requires on the
|
|
116
|
+
* permission.
|
|
117
|
+
*/
|
|
109
118
|
function approvalAtLeast(hosted, code) {
|
|
110
119
|
const mine = approvalRank(hosted);
|
|
111
120
|
for (const required of code) {
|
|
@@ -120,10 +129,17 @@ function approvalAtLeast(hosted, code) {
|
|
|
120
129
|
}
|
|
121
130
|
return true;
|
|
122
131
|
}
|
|
123
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* A grantee kind this build does not know is never declared, so the hosted
|
|
134
|
+
* grant is dropped.
|
|
135
|
+
*/
|
|
124
136
|
function undeclaredKind(_grantee) {
|
|
125
137
|
return false;
|
|
126
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Whether a hosted grant may name `grantee` on a permission of
|
|
141
|
+
* `permissionResource`.
|
|
142
|
+
*/
|
|
127
143
|
function declaredGrantee(policy, grantee, permissionResource) {
|
|
128
144
|
switch (grantee.kind) {
|
|
129
145
|
case "role": return declaredRoleNames(policy).has(grantee.role);
|
|
@@ -156,6 +172,13 @@ function granteesAcceptable(policy, raw, permissionResource) {
|
|
|
156
172
|
const items = flattenGrantee(raw);
|
|
157
173
|
return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
|
|
158
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* The approvals the code allows on `key` carry; a hosted allow must meet each
|
|
177
|
+
* one.
|
|
178
|
+
*/
|
|
179
|
+
function codeApprovals(policy, key) {
|
|
180
|
+
return policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === key).map((grant) => grant.approval);
|
|
181
|
+
}
|
|
159
182
|
function buildGrant(policy, document, raw) {
|
|
160
183
|
if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
|
|
161
184
|
ok: false,
|
|
@@ -216,13 +239,10 @@ function buildGrant(policy, document, raw) {
|
|
|
216
239
|
reason: "invalid"
|
|
217
240
|
};
|
|
218
241
|
}
|
|
219
|
-
if (effect === "allow") {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
reason: "weaker-approval"
|
|
224
|
-
};
|
|
225
|
-
}
|
|
242
|
+
if (effect === "allow" && !approvalAtLeast(built.approval, codeApprovals(policy, permission.key))) return {
|
|
243
|
+
ok: false,
|
|
244
|
+
reason: "weaker-approval"
|
|
245
|
+
};
|
|
226
246
|
return {
|
|
227
247
|
ok: true,
|
|
228
248
|
grant: freezeDeep({
|
|
@@ -234,7 +254,30 @@ function buildGrant(policy, document, raw) {
|
|
|
234
254
|
})
|
|
235
255
|
};
|
|
236
256
|
}
|
|
237
|
-
|
|
257
|
+
const CHECKED_DOCUMENT = Object.freeze({
|
|
258
|
+
v: 1,
|
|
259
|
+
id: "",
|
|
260
|
+
fingerprint: "",
|
|
261
|
+
catalog: "",
|
|
262
|
+
issuedAt: "",
|
|
263
|
+
grants: Object.freeze([])
|
|
264
|
+
});
|
|
265
|
+
/**
|
|
266
|
+
* Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
|
|
267
|
+
* drop reason it would report when not. Needs no `PolicyDocument`, so a grant
|
|
268
|
+
* form can check a grant before it publishes one.
|
|
269
|
+
*/
|
|
270
|
+
function checkHostedGrant(policy, grant) {
|
|
271
|
+
const result = buildGrant(policy, CHECKED_DOCUMENT, grant);
|
|
272
|
+
return result.ok ? { ok: true } : {
|
|
273
|
+
ok: false,
|
|
274
|
+
reason: result.reason
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* The grants of `document` that `policy` drops, in document order;
|
|
279
|
+
* `permdock/catalog` turns them into drift findings.
|
|
280
|
+
*/
|
|
238
281
|
function hostedGrantDrops(policy, document) {
|
|
239
282
|
return document.grants.flatMap((raw) => {
|
|
240
283
|
const result = buildGrant(policy, document, raw);
|
|
@@ -247,9 +290,9 @@ function hostedGrantDrops(policy, document) {
|
|
|
247
290
|
});
|
|
248
291
|
}
|
|
249
292
|
/**
|
|
250
|
-
* The code policy plus the hosted grants that pass every rule. Hosted
|
|
251
|
-
*
|
|
252
|
-
*
|
|
293
|
+
* The code policy plus the hosted grants that pass every rule. Hosted allows OR
|
|
294
|
+
* with code allows and any deny still wins, so a hosted grant can never
|
|
295
|
+
* override a code deny; one that fails a rule is dropped, not thrown.
|
|
253
296
|
*/
|
|
254
297
|
function mergeHostedGrants(policy, document) {
|
|
255
298
|
if (document === null || document.grants.length === 0) return {
|
|
@@ -312,4 +355,4 @@ function hostedPolicies(source) {
|
|
|
312
355
|
});
|
|
313
356
|
}
|
|
314
357
|
//#endregion
|
|
315
|
-
export {
|
|
358
|
+
export { hostedPolicies as a, mergeHostedGrants as c, hostedGrantDrops as i, parsePolicyDocument as l, codeApprovals as n, isPortableCondition as o, declaredGrantee as r, memoryPolicySource as s, checkHostedGrant as t, policyDocumentFromClaims as u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as headersFrom, n as firstHeader, t as fetchRequest } from "./http-
|
|
1
|
+
import { i as headersFrom, n as firstHeader, t as fetchRequest } from "./http-DKLXrFGk.js";
|
|
2
2
|
//#region src/node/http.ts
|
|
3
3
|
function toRequest(req, stream = req) {
|
|
4
4
|
const host = firstHeader(req.headers.host) ?? "localhost";
|
|
@@ -9,9 +9,9 @@ function chunkOf(chunk) {
|
|
|
9
9
|
return typeof chunk === "string" ? Buffer.from(chunk) : new Uint8Array(chunk);
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Pull-based with `highWaterMark: 0`: nothing is read from `req` until the
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Pull-based with `highWaterMark: 0`: nothing is read from `req` until the Web
|
|
13
|
+
* body is consumed, so a later body parser (multer, `express.json()`) still
|
|
14
|
+
* sees the whole stream.
|
|
15
15
|
*/
|
|
16
16
|
function incomingBody(req) {
|
|
17
17
|
return new ReadableStream({ pull(controller) {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
//#region src/server/http.ts
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Node-style headers (`IncomingHttpHeaders`, Fastify's) as Fetch `Headers`;
|
|
4
|
+
* repeated values stay separate.
|
|
5
|
+
*/
|
|
3
6
|
function headersFrom(source) {
|
|
4
7
|
const headers = new Headers();
|
|
5
8
|
for (const [key, value] of Object.entries(source)) {
|
|
@@ -16,9 +19,9 @@ function firstHeader(value) {
|
|
|
16
19
|
return value?.[0];
|
|
17
20
|
}
|
|
18
21
|
/**
|
|
19
|
-
* A body a framework already parsed, as the text a Fetch `Request` carries.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
+
* A body a framework already parsed, as the text a Fetch `Request` carries. A
|
|
23
|
+
* non-string body is serialised as JSON and, without a `content-type`, labelled
|
|
24
|
+
* `application/json` on `headers`.
|
|
22
25
|
*/
|
|
23
26
|
function parsedBody(body, headers) {
|
|
24
27
|
if (body === void 0) return;
|
|
@@ -27,8 +30,8 @@ function parsedBody(body, headers) {
|
|
|
27
30
|
return JSON.stringify(body);
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
|
-
* A Fetch `Request` for a framework request. A `GET` or `HEAD` carries no
|
|
31
|
-
*
|
|
33
|
+
* A Fetch `Request` for a framework request. A `GET` or `HEAD` carries no body;
|
|
34
|
+
* otherwise the body the framework parsed, or else `stream()`.
|
|
32
35
|
*/
|
|
33
36
|
function fetchRequest(url, method, headers, body, stream) {
|
|
34
37
|
if (method === "GET" || method === "HEAD") return new Request(url, {
|
|
@@ -64,7 +67,10 @@ function requestFromContext(context) {
|
|
|
64
67
|
if ("request" in context && context.request instanceof Request) return context.request;
|
|
65
68
|
if ("req" in context && context.req instanceof Request) return context.req;
|
|
66
69
|
}
|
|
67
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Whether the caller sent credentials, which turns a `401` into a
|
|
72
|
+
* `WWW-Authenticate` challenge.
|
|
73
|
+
*/
|
|
68
74
|
function hasCredentials(request) {
|
|
69
75
|
return request instanceof Request ? request.headers.has("authorization") : request.headers.authorization !== void 0;
|
|
70
76
|
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { t as timeoutSignal } from "./timeout-D51niuQP.js";
|
|
2
|
-
import { a as describeError, n as CliError } from "./errors-
|
|
3
|
-
import { s as cliVersion } from "./version-
|
|
4
|
-
import "./device-
|
|
2
|
+
import { a as describeError, n as CliError } from "./errors-Vpu6rKHl.js";
|
|
3
|
+
import { s as cliVersion } from "./version-DMQ0dnN5.js";
|
|
4
|
+
import "./device-BwbJNmb2.js";
|
|
5
5
|
//#region src/cli/core/http.ts
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* `permdock-cli/<version> node/<version> <platform>`, sent on every request the
|
|
8
|
+
* CLI makes.
|
|
9
|
+
*/
|
|
7
10
|
function userAgent() {
|
|
8
11
|
return `permdock-cli/${cliVersion()} node/${process.versions.node} ${process.platform}`;
|
|
9
12
|
}
|
|
10
13
|
/**
|
|
11
|
-
* Every outbound request: the user agent, a timeout joined to the run's
|
|
12
|
-
*
|
|
14
|
+
* Every outbound request: the user agent, a timeout joined to the run's abort
|
|
15
|
+
* signal, and a `network_error` CLI error when nothing answers.
|
|
13
16
|
*/
|
|
14
17
|
async function httpRequest(io, request) {
|
|
15
18
|
const fetchImpl = io.fetch ?? globalThis.fetch.bind(globalThis);
|
|
@@ -31,8 +34,8 @@ async function httpRequest(io, request) {
|
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
/**
|
|
34
|
-
* A 401 or 403 as an `auth_required` action: the credential is missing,
|
|
35
|
-
*
|
|
37
|
+
* A 401 or 403 as an `auth_required` action: the credential is missing, expired
|
|
38
|
+
* or lacks a scope, and `next` says how to get one.
|
|
36
39
|
*/
|
|
37
40
|
function authFailure(response, message, next) {
|
|
38
41
|
if (response.status !== 401 && response.status !== 403) return;
|