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
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { c as listPermissions } from "./permission-registry-B8tYxPIt.js";
|
|
2
|
+
import { i as configError } from "./errors-Vpu6rKHl.js";
|
|
3
|
+
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
|
|
4
|
+
import { i as isModuleKey, n as MODULE_KEYS } from "./config-shape-ykV0Vm2n.js";
|
|
5
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
6
|
+
import { dirname, relative, resolve } from "node:path";
|
|
7
|
+
import { parseSync } from "oxc-parser";
|
|
8
|
+
//#region src/cli/project/module-values.ts
|
|
9
|
+
/** The export each module key is read from, as `load.ts` reads it. */
|
|
10
|
+
const EXPORT_OF = {
|
|
11
|
+
policy: "policy",
|
|
12
|
+
permissions: "permissions",
|
|
13
|
+
operations: "operations"
|
|
14
|
+
};
|
|
15
|
+
const EXTENSIONS = [
|
|
16
|
+
".ts",
|
|
17
|
+
".tsx",
|
|
18
|
+
".mts",
|
|
19
|
+
".js",
|
|
20
|
+
".mjs",
|
|
21
|
+
".jsx"
|
|
22
|
+
];
|
|
23
|
+
function isFile(path) {
|
|
24
|
+
return existsSync(path) && statSync(path).isFile();
|
|
25
|
+
}
|
|
26
|
+
/** A relative specifier resolved the way a TypeScript bundler resolves it. */
|
|
27
|
+
function resolveRelative(from, specifier) {
|
|
28
|
+
const base = resolve(dirname(from), specifier);
|
|
29
|
+
return [
|
|
30
|
+
base,
|
|
31
|
+
base.replace(/\.js$/u, ".ts").replace(/\.mjs$/u, ".mts"),
|
|
32
|
+
...EXTENSIONS.map((extension) => `${base}${extension}`),
|
|
33
|
+
...EXTENSIONS.map((extension) => resolve(base, `index${extension}`))
|
|
34
|
+
].find(isFile);
|
|
35
|
+
}
|
|
36
|
+
function relativeImports(file) {
|
|
37
|
+
const parsed = parseSync(file, readFileSync(file, "utf8"));
|
|
38
|
+
return [...new Set(parsed.module.staticImports.map((entry) => entry.moduleRequest.value).filter((specifier) => specifier.startsWith(".")))];
|
|
39
|
+
}
|
|
40
|
+
function fieldOf(value, key) {
|
|
41
|
+
return Reflect.get(value, key);
|
|
42
|
+
}
|
|
43
|
+
function leafKeys(value) {
|
|
44
|
+
try {
|
|
45
|
+
return listPermissions(asPermissionTree(value)).map((leaf) => leaf.key).toSorted().join(",");
|
|
46
|
+
} catch {
|
|
47
|
+
return "";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Whether `exported` is the value the config passed. A module evaluated twice
|
|
52
|
+
* (once natively, once through jiti, or fresh under `--watch`) yields a second
|
|
53
|
+
* object, so a policy compares by fingerprint and a tree by its leaf keys.
|
|
54
|
+
*/
|
|
55
|
+
function sameValue(key, value, exported) {
|
|
56
|
+
if (exported === value) return true;
|
|
57
|
+
if (exported === null || typeof exported !== "object") return false;
|
|
58
|
+
switch (key) {
|
|
59
|
+
case "policy": {
|
|
60
|
+
const fingerprint = fieldOf(value, "fingerprint");
|
|
61
|
+
return typeof fingerprint === "string" && fingerprint === fieldOf(exported, "fingerprint");
|
|
62
|
+
}
|
|
63
|
+
case "permissions": return leafKeys(value) !== "" && leafKeys(value) === leafKeys(exported);
|
|
64
|
+
case "operations": {
|
|
65
|
+
const names = Object.keys(value).toSorted().join(",");
|
|
66
|
+
return names !== "" && names === Object.keys(exported).toSorted().join(",");
|
|
67
|
+
}
|
|
68
|
+
default: return key;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The module path, relative to `cwd`, of the module the config file imports
|
|
73
|
+
* `value` from as its `policy`, `permissions` or `operations` export.
|
|
74
|
+
*/
|
|
75
|
+
async function traceModuleValue(input) {
|
|
76
|
+
const name = EXPORT_OF[input.key];
|
|
77
|
+
for (const specifier of relativeImports(input.file)) {
|
|
78
|
+
const abs = resolveRelative(input.file, specifier);
|
|
79
|
+
if (abs === void 0) continue;
|
|
80
|
+
const mod = await loadModule(abs, input.options).catch(() => void 0);
|
|
81
|
+
if (mod !== void 0 && sameValue(input.key, input.value, pickNamed(mod, [name]))) {
|
|
82
|
+
const path = relative(input.cwd, abs).replaceAll("\\", "/");
|
|
83
|
+
return path.startsWith(".") ? path : `./${path}`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
throw configError(`PermDock CLI: ${input.display}: ${input.key} is a value no relative import of the config exports as '${name}' or default; import it from its module, or set ${input.key} to the module path`);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* `config` with each `policy`, `permissions` or `operations` value replaced by
|
|
90
|
+
* the path of the module the config file imports it from, so every command
|
|
91
|
+
* reads one form.
|
|
92
|
+
*/
|
|
93
|
+
async function traceModuleValues(input) {
|
|
94
|
+
const traced = { ...input.config };
|
|
95
|
+
for (const key of Object.keys(MODULE_KEYS)) {
|
|
96
|
+
const value = input.config[key];
|
|
97
|
+
if (!isModuleKey(key) || value === null || typeof value !== "object") continue;
|
|
98
|
+
traced[key] = await traceModuleValue({
|
|
99
|
+
...input,
|
|
100
|
+
key,
|
|
101
|
+
value
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return traced;
|
|
105
|
+
}
|
|
106
|
+
//#endregion
|
|
107
|
+
export { traceModuleValues };
|
package/dist/nest/index.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { T as Policy,
|
|
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, 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 { r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
|
|
8
8
|
import { CanActivate, DynamicModule, ExceptionFilter, ExecutionContext, Type } from "@nestjs/common";
|
|
9
9
|
//#region src/nest/http.d.ts
|
|
10
10
|
/**
|
|
11
11
|
* `@nestjs/platform-express` hands the guard an `IncomingMessage`;
|
|
12
|
-
* `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is
|
|
12
|
+
* `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is
|
|
13
|
+
* `raw`.
|
|
13
14
|
*/
|
|
14
15
|
export declare function toRequest(req: NodeRequest): Request;
|
|
15
16
|
//#endregion
|
|
@@ -30,18 +31,27 @@ type NestPermDockOptions<TUser = unknown> = ServerAdapterOptions<NestRequest, TU
|
|
|
30
31
|
};
|
|
31
32
|
/** A gateway client: Socket.IO (`emit`, `disconnect`) or `ws` (`close`). */
|
|
32
33
|
type NestSocket = {
|
|
33
|
-
emit
|
|
34
|
-
disconnect
|
|
35
|
-
close
|
|
34
|
+
emit?: (event: string, payload: unknown) => unknown;
|
|
35
|
+
disconnect?: (close?: boolean) => unknown;
|
|
36
|
+
close?: (code?: number, reason?: string) => unknown;
|
|
36
37
|
};
|
|
37
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* `Protect(null, data?, { oauthScopes })` needs a principal and one of the
|
|
40
|
+
* OAuth scopes, but no permission.
|
|
41
|
+
*/
|
|
38
42
|
type NestProtect = (permission: Permission | null, data?: (req: NestRequest) => unknown, protectOptions?: ProtectOptions) => ClassDecorator & MethodDecorator;
|
|
39
43
|
type NestHandlerOptions = {
|
|
40
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Controller path; may hold route params such as `:org`. Default
|
|
46
|
+
* `api/permdock`.
|
|
47
|
+
*/
|
|
41
48
|
readonly path?: string;
|
|
42
49
|
};
|
|
43
50
|
type PermDockModuleOptions = {
|
|
44
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* `"global"` registers `PermDockGuard` as `APP_GUARD`, so every `Protect`
|
|
53
|
+
* rule runs without `UseGuards`.
|
|
54
|
+
*/
|
|
45
55
|
readonly guard?: "global";
|
|
46
56
|
};
|
|
47
57
|
type NestPermDock = {
|
package/dist/nest/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { n as PermDockValidationError } from "../validation-error-
|
|
3
|
-
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-
|
|
4
|
-
import { c as writeReply, r as hasCredentials } from "../http-
|
|
5
|
-
import {
|
|
6
|
-
import { t as problemFromError } from "../map-error-
|
|
7
|
-
import { a as socketConnection, r as bindKernel } from "../bind-
|
|
8
|
-
import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-
|
|
9
|
-
import { n as sendResponse, r as toRequest$1, t as isServerResponse } from "../http-
|
|
2
|
+
import { n as PermDockValidationError } from "../validation-error-CYg2kJEw.js";
|
|
3
|
+
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-B6R_lg2a.js";
|
|
4
|
+
import { c as writeReply, r as hasCredentials } from "../http-DKLXrFGk.js";
|
|
5
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
|
|
6
|
+
import { t as problemFromError } from "../map-error-pasIGqMT.js";
|
|
7
|
+
import { a as socketConnection, r as bindKernel } from "../bind-D_sZSVA3.js";
|
|
8
|
+
import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CDvF0sJm.js";
|
|
9
|
+
import { n as sendResponse, r as toRequest$1, t as isServerResponse } from "../http-DH94eh6f.js";
|
|
10
10
|
import { Catch, Controller, Get, Inject, Injectable, Module, Post, Req, Res, createParamDecorator } from "@nestjs/common";
|
|
11
11
|
import { APP_FILTER, APP_GUARD, Reflector } from "@nestjs/core";
|
|
12
12
|
//#region src/nest/decorate.ts
|
|
@@ -35,7 +35,8 @@ function isFastifyReply(value) {
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* `@nestjs/platform-express` hands the guard an `IncomingMessage`;
|
|
38
|
-
* `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is
|
|
38
|
+
* `@nestjs/platform-fastify` hands it a `FastifyRequest` whose stream is
|
|
39
|
+
* `raw`.
|
|
39
40
|
*/
|
|
40
41
|
function toRequest(req) {
|
|
41
42
|
if (isReadable(req)) return toRequest$1(req);
|
|
@@ -75,7 +76,10 @@ function applyParameter(cls, key, index, decorator) {
|
|
|
75
76
|
function hasEmit(value) {
|
|
76
77
|
return typeof value === "object" && value !== null && typeof value.emit === "function";
|
|
77
78
|
}
|
|
78
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* One call per loader for a request, so class and method rules naming the same
|
|
81
|
+
* loader share its row.
|
|
82
|
+
*/
|
|
79
83
|
function loadsFor(req) {
|
|
80
84
|
const loaded = /* @__PURE__ */ new Map();
|
|
81
85
|
return (loader) => {
|
|
@@ -130,7 +134,10 @@ function createPermDock(policy, options) {
|
|
|
130
134
|
});
|
|
131
135
|
return conn;
|
|
132
136
|
});
|
|
133
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* Decides each rule for a gateway message against the client's connection, as
|
|
139
|
+
* `protect` does for HTTP.
|
|
140
|
+
*/
|
|
134
141
|
const checkMessage = async (rules, conn, req) => {
|
|
135
142
|
const request = req === void 0 ? void 0 : bind(req);
|
|
136
143
|
const load = loadsFor(req);
|
package/dist/next/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as PermissionBoundaryState } from "../boundary-
|
|
1
|
+
import { t as PermissionBoundaryState } from "../boundary-C9ck-3uK.js";
|
|
2
2
|
import { ComponentType, ReactNode } from "react";
|
|
3
3
|
//#region src/next/client.d.ts
|
|
4
4
|
/** A fallback node, or a function of what was refused. */
|
|
@@ -6,7 +6,10 @@ export type PermissionBoundaryFallback = ReactNode | ((state: PermissionBoundary
|
|
|
6
6
|
export type PermissionBoundaryProps = {
|
|
7
7
|
/** Rendered in place of the children when one throws `PermDockDeniedError`. */
|
|
8
8
|
readonly denied?: PermissionBoundaryFallback;
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Rendered when a child throws `PermDockApprovalRequiredError`; defaults to
|
|
11
|
+
* `denied`.
|
|
12
|
+
*/
|
|
10
13
|
readonly approval?: PermissionBoundaryFallback;
|
|
11
14
|
};
|
|
12
15
|
/**
|
package/dist/next/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-
|
|
2
|
+
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BV3O1eud.js";
|
|
3
3
|
import { createContext, useContext } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import * as nextError from "next/error.js";
|
package/dist/next/index.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { m as ApprovalStore } from "../types-
|
|
5
|
-
import { t as InstanceOptions } from "../instance-options-
|
|
6
|
-
import { n as PermDockWrap } from "../wrap-
|
|
7
|
-
import { o as OtelWrap } from "../types-
|
|
8
|
-
import { n as DescribeMessages } from "../describe-
|
|
9
|
-
import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-
|
|
1
|
+
import { Bn as DenialReason, Gt as Snapshot, Ln as Decision, T as Policy, j as PolicyVocabulary, lr as Subject, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock, d as UncheckedData, s as RowData } from "../permdock-B6Sf4T_S.js";
|
|
4
|
+
import { m as ApprovalStore } from "../types-B_tiYvk8.js";
|
|
5
|
+
import { t as InstanceOptions } from "../instance-options-B0KXqTrJ.js";
|
|
6
|
+
import { n as PermDockWrap } from "../wrap-DlJE3gS_.js";
|
|
7
|
+
import { o as OtelWrap } from "../types-DHKPcqzr.js";
|
|
8
|
+
import { n as DescribeMessages } from "../describe-ByS9LgHK.js";
|
|
9
|
+
import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-BAXZ0KOp.js";
|
|
10
|
+
import { n as ProtectedAction, t as ActionResult } from "../action-result-CL-QCITA.js";
|
|
10
11
|
import { ReactElement, ReactNode } from "react";
|
|
12
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
11
13
|
//#region src/next/types.d.ts
|
|
12
14
|
type NextSubjectInput = unknown;
|
|
13
15
|
type NextPermDockOptions<TUser = NextSubjectInput> = InstanceOptions & {
|
|
@@ -18,12 +20,15 @@ type NextPermDockOptions<TUser = NextSubjectInput> = InstanceOptions & {
|
|
|
18
20
|
readonly store?: ApprovalStore;
|
|
19
21
|
/** `(permdock) => withOtel(permdock, options)` from `permdock/otel`. */
|
|
20
22
|
readonly otel?: OtelWrap;
|
|
21
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Wraps each instance after `otel`; build it with `wrapPermDock` to cover
|
|
25
|
+
* derived instances.
|
|
26
|
+
*/
|
|
22
27
|
readonly wrap?: PermDockWrap;
|
|
23
28
|
/**
|
|
24
|
-
* Where `PermDockProvider` sends checks the snapshot cannot answer; default
|
|
25
|
-
* `false` is snapshot-only: no `permdockHandler` route, and
|
|
26
|
-
* reason `server-only`.
|
|
29
|
+
* Where `PermDockProvider` sends checks the snapshot cannot answer; default
|
|
30
|
+
* `/api/permdock`. `false` is snapshot-only: no `permdockHandler` route, and
|
|
31
|
+
* those checks are denied with reason `server-only`.
|
|
27
32
|
*/
|
|
28
33
|
readonly endpoint?: string | false;
|
|
29
34
|
};
|
|
@@ -35,7 +40,10 @@ type GetSnapshotQuery = GetPermDockQuery & {
|
|
|
35
40
|
readonly [key: string]: unknown;
|
|
36
41
|
})[];
|
|
37
42
|
readonly tenants?: "all";
|
|
38
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Tags added next to `snapshotTag(sub)`, such as the app's own organisation
|
|
45
|
+
* tag.
|
|
46
|
+
*/
|
|
39
47
|
readonly tags?: readonly string[];
|
|
40
48
|
};
|
|
41
49
|
type PermissionRequirementOptions = GetPermDockQuery & {
|
|
@@ -59,7 +67,10 @@ type NextPermDockProviderProps = {
|
|
|
59
67
|
readonly tenants?: "all";
|
|
60
68
|
/** Overrides the factory's `endpoint`; `false` is snapshot-only. */
|
|
61
69
|
readonly endpoint?: string | false;
|
|
62
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Suspends permission readers until the snapshot streams in, instead of
|
|
72
|
+
* answering `pending`.
|
|
73
|
+
*/
|
|
63
74
|
readonly suspend?: boolean;
|
|
64
75
|
/**
|
|
65
76
|
* What every `<Protected>` below renders for a slot it leaves out. Nodes
|
|
@@ -79,18 +90,39 @@ type PermDockHandler = {
|
|
|
79
90
|
readonly POST: (request: Request) => Promise<Response>;
|
|
80
91
|
readonly GET: (request: Request) => Promise<Response>;
|
|
81
92
|
};
|
|
93
|
+
type ProtectActionOptions<TInput, TRow> = {
|
|
94
|
+
/** Validates the action's argument before anything else runs. */
|
|
95
|
+
readonly input: StandardSchemaV1<unknown, TInput>;
|
|
96
|
+
/** The row to decide on; `null` or `undefined` answers `404`. */
|
|
97
|
+
readonly data?: (input: TInput) => TRow | null | undefined | Promise<TRow | null | undefined>;
|
|
98
|
+
/** The tenant to build the instance for; default the factory's `tenant`. */
|
|
99
|
+
readonly tenant?: (input: TInput) => string | undefined;
|
|
100
|
+
};
|
|
101
|
+
type ProtectedActionContext<TRow, V extends PolicyVocabulary> = {
|
|
102
|
+
readonly permdock: PermDock<V>;
|
|
103
|
+
readonly decision: Extract<Decision, {
|
|
104
|
+
readonly outcome: "granted";
|
|
105
|
+
}>;
|
|
106
|
+
/** The loaded row; `undefined` without a `data` loader. */
|
|
107
|
+
readonly data: TRow;
|
|
108
|
+
};
|
|
109
|
+
type ProtectedActionHandler<TInput, TRow, TResult, V extends PolicyVocabulary> = (input: TInput, context: ProtectedActionContext<TRow, V>) => TResult | Promise<TResult>;
|
|
110
|
+
type ProtectAction<V extends PolicyVocabulary> = <TInput, TRow = undefined>(permission: Permission, options: ProtectActionOptions<TInput, TRow>) => <TResult>(handler: ProtectedActionHandler<TInput, TRow, TResult, V>) => ProtectedAction<Awaited<TResult>>;
|
|
82
111
|
type NextPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
83
112
|
readonly getPermDock: (query?: GetPermDockQuery) => Promise<PermDock<V>>;
|
|
84
113
|
/**
|
|
85
|
-
* `{ allowed, status: 'ready', decision }`. Any failure to build the
|
|
86
|
-
*
|
|
87
|
-
*
|
|
114
|
+
* `{ allowed, status: 'ready', decision }`. Any failure to build the instance
|
|
115
|
+
* denies; Next.js interrupts (`redirect()`, `notFound()`, request-time
|
|
116
|
+
* bailouts) from `subject` or `tenant` pass through.
|
|
88
117
|
*/
|
|
89
|
-
readonly getPermission:
|
|
118
|
+
readonly getPermission: {
|
|
119
|
+
<D>(permission: Permission, data?: UncheckedData<D>, query?: GetPermDockQuery): Promise<ServerPermissionState>;
|
|
120
|
+
<P extends Permission>(permission: P, data?: RowData<P>, query?: GetPermDockQuery): Promise<ServerPermissionState>;
|
|
121
|
+
};
|
|
90
122
|
/**
|
|
91
123
|
* The session's snapshot for a `'use cache: private'` function the app owns:
|
|
92
|
-
* calls `cacheLife(cacheLifeFor(snapshot))` and `cacheTag(snapshotTag(sub),
|
|
93
|
-
* in that scope, and throws outside one.
|
|
124
|
+
* calls `cacheLife(cacheLifeFor(snapshot))` and `cacheTag(snapshotTag(sub),
|
|
125
|
+
* ...tags)` in that scope, and throws outside one.
|
|
94
126
|
*/
|
|
95
127
|
readonly getSnapshot: (query?: GetSnapshotQuery) => Promise<Snapshot>;
|
|
96
128
|
/**
|
|
@@ -99,15 +131,29 @@ type NextPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
99
131
|
* subject and `forbidden()` otherwise (`experimental.authInterrupts`);
|
|
100
132
|
* approval-required and boundary validation throw as from `assert`.
|
|
101
133
|
*/
|
|
102
|
-
readonly requirePermission:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
134
|
+
readonly requirePermission: {
|
|
135
|
+
<D>(permission: Permission, data?: UncheckedData<D>, options?: PermissionRequirementOptions): Promise<Extract<Decision, {
|
|
136
|
+
readonly outcome: "granted";
|
|
137
|
+
}>>;
|
|
138
|
+
<P extends Permission>(permission: P, data?: RowData<P>, options?: PermissionRequirementOptions): Promise<Extract<Decision, {
|
|
139
|
+
readonly outcome: "granted";
|
|
140
|
+
}>>;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Never awaits: passes an unawaited snapshot to the client provider, whose
|
|
144
|
+
* hooks suspend.
|
|
145
|
+
*/
|
|
106
146
|
readonly PermDockProvider: (props: NextPermDockProviderProps) => ReactElement;
|
|
107
147
|
readonly permdockHandler: () => PermDockHandler;
|
|
148
|
+
/**
|
|
149
|
+
* Wraps a server action: validates `input`, loads `data`, decides, then runs
|
|
150
|
+
* the handler. Resolves to `{ ok: true, value }` or `{ ok: false, problem }`
|
|
151
|
+
* with RFC 9457 Problem Details; only Next.js interrupts throw.
|
|
152
|
+
*/
|
|
153
|
+
readonly protectAction: ProtectAction<V>;
|
|
108
154
|
};
|
|
109
155
|
//#endregion
|
|
110
156
|
//#region src/next/create.d.ts
|
|
111
157
|
export declare function createPermDock<TUser = NextSubjectInput, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: NextPermDockOptions<TUser>): NextPermDock<V>;
|
|
112
158
|
//#endregion
|
|
113
|
-
export { type CacheLifeForOptions, type GetPermDockQuery, type GetSnapshotQuery, type NextPermDock, type NextPermDockOptions, type NextPermDockProviderProps, type PermDockHandler, type PermissionRequirementOptions, type ServerPermissionState, type SnapshotHeaders, type SnapshotHeadersOptions, cacheLifeFor, snapshotHeaders, snapshotTag };
|
|
159
|
+
export { type ActionResult, type CacheLifeForOptions, type GetPermDockQuery, type GetSnapshotQuery, type NextPermDock, type NextPermDockOptions, type NextPermDockProviderProps, type PermDockHandler, type PermissionRequirementOptions, type ProtectAction, type ProtectActionOptions, type ProtectedAction, type ProtectedActionContext, type ProtectedActionHandler, type ServerPermissionState, type SnapshotHeaders, type SnapshotHeadersOptions, cacheLifeFor, snapshotHeaders, snapshotTag };
|
package/dist/next/index.js
CHANGED
|
@@ -1,15 +1,113 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
6
|
-
import {
|
|
2
|
+
import { n as PermDockValidationError } from "../validation-error-CYg2kJEw.js";
|
|
3
|
+
import { o as statusProblem, t as notFoundDetails } from "../problem-details-CLDgX1KV.js";
|
|
4
|
+
import { n as isThenable } from "../thenable-BNSM1U2R.js";
|
|
5
|
+
import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
|
|
6
|
+
import { l as withApp } from "../permdock-L-_I_3zP.js";
|
|
7
|
+
import { n as wrapPermDock } from "../wrap-B2wziJI_.js";
|
|
8
|
+
import { i as decisionProblem } from "../problem-BVLHFK33.js";
|
|
9
|
+
import { s as resumeDecision } from "../helpers-DJicaG6f.js";
|
|
10
|
+
import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-Bx_4xC_6.js";
|
|
11
|
+
import { n as resolveOrNull, t as buildInstance } from "../build-instance-CNWaYJyr.js";
|
|
12
|
+
import { _ as LOAD_FAILED, o as evaluationsHandler, v as NO_GRANT } from "../evaluations-IBceAeKT.js";
|
|
7
13
|
import { cache } from "react";
|
|
8
14
|
import { jsx } from "react/jsx-runtime";
|
|
9
15
|
import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
|
|
10
16
|
import { cacheLife, cacheTag, io } from "next/cache.js";
|
|
11
17
|
import { after } from "next/server.js";
|
|
12
18
|
import { PermDockProvider } from "../react/provider-client.js";
|
|
19
|
+
//#region src/next/action.ts
|
|
20
|
+
function refused(problem) {
|
|
21
|
+
return {
|
|
22
|
+
ok: false,
|
|
23
|
+
problem
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Issues reduced to JSON a server action can return: a symbol path is lost. */
|
|
27
|
+
function plainIssues(issues) {
|
|
28
|
+
return issues.map((issue) => compact({
|
|
29
|
+
message: issue.message,
|
|
30
|
+
path: issue.path?.map((segment) => {
|
|
31
|
+
const key = typeof segment === "object" ? segment.key : segment;
|
|
32
|
+
return typeof key === "number" ? key : String(key);
|
|
33
|
+
})
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
async function parseInput(schema, value) {
|
|
37
|
+
const result = schema["~standard"].validate(value);
|
|
38
|
+
const settled = isThenable(result) ? await result : result;
|
|
39
|
+
if (settled.issues === void 0) return settled;
|
|
40
|
+
return { issues: plainIssues(settled.issues) };
|
|
41
|
+
}
|
|
42
|
+
function invalidInput(permission, issues) {
|
|
43
|
+
return refused(new PermDockValidationError({
|
|
44
|
+
code: "invalid-data",
|
|
45
|
+
permission: permission.key,
|
|
46
|
+
resource: permission.resource,
|
|
47
|
+
issues,
|
|
48
|
+
boundary: "action-input",
|
|
49
|
+
message: `${permission.key}: ${issues.map((issue) => issue.message).join("; ")}.`
|
|
50
|
+
}).toProblemDetails());
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* `protectAction(permission, { input, data?, tenant? })(handler)`: validates
|
|
54
|
+
* the input, loads the row, decides, then runs the handler. Every refusal,
|
|
55
|
+
* including a throw, is a Problem Details result; nothing but Next.js
|
|
56
|
+
* interrupts leaves as an exception.
|
|
57
|
+
*/
|
|
58
|
+
function protectActionOf(deps) {
|
|
59
|
+
return (permission, options) => (handler) => async (value, call) => {
|
|
60
|
+
const parsed = await parseInput(options.input, value);
|
|
61
|
+
if (parsed.issues !== void 0) return invalidInput(permission, parsed.issues);
|
|
62
|
+
const input = parsed.value;
|
|
63
|
+
let permdock;
|
|
64
|
+
let data;
|
|
65
|
+
try {
|
|
66
|
+
permdock = await deps.getPermDock(compact({ tenant: options.tenant?.(input) }));
|
|
67
|
+
} catch (error) {
|
|
68
|
+
deps.rethrow(error);
|
|
69
|
+
return refused(decisionProblem(NO_GRANT, permission, void 0));
|
|
70
|
+
}
|
|
71
|
+
if (options.data !== void 0) {
|
|
72
|
+
try {
|
|
73
|
+
data = await options.data(input) ?? void 0;
|
|
74
|
+
} catch (error) {
|
|
75
|
+
deps.rethrow(error);
|
|
76
|
+
return refused(decisionProblem(LOAD_FAILED, permission, void 0));
|
|
77
|
+
}
|
|
78
|
+
if (data === void 0) return refused(notFoundDetails());
|
|
79
|
+
}
|
|
80
|
+
const decide = permdock.decide;
|
|
81
|
+
const decision = await resumeDecision({
|
|
82
|
+
decision: decide(permission, data, {
|
|
83
|
+
call: "adapter",
|
|
84
|
+
adapter: "next",
|
|
85
|
+
trusted: true
|
|
86
|
+
}),
|
|
87
|
+
permission,
|
|
88
|
+
subject: permdock.subject,
|
|
89
|
+
store: deps.store,
|
|
90
|
+
resource: resourceRef(permission, data),
|
|
91
|
+
adapter: "next",
|
|
92
|
+
token: call?.approval
|
|
93
|
+
});
|
|
94
|
+
if (decision.outcome !== "granted") return refused(decisionProblem(decision, permission, permdock.subject, compact({ disclosure: data === void 0 ? void 0 : deps.policy.resources.get(permission.resource)?.disclosure })));
|
|
95
|
+
try {
|
|
96
|
+
return {
|
|
97
|
+
ok: true,
|
|
98
|
+
value: await handler(input, {
|
|
99
|
+
permdock,
|
|
100
|
+
decision,
|
|
101
|
+
data
|
|
102
|
+
})
|
|
103
|
+
};
|
|
104
|
+
} catch (error) {
|
|
105
|
+
deps.rethrow(error);
|
|
106
|
+
return refused(statusProblem(500, `${permission.key}: the action failed`));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
13
111
|
//#region src/next/provider.tsx
|
|
14
112
|
function renderClientProvider(options) {
|
|
15
113
|
return /* @__PURE__ */ jsx(PermDockProvider, {
|
|
@@ -171,7 +269,13 @@ function createPermDock(policy, given) {
|
|
|
171
269
|
getSnapshot,
|
|
172
270
|
requirePermission,
|
|
173
271
|
PermDockProvider,
|
|
174
|
-
permdockHandler
|
|
272
|
+
permdockHandler,
|
|
273
|
+
protectAction: protectActionOf({
|
|
274
|
+
policy,
|
|
275
|
+
getPermDock,
|
|
276
|
+
store: options.store,
|
|
277
|
+
rethrow: unstable_rethrow
|
|
278
|
+
})
|
|
175
279
|
};
|
|
176
280
|
}
|
|
177
281
|
//#endregion
|
package/dist/next/plugin.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { s as PermDockPluginOptions } from "../types-DC1Loeh3.js";
|
|
2
2
|
//#region src/cli/plugin.d.ts
|
|
3
3
|
/** Any object: Next's `NextConfig` is an interface, so no index signature. */
|
|
4
4
|
type NextConfigLike = object;
|
package/dist/next/plugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as describeError } from "../errors-
|
|
2
|
-
import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-
|
|
1
|
+
import { a as describeError } from "../errors-Vpu6rKHl.js";
|
|
2
|
+
import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-Cx_WciLE.js";
|
|
3
3
|
//#region src/cli/plugin.ts
|
|
4
4
|
const PHASE_BUILD = "phase-production-build";
|
|
5
5
|
const PHASE_DEV = "phase-development-server";
|
|
@@ -27,7 +27,8 @@ function createPermDockPlugin(options) {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
async function runPluginCollect(cwd, options, check) {
|
|
30
|
-
|
|
30
|
+
const { message } = await collectOnce(cwd, options, check, false);
|
|
31
|
+
return message;
|
|
31
32
|
}
|
|
32
33
|
//#endregion
|
|
33
34
|
export { createPermDockPlugin };
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
5
|
-
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 { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CIlpSA2G.js";
|
|
5
|
+
import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
|
|
6
6
|
import { i as toRequest, n as isServerResponse, r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
|
|
7
7
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
8
8
|
//#region src/node/create.d.ts
|
package/dist/node/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as bindKernel } from "../bind-
|
|
3
|
-
import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-
|
|
1
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
|
|
2
|
+
import { r as bindKernel } from "../bind-D_sZSVA3.js";
|
|
3
|
+
import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-DH94eh6f.js";
|
|
4
4
|
//#region src/node/create.ts
|
|
5
5
|
const nodeRequest = (req) => req;
|
|
6
6
|
function createPermDock(policy, options) {
|
|
@@ -19,26 +19,36 @@ function status(outcome) {
|
|
|
19
19
|
default: return unknownStatus(outcome);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* An outcome this build does not know, from a newer producer, is reported as
|
|
24
|
+
* OCSF Unknown.
|
|
25
|
+
*/
|
|
23
26
|
function unknownStatus(_outcome) {
|
|
24
27
|
return {
|
|
25
28
|
status_id: 0,
|
|
26
29
|
status: "Unknown"
|
|
27
30
|
};
|
|
28
31
|
}
|
|
29
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* The names of a decision event's app obligations, or `undefined` when it has
|
|
34
|
+
* none.
|
|
35
|
+
*/
|
|
30
36
|
function appObligationNames(event) {
|
|
31
37
|
const names = (event.obligations ?? []).flatMap((obligation) => obligation.kind === "app" ? [obligation.name] : []);
|
|
32
38
|
return names.length === 0 ? void 0 : names;
|
|
33
39
|
}
|
|
34
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Epoch milliseconds of an RFC 3339 `at`, or `undefined` when it does not
|
|
42
|
+
* parse.
|
|
43
|
+
*/
|
|
35
44
|
function epochMillis(at) {
|
|
36
45
|
const time = Date.parse(at);
|
|
37
46
|
return Number.isNaN(time) ? void 0 : time;
|
|
38
47
|
}
|
|
39
48
|
/**
|
|
40
|
-
* Projects a decision or approval event onto OCSF Authorize Session; the event
|
|
41
|
-
* An event whose `at` does not parse has no OCSF `time`
|
|
49
|
+
* Projects a decision or approval event onto OCSF Authorize Session; the event
|
|
50
|
+
* itself is unchanged. An event whose `at` does not parse has no OCSF `time`
|
|
51
|
+
* and projects to `undefined`.
|
|
42
52
|
*/
|
|
43
53
|
function toOcsf(event) {
|
|
44
54
|
const time = epochMillis(event.at);
|