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,23 +1,26 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { a as ownRecord } from "./paths-
|
|
4
|
-
import { a as problemType, o as statusProblem } from "./problem-details-
|
|
5
|
-
import { a as isId } from "./expiry-
|
|
6
|
-
import { d as isoNow, f as nowMillis, g as secondsOf, i as dateAt } from "./time-
|
|
7
|
-
import { t as canonicalJson } from "./canonical-json-
|
|
8
|
-
import { r as sha256Digest } from "./sha256-
|
|
9
|
-
import {
|
|
10
|
-
import { o as flattenGrantee } from "./grantee-
|
|
11
|
-
import { c as isApprovalError, s as ApprovalError } from "./types-
|
|
12
|
-
import { a as
|
|
13
|
-
import { n as readBodyText } from "./body-text-
|
|
14
|
-
import { r as hasCredentials } from "./http-
|
|
15
|
-
import {
|
|
16
|
-
import { f as approverPermissions, m as approverRelations, p as heldPermissions } from "./helpers-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { a as ownRecord } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { a as problemType, o as statusProblem } from "./problem-details-CLDgX1KV.js";
|
|
5
|
+
import { a as isId } from "./expiry-6XByK0dm.js";
|
|
6
|
+
import { d as isoNow, f as nowMillis, g as secondsOf, i as dateAt } from "./time-nR1JesoH.js";
|
|
7
|
+
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
8
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
9
|
+
import { c as rootMembershipId } from "./scopes-0Up_UA2t.js";
|
|
10
|
+
import { o as flattenGrantee } from "./grantee-Dke-9rd1.js";
|
|
11
|
+
import { c as isApprovalError, s as ApprovalError } from "./types-CcUXciSj.js";
|
|
12
|
+
import { a as belongsToTenant, c as decodeApprovalCursor, n as assertApprover, o as membershipTenants, r as matchesApprovers, s as approvalPageSize, u as listAllApprovals } from "./store-RNFvaJJv.js";
|
|
13
|
+
import { n as readBodyText } from "./body-text-DQhcmqdY.js";
|
|
14
|
+
import { r as hasCredentials } from "./http-DKLXrFGk.js";
|
|
15
|
+
import { d as unauthenticatedProblem, f as validationProblem, l as problemResponse, o as methodNotAllowed } from "./problem-BVLHFK33.js";
|
|
16
|
+
import { f as approverPermissions, m as approverRelations, p as heldPermissions } from "./helpers-DJicaG6f.js";
|
|
17
17
|
import { n as isAccessReviewError, t as AccessReviewError } from "./errors-BDUwg2qC.js";
|
|
18
|
-
import { t as bodyTooLarge } from "./body-
|
|
18
|
+
import { t as bodyTooLarge } from "./body-CJQwYVa8.js";
|
|
19
19
|
//#region src/approvals/access-reviews/decide.ts
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Whether `by` is named as a reviewer. A link, a feed or a contact is never a
|
|
22
|
+
* reviewer.
|
|
23
|
+
*/
|
|
21
24
|
function accessReviewerEligible(review, by, permissions = [], now) {
|
|
22
25
|
const principal = by.principal;
|
|
23
26
|
if (principal === null || principal.kind === "link" || principal.kind === "feed" || principal.kind === "contact") return false;
|
|
@@ -27,8 +30,8 @@ function accessReviewerEligible(review, by, permissions = [], now) {
|
|
|
27
30
|
});
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
|
-
* The decision to persist, or throws. A reviewer cannot decide a holding
|
|
31
|
-
*
|
|
33
|
+
* The decision to persist, or throws. A reviewer cannot decide a holding of
|
|
34
|
+
* their own principal. `holder()` matches only through `permissions`.
|
|
32
35
|
*/
|
|
33
36
|
function decideAccessReviewItem(review, item, verdict, at) {
|
|
34
37
|
const now = dateAt(at);
|
|
@@ -57,7 +60,10 @@ function json$1(status, body) {
|
|
|
57
60
|
headers: { "content-type": "application/json" }
|
|
58
61
|
});
|
|
59
62
|
}
|
|
60
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* The route a path names, the methods it allows, or `undefined` for an unknown
|
|
65
|
+
* path.
|
|
66
|
+
*/
|
|
61
67
|
function parseRoute$1(url, method) {
|
|
62
68
|
const parts = url.pathname.replace(/\/+$/u, "").split("/").filter(Boolean);
|
|
63
69
|
const last = parts.at(-1);
|
|
@@ -132,8 +138,8 @@ function mapError$1(error, credentials) {
|
|
|
132
138
|
}
|
|
133
139
|
/**
|
|
134
140
|
* HTTP for one access-review store: `GET` a review and its items, `POST`
|
|
135
|
-
* `.../keep`, `.../revoke`, `.../applied` and `.../close`. A caller who is
|
|
136
|
-
*
|
|
141
|
+
* `.../keep`, `.../revoke`, `.../applied` and `.../close`. A caller who is not
|
|
142
|
+
* a reviewer and did not open the review gets 404.
|
|
137
143
|
*/
|
|
138
144
|
function accessReviewsHandler(store, options) {
|
|
139
145
|
return async (request) => {
|
|
@@ -275,9 +281,9 @@ function itemsFrom(reviewId, holders, keys) {
|
|
|
275
281
|
return items;
|
|
276
282
|
}
|
|
277
283
|
/**
|
|
278
|
-
* Opens a review of who holds `permissions` in the caller's active tenant.
|
|
279
|
-
*
|
|
280
|
-
*
|
|
284
|
+
* Opens a review of who holds `permissions` in the caller's active tenant. The
|
|
285
|
+
* caller must be signed in. PermDock stores the population and does not revoke
|
|
286
|
+
* anything: the application changes the source, then `markApplied`.
|
|
281
287
|
*/
|
|
282
288
|
async function startAccessReview(permdock, input, options) {
|
|
283
289
|
const principal = permdock.subject.principal;
|
|
@@ -415,9 +421,9 @@ function stringList(value) {
|
|
|
415
421
|
return [...new Set(value)];
|
|
416
422
|
}
|
|
417
423
|
/**
|
|
418
|
-
* A frozen copy of a delegation with only the known fields, or `undefined`
|
|
419
|
-
*
|
|
420
|
-
*
|
|
424
|
+
* A frozen copy of a delegation with only the known fields, or `undefined` when
|
|
425
|
+
* a known field has the wrong type, `until` is not after `from`, or the
|
|
426
|
+
* delegate and the delegator are the same principal.
|
|
421
427
|
*/
|
|
422
428
|
function parseApprovalDelegation(input) {
|
|
423
429
|
const value = ownRecord(input);
|
|
@@ -475,8 +481,8 @@ function covers(entry, request, delegate, tenant, at) {
|
|
|
475
481
|
return entry.resources === void 0 || entry.resources.includes(request.resource.type);
|
|
476
482
|
}
|
|
477
483
|
/**
|
|
478
|
-
* The first active delegation under which `delegate` may approve `request`,
|
|
479
|
-
*
|
|
484
|
+
* The first active delegation under which `delegate` may approve `request`, or
|
|
485
|
+
* `undefined`. The delegator is resolved by `subjectFor` and checked with
|
|
480
486
|
* `assertApprover`, so relation and permission approvers use the delegator's
|
|
481
487
|
* facts. A throw, a missing option or a delegator the source does not name
|
|
482
488
|
* matches nobody. The delegator's own delegations are never read.
|
|
@@ -521,7 +527,61 @@ async function matchDelegation(request, delegate, options) {
|
|
|
521
527
|
}))).find((match) => match !== void 0);
|
|
522
528
|
}
|
|
523
529
|
//#endregion
|
|
530
|
+
//#region src/approvals/entity-tag.ts
|
|
531
|
+
/** The request without its resume `token`; every other field stays. */
|
|
532
|
+
function approvalView(request) {
|
|
533
|
+
const { token: _token, ...view } = request;
|
|
534
|
+
return view;
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* A strong RFC 9110 entity tag: the quoted `sha-256:` digest of
|
|
538
|
+
* `approvalView(request)` as RFC 8785 JSON. A field outside `ApprovalRequest`
|
|
539
|
+
* changes the tag, so hash the stored request as is.
|
|
540
|
+
*/
|
|
541
|
+
function approvalEntityTag(request) {
|
|
542
|
+
return `"${sha256Digest(canonicalJson(approvalView(request)))}"`;
|
|
543
|
+
}
|
|
544
|
+
//#endregion
|
|
524
545
|
//#region src/approvals/idempotency.ts
|
|
546
|
+
/**
|
|
547
|
+
* How long `approvalsHandler` keeps a response for a repeated
|
|
548
|
+
* `Idempotency-Key`.
|
|
549
|
+
*/
|
|
550
|
+
const IDEMPOTENCY_TTL_MS = 864e5;
|
|
551
|
+
/**
|
|
552
|
+
* The `IdempotencyStore` key for one approver's `Idempotency-Key`: keys never
|
|
553
|
+
* cross approvers.
|
|
554
|
+
*/
|
|
555
|
+
function idempotencyRecordKey(principalId, key) {
|
|
556
|
+
return `${principalId}\n${key}`;
|
|
557
|
+
}
|
|
558
|
+
function fingerprintOf(call) {
|
|
559
|
+
return `${call.action} ${call.id} ${sha256Digest(call.body)}`;
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* The record `approvalsHandler` stores after `call` answered `response`: the
|
|
563
|
+
* status, headers and body text, the call's fingerprint, and an expiry 24 hours
|
|
564
|
+
* after `now` (epoch milliseconds, default the clock).
|
|
565
|
+
*/
|
|
566
|
+
async function idempotencyRecord(input) {
|
|
567
|
+
return {
|
|
568
|
+
key: idempotencyRecordKey(input.principalId, input.key),
|
|
569
|
+
response: {
|
|
570
|
+
fingerprint: fingerprintOf(input.call),
|
|
571
|
+
status: input.response.status,
|
|
572
|
+
headers: [...input.response.headers.entries()],
|
|
573
|
+
body: await input.response.clone().text()
|
|
574
|
+
},
|
|
575
|
+
expiresAt: (input.now ?? nowMillis()) + IDEMPOTENCY_TTL_MS
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Whether a stored response came from the same call: a reused key with another
|
|
580
|
+
* call is refused with `422`.
|
|
581
|
+
*/
|
|
582
|
+
function matchesIdempotencyRecord(response, call) {
|
|
583
|
+
return response.fingerprint === fingerprintOf(call);
|
|
584
|
+
}
|
|
525
585
|
/** An in-process `IdempotencyStore`, for one instance and for tests. */
|
|
526
586
|
function memoryIdempotencyStore() {
|
|
527
587
|
const entries = /* @__PURE__ */ new Map();
|
|
@@ -588,7 +648,6 @@ function signApproval(request, signer, options = {}) {
|
|
|
588
648
|
}
|
|
589
649
|
//#endregion
|
|
590
650
|
//#region src/approvals/handler.ts
|
|
591
|
-
const IDEMPOTENCY_TTL_MS = 864e5;
|
|
592
651
|
const MAX_IDEMPOTENCY_KEY_LENGTH = 256;
|
|
593
652
|
function problem(status, detail) {
|
|
594
653
|
return problemResponse(statusProblem(status, detail));
|
|
@@ -602,14 +661,6 @@ function json(status, body, headers = {}) {
|
|
|
602
661
|
}
|
|
603
662
|
});
|
|
604
663
|
}
|
|
605
|
-
function viewOf(request) {
|
|
606
|
-
const { token: _token, ...view } = request;
|
|
607
|
-
return view;
|
|
608
|
-
}
|
|
609
|
-
/** A strong RFC 9110 entity tag: the `sha-256:` digest of the view's RFC 8785 JSON. */
|
|
610
|
-
function entityTag(request) {
|
|
611
|
-
return `"${sha256Digest(canonicalJson(viewOf(request)))}"`;
|
|
612
|
-
}
|
|
613
664
|
function entityTags(field) {
|
|
614
665
|
return field.split(",").map((tag) => tag.trim()).filter((tag) => tag !== "");
|
|
615
666
|
}
|
|
@@ -619,7 +670,7 @@ function ifMatchFails(request, current) {
|
|
|
619
670
|
if (field === null) return false;
|
|
620
671
|
const tags = entityTags(field);
|
|
621
672
|
if (tags.includes("*")) return false;
|
|
622
|
-
return !tags.includes(
|
|
673
|
+
return !tags.includes(approvalEntityTag(current));
|
|
623
674
|
}
|
|
624
675
|
/** RFC 9110 section 13.1.2: weak comparison. */
|
|
625
676
|
function ifNoneMatchHolds(request, etag) {
|
|
@@ -635,8 +686,8 @@ function decodeSegment(segment) {
|
|
|
635
686
|
}
|
|
636
687
|
}
|
|
637
688
|
/**
|
|
638
|
-
* The route the path names and the methods it allows. The handler mounts at
|
|
639
|
-
*
|
|
689
|
+
* The route the path names and the methods it allows. The handler mounts at any
|
|
690
|
+
* prefix, so a path reads from its last segments; a path naming none is
|
|
640
691
|
* `undefined` (`404`).
|
|
641
692
|
*/
|
|
642
693
|
function parseRoute(url) {
|
|
@@ -702,27 +753,16 @@ async function resolveSubject(request, resolve) {
|
|
|
702
753
|
return null;
|
|
703
754
|
}
|
|
704
755
|
}
|
|
705
|
-
function membershipTenants(subject) {
|
|
706
|
-
const principal = subject.principal;
|
|
707
|
-
if (principal === null) return [];
|
|
708
|
-
const tenants = /* @__PURE__ */ new Set();
|
|
709
|
-
if (principal.tenant !== void 0) tenants.add(principal.tenant);
|
|
710
|
-
for (const membership of principal.memberships ?? []) {
|
|
711
|
-
const tenant = rootMembershipId(membership);
|
|
712
|
-
if (tenant !== void 0) tenants.add(tenant);
|
|
713
|
-
}
|
|
714
|
-
return [...tenants];
|
|
715
|
-
}
|
|
716
|
-
function belongsToTenant(subject, tenant) {
|
|
717
|
-
return membershipTenants(subject).includes(tenant);
|
|
718
|
-
}
|
|
719
756
|
async function factsFor(request, subject, options) {
|
|
720
757
|
return {
|
|
721
758
|
relations: await approverRelations(request, subject, options),
|
|
722
759
|
permissions: await heldPermissions(request, subject, options.permdockFor)
|
|
723
760
|
};
|
|
724
761
|
}
|
|
725
|
-
/**
|
|
762
|
+
/**
|
|
763
|
+
* The caller as themselves, or the first delegation that makes them an
|
|
764
|
+
* approver.
|
|
765
|
+
*/
|
|
726
766
|
async function actingApprover(request, subject, requireDistinct, options) {
|
|
727
767
|
const facts = await factsFor(request, subject, options);
|
|
728
768
|
try {
|
|
@@ -770,7 +810,10 @@ function canView(request, subject, requireDistinct, options) {
|
|
|
770
810
|
if (request.resolvedBy === principal.id || (request.approvals ?? []).some((item) => item.by === principal.id)) return Promise.resolve(true);
|
|
771
811
|
return mayResolve(request, subject, requireDistinct, options);
|
|
772
812
|
}
|
|
773
|
-
/**
|
|
813
|
+
/**
|
|
814
|
+
* The requester and who answered: the signed approval carries the resume token,
|
|
815
|
+
* so only they read it.
|
|
816
|
+
*/
|
|
774
817
|
function party(request, principalId) {
|
|
775
818
|
return request.subject.principal?.id === principalId || request.resolvedBy === principalId || (request.approvals ?? []).some((item) => item.by === principalId);
|
|
776
819
|
}
|
|
@@ -811,7 +854,10 @@ function inboxScope(url, subject) {
|
|
|
811
854
|
}
|
|
812
855
|
const MAX_BODY_BYTES = 16384;
|
|
813
856
|
const MAX_NOTE_LENGTH = 2e3;
|
|
814
|
-
/**
|
|
857
|
+
/**
|
|
858
|
+
* An unreadable body is no note; an oversized body or note is refused, never
|
|
859
|
+
* truncated.
|
|
860
|
+
*/
|
|
815
861
|
async function readNote(request) {
|
|
816
862
|
if (!(request.headers.get("content-type") ?? "").includes("application/json")) return { text: "" };
|
|
817
863
|
const read = await readBodyText(request, MAX_BODY_BYTES);
|
|
@@ -865,14 +911,6 @@ function idempotencyKey(request) {
|
|
|
865
911
|
if (key === void 0 || key === "" || key.length > MAX_IDEMPOTENCY_KEY_LENGTH || /["\\]/u.test(key)) return { refusal: validationProblem("Idempotency-Key must be a quoted string of 1 to 256 characters") };
|
|
866
912
|
return { key };
|
|
867
913
|
}
|
|
868
|
-
async function stored(response, fingerprint) {
|
|
869
|
-
return {
|
|
870
|
-
fingerprint,
|
|
871
|
-
status: response.status,
|
|
872
|
-
headers: [...response.headers.entries()],
|
|
873
|
-
body: await response.clone().text()
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
914
|
function approvalsHandler(store, options) {
|
|
877
915
|
const requireDistinct = options.requireDistinctApprover === true;
|
|
878
916
|
const idempotency = options.idempotency ?? memoryIdempotencyStore();
|
|
@@ -898,8 +936,8 @@ function approvalsHandler(store, options) {
|
|
|
898
936
|
permissions: acting.permissions
|
|
899
937
|
} : void 0
|
|
900
938
|
}));
|
|
901
|
-
return json(200,
|
|
902
|
-
ETag:
|
|
939
|
+
return json(200, approvalView(resolved), {
|
|
940
|
+
ETag: approvalEntityTag(resolved),
|
|
903
941
|
...options.signer !== void 0 && resolved.status === "approved" ? signatureLink(url) : {}
|
|
904
942
|
});
|
|
905
943
|
};
|
|
@@ -933,7 +971,7 @@ function approvalsHandler(store, options) {
|
|
|
933
971
|
return (tenant === void 0 ? scoped.tenantless : tenants.has(tenant)) && await mayResolve(item, subject, requireDistinct, options);
|
|
934
972
|
}));
|
|
935
973
|
return json(200, compact({
|
|
936
|
-
items: page.items.filter((_, index) => eligible[index] === true).map(
|
|
974
|
+
items: page.items.filter((_, index) => eligible[index] === true).map(approvalView),
|
|
937
975
|
next: page.next
|
|
938
976
|
}), nextLink(url, page.next));
|
|
939
977
|
}
|
|
@@ -943,19 +981,19 @@ function approvalsHandler(store, options) {
|
|
|
943
981
|
principalId: principal.id
|
|
944
982
|
});
|
|
945
983
|
return json(200, compact({
|
|
946
|
-
items: page.items.map(
|
|
984
|
+
items: page.items.map(approvalView),
|
|
947
985
|
next: page.next
|
|
948
986
|
}), nextLink(url, page.next));
|
|
949
987
|
}
|
|
950
988
|
case "get": {
|
|
951
989
|
const current = await visible(route.id, subject);
|
|
952
990
|
if (current === null) return problem(404, "approval was not found");
|
|
953
|
-
const etag =
|
|
991
|
+
const etag = approvalEntityTag(current);
|
|
954
992
|
if (ifNoneMatchHolds(request, etag)) return new Response(null, {
|
|
955
993
|
status: 304,
|
|
956
994
|
headers: { ETag: etag }
|
|
957
995
|
});
|
|
958
|
-
return json(200,
|
|
996
|
+
return json(200, approvalView(current), { ETag: etag });
|
|
959
997
|
}
|
|
960
998
|
case "signature": {
|
|
961
999
|
const current = await findById(store, route.id);
|
|
@@ -973,15 +1011,27 @@ function approvalsHandler(store, options) {
|
|
|
973
1011
|
const read = await readNote(request);
|
|
974
1012
|
if (read.refusal !== void 0) return read.refusal;
|
|
975
1013
|
if (keyed.key === void 0) return await resolve(request, url, route, subject, read);
|
|
976
|
-
const
|
|
977
|
-
|
|
1014
|
+
const call = {
|
|
1015
|
+
action: route.kind,
|
|
1016
|
+
id: route.id,
|
|
1017
|
+
body: read.text
|
|
1018
|
+
};
|
|
1019
|
+
const key = idempotencyRecordKey(principal.id, keyed.key);
|
|
978
1020
|
const replay = await idempotency.get(key);
|
|
979
|
-
if (replay !== void 0) return replay
|
|
1021
|
+
if (replay !== void 0) return matchesIdempotencyRecord(replay, call) ? new Response(replay.body, {
|
|
980
1022
|
status: replay.status,
|
|
981
1023
|
headers: replay.headers.map(([name, value]) => [name, value])
|
|
982
1024
|
}) : problem(422, "Idempotency-Key was used for another request");
|
|
983
1025
|
const response = await resolve(request, url, route, subject, read);
|
|
984
|
-
if (response.ok)
|
|
1026
|
+
if (response.ok) {
|
|
1027
|
+
const record = await idempotencyRecord({
|
|
1028
|
+
principalId: principal.id,
|
|
1029
|
+
key: keyed.key,
|
|
1030
|
+
call,
|
|
1031
|
+
response
|
|
1032
|
+
});
|
|
1033
|
+
await idempotency.set(record.key, record.response, record.expiresAt);
|
|
1034
|
+
}
|
|
985
1035
|
return response;
|
|
986
1036
|
}
|
|
987
1037
|
default: return problem(404, `unknown approvals route ${String(route)}`);
|
|
@@ -992,4 +1042,4 @@ function approvalsHandler(store, options) {
|
|
|
992
1042
|
};
|
|
993
1043
|
}
|
|
994
1044
|
//#endregion
|
|
995
|
-
export {
|
|
1045
|
+
export { accessReviewerEligible as _, idempotencyRecordKey as a, approvalEntityTag as c, memoryApprovalDelegationSource as d, parseApprovalDelegation as f, accessReviewsHandler as g, startAccessReview as h, idempotencyRecord as i, approvalView as l, pageAccessReviewItems as m, approvalSignatureClaims as n, matchesIdempotencyRecord as o, memoryAccessReviewStore as p, signApproval as r, memoryIdempotencyStore as s, approvalsHandler as t, matchDelegation as u, decideAccessReviewItem as v };
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { n as isReadonlyArray } from "./compact-CAf557ZB.js";
|
|
2
2
|
//#region src/core/approvers.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Approves when the approver holds `permission` in the request's tenant (any
|
|
5
|
+
* role, custom roles included).
|
|
6
|
+
*/
|
|
4
7
|
function holder(permission) {
|
|
5
8
|
const key = permission?.key;
|
|
6
9
|
if (typeof key !== "string" || key === "") throw new Error("PermDock: holder() needs a permission");
|
|
@@ -38,7 +41,10 @@ function flattenApprovers(input) {
|
|
|
38
41
|
if (isReadonlyArray(input)) return input;
|
|
39
42
|
return [input];
|
|
40
43
|
}
|
|
41
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Every approver `input` names, inside `anyOf` groups too, for reading facts
|
|
46
|
+
* and labels.
|
|
47
|
+
*/
|
|
42
48
|
function approverLeaves(input) {
|
|
43
49
|
return flattenApprovers(input).flatMap((item) => item.kind === "any-of" ? item.of.flatMap((entry) => approverLeaves(entry)) : [item]);
|
|
44
50
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given, u as permissionsFlag } from "./flags-
|
|
2
|
+
import { c as given, u as permissionsFlag } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/arazzo.ts
|
|
4
4
|
const check = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -21,7 +21,7 @@ const check = defineLeaf({
|
|
|
21
21
|
...permissionsFlag
|
|
22
22
|
},
|
|
23
23
|
async run(ctx, { flags }) {
|
|
24
|
-
return (await import("./arazzo-
|
|
24
|
+
return (await import("./arazzo-B5-ulWif.js")).runArazzo({
|
|
25
25
|
cwd: ctx.cwd,
|
|
26
26
|
config: ctx.config,
|
|
27
27
|
doc: given(flags.doc),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as missingInput } from "./errors-
|
|
3
|
-
import { i as readJsonFile } from "./files-
|
|
4
|
-
import { t as ARAZZO_REPORT_SCHEMA } from "./version-
|
|
5
|
-
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-
|
|
6
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
1
|
+
import { _ as arazzoFindings } from "./src-DZ0l9UAg.js";
|
|
2
|
+
import { c as missingInput } from "./errors-Vpu6rKHl.js";
|
|
3
|
+
import { i as readJsonFile } from "./files-BSjrtIHw.js";
|
|
4
|
+
import { t as ARAZZO_REPORT_SCHEMA } from "./version-DMQ0dnN5.js";
|
|
5
|
+
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
|
|
6
|
+
import { t as DOCS_BASE } from "./manifest-Cgiq5oqc.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
8
8
|
import { resolve } from "node:path";
|
|
9
9
|
//#region src/cli/arazzo.ts
|
|
@@ -1,5 +1,115 @@
|
|
|
1
|
-
import { n as CliError } from "./errors-
|
|
2
|
-
|
|
1
|
+
import { n as CliError } from "./errors-Vpu6rKHl.js";
|
|
2
|
+
//#region ../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/esm/mod.js
|
|
3
|
+
const peq = /* @__PURE__ */ new Uint32Array(65536);
|
|
4
|
+
const myers_32 = (a, b) => {
|
|
5
|
+
const n = a.length;
|
|
6
|
+
const m = b.length;
|
|
7
|
+
const lst = 1 << n - 1;
|
|
8
|
+
let pv = -1;
|
|
9
|
+
let mv = 0;
|
|
10
|
+
let sc = n;
|
|
11
|
+
let i = n;
|
|
12
|
+
while (i--) peq[a.charCodeAt(i)] |= 1 << i;
|
|
13
|
+
for (i = 0; i < m; i++) {
|
|
14
|
+
let eq = peq[b.charCodeAt(i)];
|
|
15
|
+
const xv = eq | mv;
|
|
16
|
+
eq |= (eq & pv) + pv ^ pv;
|
|
17
|
+
mv |= ~(eq | pv);
|
|
18
|
+
pv &= eq;
|
|
19
|
+
if (mv & lst) sc++;
|
|
20
|
+
if (pv & lst) sc--;
|
|
21
|
+
mv = mv << 1 | 1;
|
|
22
|
+
pv = pv << 1 | ~(xv | mv);
|
|
23
|
+
mv &= xv;
|
|
24
|
+
}
|
|
25
|
+
i = n;
|
|
26
|
+
while (i--) peq[a.charCodeAt(i)] = 0;
|
|
27
|
+
return sc;
|
|
28
|
+
};
|
|
29
|
+
const myers_x = (b, a) => {
|
|
30
|
+
const n = a.length;
|
|
31
|
+
const m = b.length;
|
|
32
|
+
const mhc = [];
|
|
33
|
+
const phc = [];
|
|
34
|
+
const hsize = Math.ceil(n / 32);
|
|
35
|
+
const vsize = Math.ceil(m / 32);
|
|
36
|
+
for (let i = 0; i < hsize; i++) {
|
|
37
|
+
phc[i] = -1;
|
|
38
|
+
mhc[i] = 0;
|
|
39
|
+
}
|
|
40
|
+
let j = 0;
|
|
41
|
+
for (; j < vsize - 1; j++) {
|
|
42
|
+
let mv = 0;
|
|
43
|
+
let pv = -1;
|
|
44
|
+
const start = j * 32;
|
|
45
|
+
const vlen = Math.min(32, m) + start;
|
|
46
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] |= 1 << k;
|
|
47
|
+
for (let i = 0; i < n; i++) {
|
|
48
|
+
const eq = peq[a.charCodeAt(i)];
|
|
49
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
50
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
51
|
+
const xv = eq | mv;
|
|
52
|
+
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
53
|
+
let ph = mv | ~(xh | pv);
|
|
54
|
+
let mh = pv & xh;
|
|
55
|
+
if (ph >>> 31 ^ pb) phc[i / 32 | 0] ^= 1 << i;
|
|
56
|
+
if (mh >>> 31 ^ mb) mhc[i / 32 | 0] ^= 1 << i;
|
|
57
|
+
ph = ph << 1 | pb;
|
|
58
|
+
mh = mh << 1 | mb;
|
|
59
|
+
pv = mh | ~(xv | ph);
|
|
60
|
+
mv = ph & xv;
|
|
61
|
+
}
|
|
62
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] = 0;
|
|
63
|
+
}
|
|
64
|
+
let mv = 0;
|
|
65
|
+
let pv = -1;
|
|
66
|
+
const start = j * 32;
|
|
67
|
+
const vlen = Math.min(32, m - start) + start;
|
|
68
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] |= 1 << k;
|
|
69
|
+
let score = m;
|
|
70
|
+
for (let i = 0; i < n; i++) {
|
|
71
|
+
const eq = peq[a.charCodeAt(i)];
|
|
72
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
73
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
74
|
+
const xv = eq | mv;
|
|
75
|
+
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
76
|
+
let ph = mv | ~(xh | pv);
|
|
77
|
+
let mh = pv & xh;
|
|
78
|
+
score += ph >>> m - 1 & 1;
|
|
79
|
+
score -= mh >>> m - 1 & 1;
|
|
80
|
+
if (ph >>> 31 ^ pb) phc[i / 32 | 0] ^= 1 << i;
|
|
81
|
+
if (mh >>> 31 ^ mb) mhc[i / 32 | 0] ^= 1 << i;
|
|
82
|
+
ph = ph << 1 | pb;
|
|
83
|
+
mh = mh << 1 | mb;
|
|
84
|
+
pv = mh | ~(xv | ph);
|
|
85
|
+
mv = ph & xv;
|
|
86
|
+
}
|
|
87
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] = 0;
|
|
88
|
+
return score;
|
|
89
|
+
};
|
|
90
|
+
const distance = (a, b) => {
|
|
91
|
+
if (a.length < b.length) {
|
|
92
|
+
const tmp = b;
|
|
93
|
+
b = a;
|
|
94
|
+
a = tmp;
|
|
95
|
+
}
|
|
96
|
+
if (b.length === 0) return a.length;
|
|
97
|
+
if (a.length <= 32) return myers_32(a, b);
|
|
98
|
+
return myers_x(a, b);
|
|
99
|
+
};
|
|
100
|
+
const closest = (str, arr) => {
|
|
101
|
+
let min_distance = Infinity;
|
|
102
|
+
let min_index = 0;
|
|
103
|
+
for (let i = 0; i < arr.length; i++) {
|
|
104
|
+
const dist = distance(str, arr[i]);
|
|
105
|
+
if (dist < min_distance) {
|
|
106
|
+
min_distance = dist;
|
|
107
|
+
min_index = i;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return arr[min_index];
|
|
111
|
+
};
|
|
112
|
+
//#endregion
|
|
3
113
|
//#region src/cli/core/context.ts
|
|
4
114
|
/** Flags every command accepts, read from anywhere before `--`. */
|
|
5
115
|
const GLOBAL_FLAGS = {
|
|
@@ -75,7 +185,10 @@ function suggestion(given, names) {
|
|
|
75
185
|
const best = didYouMean(given, names);
|
|
76
186
|
return best === void 0 ? "" : ` Did you mean ${best}?`;
|
|
77
187
|
}
|
|
78
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* Every spelling a flag set accepts: `--name`, `--no-name` for booleans, `-x`
|
|
190
|
+
* aliases.
|
|
191
|
+
*/
|
|
79
192
|
function lookupOf(flags) {
|
|
80
193
|
const lookup = /* @__PURE__ */ new Map();
|
|
81
194
|
for (const [name, flag] of Object.entries(flags)) {
|
|
@@ -97,7 +210,10 @@ function lookupOf(flags) {
|
|
|
97
210
|
function flagSpellings(flags) {
|
|
98
211
|
return [...lookupOf(flags).keys()];
|
|
99
212
|
}
|
|
100
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* A value never starts with `-`, bar `-` itself: `--out --check` is a bare
|
|
215
|
+
* `--out`.
|
|
216
|
+
*/
|
|
101
217
|
function isValue(token) {
|
|
102
218
|
return token !== void 0 && (token === "-" || !token.startsWith("-"));
|
|
103
219
|
}
|
|
@@ -108,8 +224,8 @@ function checkEnum(command, name, flag, value) {
|
|
|
108
224
|
if (flag.type === "enum" && !flag.options.includes(value)) throw new CliError("usage", `${command}: --${name} ${value === "" ? "needs a value" : `'${value}' is not one of ${flag.options.join(", ")}`}.${suggestion(value, flag.options)}`, { code: "invalid_value" });
|
|
109
225
|
}
|
|
110
226
|
/**
|
|
111
|
-
* Splits argv into the flags `flags` declares, positionals and the tokens
|
|
112
|
-
*
|
|
227
|
+
* Splits argv into the flags `flags` declares, positionals and the tokens after
|
|
228
|
+
* `--`. An undeclared flag is a usage error naming the nearest one.
|
|
113
229
|
* `--name=value`, `--name value`, `--no-name` and `-x` aliases all read.
|
|
114
230
|
*/
|
|
115
231
|
function parseFlags(command, argv, flags) {
|
|
@@ -134,11 +250,12 @@ function parseFlags(command, argv, flags) {
|
|
|
134
250
|
const flag = flags[found.name];
|
|
135
251
|
if (flag === void 0) continue;
|
|
136
252
|
if (flag.type === "boolean") {
|
|
137
|
-
if (eq
|
|
253
|
+
if (eq === -1) values.set(found.name, !found.negated);
|
|
254
|
+
else {
|
|
138
255
|
const raw = token.slice(eq + 1);
|
|
139
256
|
if (raw !== "true" && raw !== "false") throw new CliError("usage", `${command}: ${spelling} takes true or false, got '${raw}'`, { code: "invalid_value" });
|
|
140
257
|
values.set(found.name, raw === "true" !== found.negated);
|
|
141
|
-
}
|
|
258
|
+
}
|
|
142
259
|
continue;
|
|
143
260
|
}
|
|
144
261
|
let value;
|
package/dist/astro/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as OperationInput, t as Operation } from "../operations-
|
|
4
|
-
import {
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
6
|
-
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-
|
|
1
|
+
import { Gt as Snapshot, 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 OperationInput, t as Operation } from "../operations-Ci_rT6Uo.js";
|
|
4
|
+
import { a as PermDock } from "../permdock-B6Sf4T_S.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CIlpSA2G.js";
|
|
6
|
+
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-C1DCvpqV.js";
|
|
7
7
|
import { APIContext, MiddlewareHandler } from "astro";
|
|
8
8
|
//#region src/astro/create.d.ts
|
|
9
9
|
type AstroPermDockOptions<TUser = unknown> = FetchAdapterOptions<APIContext, TUser>;
|
|
@@ -12,7 +12,10 @@ type AstroPermDockLocals<TData = unknown, V extends PolicyVocabulary = PolicyVoc
|
|
|
12
12
|
readonly permdock: PermDock<V>;
|
|
13
13
|
readonly permdockData: TData;
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The context a wrapped endpoint receives: its own `APIContext` with typed
|
|
17
|
+
* `locals`.
|
|
18
|
+
*/
|
|
16
19
|
type AstroPermDockContext<TContext extends APIContext = APIContext, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TContext & {
|
|
17
20
|
readonly locals: AstroPermDockLocals<TData, V>;
|
|
18
21
|
};
|
|
@@ -23,18 +26,33 @@ type AstroProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
23
26
|
<TOperation extends Operation>(operation: TOperation, input?: ContextReader<APIContext, OperationInput<TOperation>>, protectOptions?: ProtectOptions): AstroGuarded<unknown, V>;
|
|
24
27
|
};
|
|
25
28
|
type AstroPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
26
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* `onRequest` in `src/middleware.ts`: sets `context.locals.permdock`; a bad
|
|
31
|
+
* Web Bot Auth signature is a `401`.
|
|
32
|
+
*/
|
|
27
33
|
readonly middleware: () => MiddlewareHandler;
|
|
28
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* `export const DELETE = protect(permissions.post.delete,
|
|
36
|
+
* loadPost)(handler)`.
|
|
37
|
+
*/
|
|
29
38
|
readonly protect: AstroProtect<V>;
|
|
30
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Types `context.locals.permdock` for an endpoint and answers a thrown
|
|
41
|
+
* PermDock error with Problem Details.
|
|
42
|
+
*/
|
|
31
43
|
readonly withPermDock: AstroGuarded<unknown, V>;
|
|
32
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* The instance for an endpoint, an action or a page's frontmatter (`Astro` is
|
|
46
|
+
* an `APIContext`).
|
|
47
|
+
*/
|
|
33
48
|
readonly getPermDock: (context: APIContext) => Promise<PermDock<V>>;
|
|
34
49
|
/** The snapshot a page passes to a `permdock/react` island. */
|
|
35
50
|
readonly getSnapshot: (context: APIContext, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
36
51
|
readonly connection: (context: APIContext, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
37
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* `export const { GET, POST } = permdockHandler()` in
|
|
54
|
+
* `src/pages/api/permdock.ts`.
|
|
55
|
+
*/
|
|
38
56
|
readonly permdockHandler: () => PermDockHandlers<APIContext>;
|
|
39
57
|
readonly openapi: OpenApiHooks;
|
|
40
58
|
};
|
package/dist/astro/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as guardedRoute, r as instanceRoute, t as fetchAdapter } from "../fetch-adapter-
|
|
1
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
|
|
2
|
+
import { n as guardedRoute, r as instanceRoute, t as fetchAdapter } from "../fetch-adapter-JL43jD3E.js";
|
|
3
3
|
//#region src/astro/create.ts
|
|
4
4
|
const route = {
|
|
5
5
|
context: (context) => context,
|