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,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-
|
|
5
|
-
import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-
|
|
1
|
+
import { Q as LimitStore, Rt as Instant, Zn as Actor, it as RelationSource, lr as Subject, or as Membership, rr as Delegation, sr as Principal, tr as CustomRole } from "../../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { o as PermDockOptions } from "../../permdock-B6Sf4T_S.js";
|
|
4
|
+
import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-Bx6UI8n1.js";
|
|
5
|
+
import { n as saasPolicy, t as SAAS_API_KEY_LIMIT } from "../../policy-Ba4bDhaj.js";
|
|
6
6
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
7
7
|
//#region src/testing/saas/schema.d.ts
|
|
8
8
|
type FieldKind = "string" | "boolean" | "nullable-string";
|
|
@@ -53,6 +53,7 @@ type SaasSeed = {
|
|
|
53
53
|
export declare const SAAS_EXPIRED_AT = 1e9;
|
|
54
54
|
/**
|
|
55
55
|
* Users, one hazard each:
|
|
56
|
+
*
|
|
56
57
|
* - alice: admin in acme, viewer in globex (different role per org)
|
|
57
58
|
* - bob: member in acme (owns p1, p3, p4)
|
|
58
59
|
* - carol: owner in acme
|
|
@@ -62,16 +63,21 @@ export declare const SAAS_EXPIRED_AT = 1e9;
|
|
|
62
63
|
* - mallory: no memberships at all
|
|
63
64
|
* - gina: `lead` of team-a in acme
|
|
64
65
|
* - hank: viewer in acme, `collaborator` on project p3 only
|
|
65
|
-
* - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one
|
|
66
|
+
* - `user-2` and `2`: members of `org-1`; `Date.parse` maps both ids to one
|
|
67
|
+
* instant
|
|
66
68
|
* - tina: member of `tenant-1`; `Date.parse('org-1') === Date.parse('tenant-1')`
|
|
67
|
-
* - ivan: viewer in acme who holds the team role `lead` on the tenant membership
|
|
69
|
+
* - ivan: viewer in acme who holds the team role `lead` on the tenant membership
|
|
70
|
+
* (the wrong scope)
|
|
68
71
|
*
|
|
69
72
|
* Acme's folders: `root` ─ `eng` ─ `platform` ─ `infra`, and `root` ─ `hr`
|
|
70
73
|
* (restricted) ─ `payroll`. bob views `root`, hank views `hr`, gina edits
|
|
71
74
|
* `eng`, frank's view of `root` expired.
|
|
72
75
|
*/
|
|
73
76
|
export declare const saasSeed: SaasSeed;
|
|
74
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* The seed's folder tree and shares as a `RelationSource`, for
|
|
79
|
+
* `createPermDock({ relations })`.
|
|
80
|
+
*/
|
|
75
81
|
export declare function saasRelations(seed?: SaasSeed): RelationSource;
|
|
76
82
|
/** Every user id in the seed. */
|
|
77
83
|
export declare const saasUsers: readonly string[];
|
|
@@ -81,18 +87,18 @@ export declare function saasMemberships(user: string, members?: readonly SaasMem
|
|
|
81
87
|
/** Custom roles of every org, as `createPermDock({ customRoles })` expects. */
|
|
82
88
|
export declare const saasCustomRoles: readonly CustomRole[];
|
|
83
89
|
/**
|
|
84
|
-
* The principal for `user`, with the plans of the requested `tenant`'s org.
|
|
85
|
-
*
|
|
86
|
-
*
|
|
90
|
+
* The principal for `user`, with the plans of the requested `tenant`'s org. The
|
|
91
|
+
* tenant itself is passed to `createPermDock({ tenant })`, never trusted from
|
|
92
|
+
* here.
|
|
87
93
|
*/
|
|
88
94
|
export declare function saasPrincipal(user: string, tenant?: string): Principal;
|
|
89
95
|
//#endregion
|
|
90
96
|
//#region src/testing/saas/sql.d.ts
|
|
91
97
|
/**
|
|
92
|
-
* Postgres tables for the SaaS domain. Column names match the resource
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
98
|
+
* Postgres tables for the SaaS domain. Column names match the resource fields
|
|
99
|
+
* (`"orgId"`, `"ownerId"`) so generated RLS and ORM filters compile against
|
|
100
|
+
* them without a column map. RLS is enabled and forced on the row tables;
|
|
101
|
+
* policies come from `permdock rls generate`.
|
|
96
102
|
*/
|
|
97
103
|
export declare const saasSchemaSql = "\ncreate table org (\n id text primary key,\n name text not null,\n plan text not null check (plan in ('free', 'pro'))\n);\ncreate table org_member (\n user_id text not null,\n org_id text references org (id),\n team_id text,\n resource text,\n resource_id text,\n role text not null,\n expires_at bigint\n);\ncreate table project (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"ownerId\" text not null,\n name text not null,\n archived boolean not null default false\n);\nalter table project enable row level security;\nalter table project force row level security;\ncreate table doc (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"teamId\" text,\n title text not null,\n locked boolean not null default false\n);\nalter table doc enable row level security;\nalter table doc force row level security;\ncreate table folder (\n id text primary key,\n \"orgId\" text not null references org (id),\n \"parentId\" text references folder (id),\n name text not null,\n restricted boolean not null default false\n);\nalter table folder enable row level security;\nalter table folder force row level security;\ncreate table folder_share (\n folder_id text not null references folder (id) on delete cascade,\n user_id text not null,\n expires_at timestamptz\n);\ncreate table folder_editor (\n folder_id text not null references folder (id) on delete cascade,\n user_id text not null\n);\n";
|
|
98
104
|
/** `insert` statements for a seed; the default is the full shared seed. */
|
|
@@ -119,7 +125,10 @@ export declare const saasIssuer = "https://saas.permdock.test";
|
|
|
119
125
|
export declare const saasAudience = "permdock-saas";
|
|
120
126
|
export declare const SAAS_TOKEN_TTL_SECONDS = 3600;
|
|
121
127
|
type SaasTokenOptions = {
|
|
122
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Claim memberships; `false` omits the claim (database mode). Defaults to the
|
|
130
|
+
* seed.
|
|
131
|
+
*/
|
|
123
132
|
readonly memberships?: readonly Membership[] | false;
|
|
124
133
|
readonly ttl?: number;
|
|
125
134
|
/** The instant used for `iat`; defaults to the current time. */
|
|
@@ -131,9 +140,9 @@ type SaasTokenOptions = {
|
|
|
131
140
|
/** Signs an ES256 access token for `sub` with WebCrypto; no dependency. */
|
|
132
141
|
export declare function signSaasToken(sub: string, options?: SaasTokenOptions): Promise<string>;
|
|
133
142
|
/**
|
|
134
|
-
* Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`)
|
|
135
|
-
*
|
|
136
|
-
*
|
|
143
|
+
* Verifies a token from `signSaasToken` (ES256, `kid`, `iss`, `aud`, `exp`) and
|
|
144
|
+
* returns its `sub`, or `null`; never throws. Identity only: memberships and
|
|
145
|
+
* plans come from the seed, never from the token.
|
|
137
146
|
*/
|
|
138
147
|
export declare function verifySaasToken(token: string | null | undefined, now?: Instant): Promise<string | null>;
|
|
139
148
|
/** `verifySaasToken` plus the token's `exp` as `expiresAt` (epoch seconds). */
|
|
@@ -162,8 +171,8 @@ type SaasScenario = {
|
|
|
162
171
|
*/
|
|
163
172
|
readonly client?: boolean;
|
|
164
173
|
/**
|
|
165
|
-
* The client outcome when it is stricter than the server's: a snapshot
|
|
166
|
-
*
|
|
174
|
+
* The client outcome when it is stricter than the server's: a snapshot cannot
|
|
175
|
+
* evaluate a closure deny, so it fails closed.
|
|
167
176
|
*/
|
|
168
177
|
readonly clientOutcome?: SaasOutcome;
|
|
169
178
|
/** An agent acting for `user`; without `delegation` it reaches nothing. */
|
|
@@ -172,23 +181,30 @@ type SaasScenario = {
|
|
|
172
181
|
/** Units of the daily api-key quota this subject already used in the tenant. */
|
|
173
182
|
readonly quotaUsed?: number;
|
|
174
183
|
};
|
|
175
|
-
/**
|
|
184
|
+
/**
|
|
185
|
+
* What the policy's `subject` receives: the principal, or a `Subject` carrying
|
|
186
|
+
* the actor.
|
|
187
|
+
*/
|
|
176
188
|
export declare function saasUser(scenario: SaasScenario): Principal | Subject;
|
|
177
189
|
/** A memory quota store in which every subject has already used `used` units. */
|
|
178
190
|
export declare function saasLimitStore(used?: number): LimitStore;
|
|
179
|
-
/**
|
|
191
|
+
/**
|
|
192
|
+
* The `createPermDock` options a scenario runs with: tenant, custom roles,
|
|
193
|
+
* quota and folder tree.
|
|
194
|
+
*/
|
|
180
195
|
export declare function saasScenarioOptions(scenario: SaasScenario): PermDockOptions;
|
|
181
196
|
export declare function saasProject(id: string): SaasProject;
|
|
182
197
|
export declare function saasDoc(id: string): SaasDoc;
|
|
183
198
|
export declare function saasFolder(id: string): SaasFolder;
|
|
184
199
|
/**
|
|
185
|
-
* The folder tree, decided with `createPermDock({ relations: saasRelations()
|
|
186
|
-
* A snapshot carries no graph, so every graph grant is server-only on a
|
|
200
|
+
* The folder tree, decided with `createPermDock({ relations: saasRelations()
|
|
201
|
+
* })`. A snapshot carries no graph, so every graph grant is server-only on a
|
|
202
|
+
* client.
|
|
187
203
|
*/
|
|
188
204
|
export declare const saasFolderScenarios: readonly SaasScenario[];
|
|
189
205
|
/**
|
|
190
|
-
* Hand-written expectations. Never derive `expected` from the engine: the
|
|
191
|
-
*
|
|
206
|
+
* Hand-written expectations. Never derive `expected` from the engine: the list
|
|
207
|
+
* is the oracle every adapter, ORM and client suite runs against.
|
|
192
208
|
*/
|
|
193
209
|
export declare const saasScenarios: readonly SaasScenario[];
|
|
194
210
|
//#endregion
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-
|
|
2
|
-
import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-
|
|
1
|
+
import { a as saasPlans, c as rowSchema, i as saasPermissions, n as SaasFolderSchema, o as saasRoles, r as SaasProjectSchema, s as saasTenantRoleNames, t as SaasDocSchema } from "../../permissions-mDcTWoBs.js";
|
|
2
|
+
import { C as saasOrg, D as saasUsers, E as saasSeed, O as SAAS_API_KEY_LIMIT, S as saasMemberships, T as saasRelations, _ as verifySaasToken, a as saasProject, b as SAAS_EXPIRED_AT, c as saasUser, d as saasIssuer, f as saasJwks, g as verifySaasSession, h as signSaasToken, i as saasLimitStore, k as saasPolicy, l as SAAS_TOKEN_TTL_SECONDS, m as saasPublicJwk, n as saasFolder, o as saasScenarioOptions, p as saasPrivateJwk, r as saasFolderScenarios, s as saasScenarios, t as saasDoc, u as saasAudience, v as saasSchemaSql, w as saasPrincipal, x as saasCustomRoles, y as saasSeedSql } from "../../saas-iWnUdwCt.js";
|
|
3
3
|
export { SAAS_API_KEY_LIMIT, SAAS_EXPIRED_AT, SAAS_TOKEN_TTL_SECONDS, SaasDocSchema, SaasFolderSchema, SaasProjectSchema, rowSchema, saasAudience, saasCustomRoles, saasDoc, saasFolder, saasFolderScenarios, saasIssuer, saasJwks, saasLimitStore, saasMemberships, saasOrg, saasPermissions, saasPlans, saasPolicy, saasPrincipal, saasPrivateJwk, saasProject, saasPublicJwk, saasRelations, saasRoles, saasScenarioOptions, saasScenarios, saasSchemaSql, saasSeed, saasSeedSql, saasTenantRoleNames, saasUser, saasUsers, signSaasToken, verifySaasSession, verifySaasToken };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-
|
|
1
|
+
import { a as SaasProject, c as saasPlans, i as SaasFolderSchema, l as saasRoles, n as SaasDocSchema, o as SaasProjectSchema, r as SaasFolder, s as saasPermissions, t as SaasDoc, u as saasTenantRoleNames } from "../../permissions-Bx6UI8n1.js";
|
|
2
2
|
export { SaasDoc, SaasDocSchema, SaasFolder, SaasFolderSchema, SaasProject, SaasProjectSchema, saasPermissions, saasPlans, saasRoles, saasTenantRoleNames };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as SaasDocSchema, n as SaasFolderSchema, r as SaasProjectSchema, i as saasPermissions, a as saasPlans, o as saasRoles, s as saasTenantRoleNames } from "../../permissions-
|
|
1
|
+
export { t as SaasDocSchema, n as SaasFolderSchema, r as SaasProjectSchema, i as saasPermissions, a as saasPlans, o as saasRoles, s as saasTenantRoleNames } from "../../permissions-mDcTWoBs.js";
|
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/base.js
|
|
2
|
+
var Diff = class {
|
|
3
|
+
diff(oldStr, newStr, options = {}) {
|
|
4
|
+
let callback;
|
|
5
|
+
if (typeof options === "function") {
|
|
6
|
+
callback = options;
|
|
7
|
+
options = {};
|
|
8
|
+
} else if ("callback" in options) callback = options.callback;
|
|
9
|
+
const oldString = this.castInput(oldStr, options);
|
|
10
|
+
const newString = this.castInput(newStr, options);
|
|
11
|
+
const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
|
|
12
|
+
const newTokens = this.removeEmpty(this.tokenize(newString, options));
|
|
13
|
+
return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
|
|
14
|
+
}
|
|
15
|
+
diffWithOptionsObj(oldTokens, newTokens, options, callback) {
|
|
16
|
+
var _a;
|
|
17
|
+
const done = (value) => {
|
|
18
|
+
value = this.postProcess(value, options);
|
|
19
|
+
if (callback) {
|
|
20
|
+
setTimeout(function() {
|
|
21
|
+
callback(value);
|
|
22
|
+
}, 0);
|
|
23
|
+
return;
|
|
24
|
+
} else return value;
|
|
25
|
+
};
|
|
26
|
+
const newLen = newTokens.length, oldLen = oldTokens.length;
|
|
27
|
+
let editLength = 1;
|
|
28
|
+
let maxEditLength = newLen + oldLen;
|
|
29
|
+
if (options.maxEditLength != null) maxEditLength = Math.min(maxEditLength, options.maxEditLength);
|
|
30
|
+
const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
|
|
31
|
+
const abortAfterTimestamp = Date.now() + maxExecutionTime;
|
|
32
|
+
const bestPath = [{
|
|
33
|
+
oldPos: -1,
|
|
34
|
+
lastComponent: void 0
|
|
35
|
+
}];
|
|
36
|
+
let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
|
|
37
|
+
if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
|
|
38
|
+
let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
|
|
39
|
+
const execEditLength = () => {
|
|
40
|
+
for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
|
|
41
|
+
let basePath;
|
|
42
|
+
const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
|
|
43
|
+
if (removePath) bestPath[diagonalPath - 1] = void 0;
|
|
44
|
+
let canAdd = false;
|
|
45
|
+
if (addPath) {
|
|
46
|
+
const addPathNewPos = addPath.oldPos - diagonalPath;
|
|
47
|
+
canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
|
|
48
|
+
}
|
|
49
|
+
const canRemove = removePath && removePath.oldPos + 1 < oldLen;
|
|
50
|
+
if (!canAdd && !canRemove) {
|
|
51
|
+
bestPath[diagonalPath] = void 0;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) basePath = this.addToPath(addPath, true, false, 0, options);
|
|
55
|
+
else basePath = this.addToPath(removePath, false, true, 1, options);
|
|
56
|
+
newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
|
|
57
|
+
if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
|
|
58
|
+
else {
|
|
59
|
+
bestPath[diagonalPath] = basePath;
|
|
60
|
+
if (basePath.oldPos + 1 >= oldLen) maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
|
|
61
|
+
if (newPos + 1 >= newLen) minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
editLength++;
|
|
65
|
+
};
|
|
66
|
+
if (callback) (function exec() {
|
|
67
|
+
setTimeout(function() {
|
|
68
|
+
if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) return callback(void 0);
|
|
69
|
+
if (!execEditLength()) exec();
|
|
70
|
+
}, 0);
|
|
71
|
+
})();
|
|
72
|
+
else while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
|
|
73
|
+
const ret = execEditLength();
|
|
74
|
+
if (ret) return ret;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
addToPath(path, added, removed, oldPosInc, options) {
|
|
78
|
+
const last = path.lastComponent;
|
|
79
|
+
if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) return {
|
|
80
|
+
oldPos: path.oldPos + oldPosInc,
|
|
81
|
+
lastComponent: {
|
|
82
|
+
count: last.count + 1,
|
|
83
|
+
added,
|
|
84
|
+
removed,
|
|
85
|
+
previousComponent: last.previousComponent
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
else return {
|
|
89
|
+
oldPos: path.oldPos + oldPosInc,
|
|
90
|
+
lastComponent: {
|
|
91
|
+
count: 1,
|
|
92
|
+
added,
|
|
93
|
+
removed,
|
|
94
|
+
previousComponent: last
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
|
|
99
|
+
const newLen = newTokens.length, oldLen = oldTokens.length;
|
|
100
|
+
let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
|
|
101
|
+
while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
|
|
102
|
+
newPos++;
|
|
103
|
+
oldPos++;
|
|
104
|
+
commonCount++;
|
|
105
|
+
if (options.oneChangePerToken) basePath.lastComponent = {
|
|
106
|
+
count: 1,
|
|
107
|
+
previousComponent: basePath.lastComponent,
|
|
108
|
+
added: false,
|
|
109
|
+
removed: false
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (commonCount && !options.oneChangePerToken) basePath.lastComponent = {
|
|
113
|
+
count: commonCount,
|
|
114
|
+
previousComponent: basePath.lastComponent,
|
|
115
|
+
added: false,
|
|
116
|
+
removed: false
|
|
117
|
+
};
|
|
118
|
+
basePath.oldPos = oldPos;
|
|
119
|
+
return newPos;
|
|
120
|
+
}
|
|
121
|
+
equals(left, right, options) {
|
|
122
|
+
if (options.comparator) return options.comparator(left, right);
|
|
123
|
+
else return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
|
|
124
|
+
}
|
|
125
|
+
removeEmpty(array) {
|
|
126
|
+
const ret = [];
|
|
127
|
+
for (let i = 0; i < array.length; i++) if (array[i]) ret.push(array[i]);
|
|
128
|
+
return ret;
|
|
129
|
+
}
|
|
130
|
+
castInput(value, options) {
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
tokenize(value, options) {
|
|
134
|
+
return Array.from(value);
|
|
135
|
+
}
|
|
136
|
+
join(chars) {
|
|
137
|
+
return chars.join("");
|
|
138
|
+
}
|
|
139
|
+
postProcess(changeObjects, options) {
|
|
140
|
+
return changeObjects;
|
|
141
|
+
}
|
|
142
|
+
get useLongestToken() {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
buildValues(lastComponent, newTokens, oldTokens) {
|
|
146
|
+
const components = [];
|
|
147
|
+
let nextComponent;
|
|
148
|
+
while (lastComponent) {
|
|
149
|
+
components.push(lastComponent);
|
|
150
|
+
nextComponent = lastComponent.previousComponent;
|
|
151
|
+
delete lastComponent.previousComponent;
|
|
152
|
+
lastComponent = nextComponent;
|
|
153
|
+
}
|
|
154
|
+
components.reverse();
|
|
155
|
+
const componentLen = components.length;
|
|
156
|
+
let componentPos = 0, newPos = 0, oldPos = 0;
|
|
157
|
+
for (; componentPos < componentLen; componentPos++) {
|
|
158
|
+
const component = components[componentPos];
|
|
159
|
+
if (!component.removed) {
|
|
160
|
+
if (!component.added && this.useLongestToken) {
|
|
161
|
+
let value = newTokens.slice(newPos, newPos + component.count);
|
|
162
|
+
value = value.map(function(value, i) {
|
|
163
|
+
const oldValue = oldTokens[oldPos + i];
|
|
164
|
+
return oldValue.length > value.length ? oldValue : value;
|
|
165
|
+
});
|
|
166
|
+
component.value = this.join(value);
|
|
167
|
+
} else component.value = this.join(newTokens.slice(newPos, newPos + component.count));
|
|
168
|
+
newPos += component.count;
|
|
169
|
+
if (!component.added) oldPos += component.count;
|
|
170
|
+
} else {
|
|
171
|
+
component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
|
|
172
|
+
oldPos += component.count;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return components;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
//#endregion
|
|
179
|
+
//#region ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/line.js
|
|
180
|
+
var LineDiff = class extends Diff {
|
|
181
|
+
constructor() {
|
|
182
|
+
super(...arguments);
|
|
183
|
+
this.tokenize = tokenize;
|
|
184
|
+
}
|
|
185
|
+
equals(left, right, options) {
|
|
186
|
+
if (options.ignoreWhitespace) {
|
|
187
|
+
if (!options.newlineIsToken || !left.includes("\n")) left = left.trim();
|
|
188
|
+
if (!options.newlineIsToken || !right.includes("\n")) right = right.trim();
|
|
189
|
+
} else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
|
|
190
|
+
if (left.endsWith("\n")) left = left.slice(0, -1);
|
|
191
|
+
if (right.endsWith("\n")) right = right.slice(0, -1);
|
|
192
|
+
}
|
|
193
|
+
return super.equals(left, right, options);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const lineDiff = new LineDiff();
|
|
197
|
+
function diffLines(oldStr, newStr, options) {
|
|
198
|
+
return lineDiff.diff(oldStr, newStr, options);
|
|
199
|
+
}
|
|
200
|
+
function tokenize(value, options) {
|
|
201
|
+
if (options.stripTrailingCr) value = value.replace(/\r\n/g, "\n");
|
|
202
|
+
const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
|
|
203
|
+
if (!linesAndNewlines[linesAndNewlines.length - 1]) linesAndNewlines.pop();
|
|
204
|
+
for (let i = 0; i < linesAndNewlines.length; i++) {
|
|
205
|
+
const line = linesAndNewlines[i];
|
|
206
|
+
if (i % 2 && !options.newlineIsToken) retLines[retLines.length - 1] += line;
|
|
207
|
+
else retLines.push(line);
|
|
208
|
+
}
|
|
209
|
+
return retLines;
|
|
210
|
+
}
|
|
211
|
+
//#endregion
|
|
212
|
+
//#region ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/patch/create.js
|
|
213
|
+
/**
|
|
214
|
+
* Returns true if the filename contains characters that require C-style
|
|
215
|
+
* quoting (as used by Git and GNU diffutils in diff output).
|
|
216
|
+
*/
|
|
217
|
+
function needsQuoting(s) {
|
|
218
|
+
for (let i = 0; i < s.length; i++) if (s[i] < " " || s[i] > "~" || s[i] === "\"" || s[i] === "\\") return true;
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* C-style quotes a filename, encoding special characters as escape sequences
|
|
223
|
+
* and non-ASCII bytes as octal escapes. This is the inverse of
|
|
224
|
+
* `parseQuotedFileName` in parse.ts.
|
|
225
|
+
*
|
|
226
|
+
* Non-ASCII bytes are encoded as UTF-8 before being emitted as octal escapes.
|
|
227
|
+
* This matches the behaviour of both Git and GNU diffutils, which always emit
|
|
228
|
+
* UTF-8 octal escapes regardless of the underlying filesystem encoding (e.g.
|
|
229
|
+
* Git for Windows converts from NTFS's UTF-16 to UTF-8 internally).
|
|
230
|
+
*
|
|
231
|
+
* If the filename doesn't need quoting, returns it as-is.
|
|
232
|
+
*/
|
|
233
|
+
function quoteFileNameIfNeeded(s) {
|
|
234
|
+
if (!needsQuoting(s)) return s;
|
|
235
|
+
let result = "\"";
|
|
236
|
+
const bytes = new TextEncoder().encode(s);
|
|
237
|
+
let i = 0;
|
|
238
|
+
while (i < bytes.length) {
|
|
239
|
+
const b = bytes[i];
|
|
240
|
+
if (b === 7) result += "\\a";
|
|
241
|
+
else if (b === 8) result += "\\b";
|
|
242
|
+
else if (b === 9) result += "\\t";
|
|
243
|
+
else if (b === 10) result += "\\n";
|
|
244
|
+
else if (b === 11) result += "\\v";
|
|
245
|
+
else if (b === 12) result += "\\f";
|
|
246
|
+
else if (b === 13) result += "\\r";
|
|
247
|
+
else if (b === 34) result += "\\\"";
|
|
248
|
+
else if (b === 92) result += "\\\\";
|
|
249
|
+
else if (b >= 32 && b <= 126) result += String.fromCharCode(b);
|
|
250
|
+
else result += "\\" + b.toString(8).padStart(3, "0");
|
|
251
|
+
i++;
|
|
252
|
+
}
|
|
253
|
+
result += "\"";
|
|
254
|
+
return result;
|
|
255
|
+
}
|
|
256
|
+
const INCLUDE_HEADERS = {
|
|
257
|
+
includeIndex: true,
|
|
258
|
+
includeUnderline: true,
|
|
259
|
+
includeFileHeaders: true
|
|
260
|
+
};
|
|
261
|
+
function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
|
|
262
|
+
let optionsObj;
|
|
263
|
+
if (!options) optionsObj = {};
|
|
264
|
+
else if (typeof options === "function") optionsObj = { callback: options };
|
|
265
|
+
else optionsObj = options;
|
|
266
|
+
if (typeof optionsObj.context === "undefined") optionsObj.context = 4;
|
|
267
|
+
const context = optionsObj.context;
|
|
268
|
+
if (optionsObj.newlineIsToken) throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");
|
|
269
|
+
if (!optionsObj.callback) return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));
|
|
270
|
+
else {
|
|
271
|
+
const { callback } = optionsObj;
|
|
272
|
+
diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {
|
|
273
|
+
const patch = diffLinesResultToPatch(diff);
|
|
274
|
+
callback(patch);
|
|
275
|
+
} }));
|
|
276
|
+
}
|
|
277
|
+
function diffLinesResultToPatch(diff) {
|
|
278
|
+
if (!diff) return;
|
|
279
|
+
diff.push({
|
|
280
|
+
value: "",
|
|
281
|
+
lines: []
|
|
282
|
+
});
|
|
283
|
+
function contextLines(lines) {
|
|
284
|
+
return lines.map(function(entry) {
|
|
285
|
+
return " " + entry;
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
const hunks = [];
|
|
289
|
+
let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;
|
|
290
|
+
for (let i = 0; i < diff.length; i++) {
|
|
291
|
+
const current = diff[i], lines = current.lines || splitLines(current.value);
|
|
292
|
+
current.lines = lines;
|
|
293
|
+
if (current.added || current.removed) {
|
|
294
|
+
if (!oldRangeStart) {
|
|
295
|
+
const prev = diff[i - 1];
|
|
296
|
+
oldRangeStart = oldLine;
|
|
297
|
+
newRangeStart = newLine;
|
|
298
|
+
if (prev) {
|
|
299
|
+
curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];
|
|
300
|
+
oldRangeStart -= curRange.length;
|
|
301
|
+
newRangeStart -= curRange.length;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
for (const line of lines) curRange.push((current.added ? "+" : "-") + line);
|
|
305
|
+
if (current.added) newLine += lines.length;
|
|
306
|
+
else oldLine += lines.length;
|
|
307
|
+
} else {
|
|
308
|
+
if (oldRangeStart) {
|
|
309
|
+
if (lines.length <= context * 2 && i < diff.length - 2) for (const line of contextLines(lines)) curRange.push(line);
|
|
310
|
+
else {
|
|
311
|
+
const contextSize = Math.min(lines.length, context);
|
|
312
|
+
for (const line of contextLines(lines.slice(0, contextSize))) curRange.push(line);
|
|
313
|
+
const hunk = {
|
|
314
|
+
oldStart: oldRangeStart,
|
|
315
|
+
oldLines: oldLine - oldRangeStart + contextSize,
|
|
316
|
+
newStart: newRangeStart,
|
|
317
|
+
newLines: newLine - newRangeStart + contextSize,
|
|
318
|
+
lines: curRange
|
|
319
|
+
};
|
|
320
|
+
hunks.push(hunk);
|
|
321
|
+
oldRangeStart = 0;
|
|
322
|
+
newRangeStart = 0;
|
|
323
|
+
curRange = [];
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
oldLine += lines.length;
|
|
327
|
+
newLine += lines.length;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
for (const hunk of hunks) for (let i = 0; i < hunk.lines.length; i++) if (hunk.lines[i].endsWith("\n")) hunk.lines[i] = hunk.lines[i].slice(0, -1);
|
|
331
|
+
else {
|
|
332
|
+
hunk.lines.splice(i + 1, 0, "\");
|
|
333
|
+
i++;
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
oldFileName,
|
|
337
|
+
newFileName,
|
|
338
|
+
oldHeader,
|
|
339
|
+
newHeader,
|
|
340
|
+
hunks
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* creates a unified diff patch.
|
|
346
|
+
*
|
|
347
|
+
* @param patch either a single structured patch object (as returned by `structuredPatch`) or an
|
|
348
|
+
* array of them (as returned by `parsePatch`).
|
|
349
|
+
* @param headerOptions behaves the same as the `headerOptions` option of `createTwoFilesPatch`.
|
|
350
|
+
* Ignored for patches where `isGit` is `true`.
|
|
351
|
+
*
|
|
352
|
+
* When a patch has `isGit: true`, `formatPatch` output is changed to more closely match Git's
|
|
353
|
+
* output: it emits a `diff --git` header, emits Git extended headers as appropriate based on
|
|
354
|
+
* properties like `isRename`, `isCreate`, `newMode`, etc, and will omit `---`/`+++` file
|
|
355
|
+
* headers for patches with no hunks (e.g. renames without content changes).
|
|
356
|
+
*/
|
|
357
|
+
function formatPatch(patch, headerOptions) {
|
|
358
|
+
var _a, _b, _c, _d, _e, _f;
|
|
359
|
+
if (!headerOptions) headerOptions = INCLUDE_HEADERS;
|
|
360
|
+
if (Array.isArray(patch)) {
|
|
361
|
+
if (patch.length > 1 && !headerOptions.includeFileHeaders && !patch.every((p) => p.isGit)) throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");
|
|
362
|
+
return patch.map((p) => formatPatch(p, headerOptions)).join("\n");
|
|
363
|
+
}
|
|
364
|
+
const ret = [];
|
|
365
|
+
if (patch.isGit) {
|
|
366
|
+
headerOptions = INCLUDE_HEADERS;
|
|
367
|
+
if (!patch.oldFileName) throw new Error("oldFileName must be specified for Git patches");
|
|
368
|
+
if (!patch.newFileName) throw new Error("newFileName must be specified for Git patches");
|
|
369
|
+
let gitOldName = patch.oldFileName;
|
|
370
|
+
let gitNewName = patch.newFileName;
|
|
371
|
+
if (patch.isCreate && gitOldName === "/dev/null") gitOldName = gitNewName.replace(/^b\//, "a/");
|
|
372
|
+
else if (patch.isDelete && gitNewName === "/dev/null") gitNewName = gitOldName.replace(/^a\//, "b/");
|
|
373
|
+
ret.push("diff --git " + quoteFileNameIfNeeded(gitOldName) + " " + quoteFileNameIfNeeded(gitNewName));
|
|
374
|
+
if (patch.isDelete) ret.push("deleted file mode " + ((_a = patch.oldMode) !== null && _a !== void 0 ? _a : "100644"));
|
|
375
|
+
if (patch.isCreate) ret.push("new file mode " + ((_b = patch.newMode) !== null && _b !== void 0 ? _b : "100644"));
|
|
376
|
+
if (patch.oldMode && patch.newMode && !patch.isDelete && !patch.isCreate) {
|
|
377
|
+
ret.push("old mode " + patch.oldMode);
|
|
378
|
+
ret.push("new mode " + patch.newMode);
|
|
379
|
+
}
|
|
380
|
+
if (patch.isRename) {
|
|
381
|
+
ret.push("rename from " + quoteFileNameIfNeeded(((_c = patch.oldFileName) !== null && _c !== void 0 ? _c : "").replace(/^a\//, "")));
|
|
382
|
+
ret.push("rename to " + quoteFileNameIfNeeded(((_d = patch.newFileName) !== null && _d !== void 0 ? _d : "").replace(/^b\//, "")));
|
|
383
|
+
}
|
|
384
|
+
if (patch.isCopy) {
|
|
385
|
+
ret.push("copy from " + quoteFileNameIfNeeded(((_e = patch.oldFileName) !== null && _e !== void 0 ? _e : "").replace(/^a\//, "")));
|
|
386
|
+
ret.push("copy to " + quoteFileNameIfNeeded(((_f = patch.newFileName) !== null && _f !== void 0 ? _f : "").replace(/^b\//, "")));
|
|
387
|
+
}
|
|
388
|
+
} else {
|
|
389
|
+
if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName && patch.oldFileName !== void 0) ret.push("Index: " + patch.oldFileName);
|
|
390
|
+
if (headerOptions.includeUnderline) ret.push("===================================================================");
|
|
391
|
+
}
|
|
392
|
+
const hasHunks = patch.hunks.length > 0;
|
|
393
|
+
if (headerOptions.includeFileHeaders && patch.oldFileName !== void 0 && patch.newFileName !== void 0 && (!patch.isGit || hasHunks)) {
|
|
394
|
+
ret.push("--- " + quoteFileNameIfNeeded(patch.oldFileName) + (patch.oldHeader ? " " + patch.oldHeader : ""));
|
|
395
|
+
ret.push("+++ " + quoteFileNameIfNeeded(patch.newFileName) + (patch.newHeader ? " " + patch.newHeader : ""));
|
|
396
|
+
}
|
|
397
|
+
for (let i = 0; i < patch.hunks.length; i++) {
|
|
398
|
+
const hunk = patch.hunks[i];
|
|
399
|
+
const oldStart = hunk.oldLines === 0 ? hunk.oldStart - 1 : hunk.oldStart;
|
|
400
|
+
const newStart = hunk.newLines === 0 ? hunk.newStart - 1 : hunk.newStart;
|
|
401
|
+
ret.push("@@ -" + oldStart + "," + hunk.oldLines + " +" + newStart + "," + hunk.newLines + " @@");
|
|
402
|
+
for (const line of hunk.lines) ret.push(line);
|
|
403
|
+
}
|
|
404
|
+
return ret.join("\n") + "\n";
|
|
405
|
+
}
|
|
406
|
+
function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
|
|
407
|
+
if (typeof options === "function") options = { callback: options };
|
|
408
|
+
if (!(options === null || options === void 0 ? void 0 : options.callback)) {
|
|
409
|
+
const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
|
|
410
|
+
if (!patchObj) return;
|
|
411
|
+
return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);
|
|
412
|
+
} else {
|
|
413
|
+
const { callback } = options;
|
|
414
|
+
structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: (patchObj) => {
|
|
415
|
+
if (!patchObj) callback(void 0);
|
|
416
|
+
else callback(formatPatch(patchObj, options.headerOptions));
|
|
417
|
+
} }));
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Split `text` into an array of lines, including the trailing newline character (where present)
|
|
422
|
+
*/
|
|
423
|
+
function splitLines(text) {
|
|
424
|
+
const hasTrailingNl = text.endsWith("\n");
|
|
425
|
+
const result = text.split("\n").map((line) => line + "\n");
|
|
426
|
+
if (hasTrailingNl) result.pop();
|
|
427
|
+
else result.push(result.pop().slice(0, -1));
|
|
428
|
+
return result;
|
|
429
|
+
}
|
|
430
|
+
//#endregion
|
|
431
|
+
//#region src/cli/core/text-diff.ts
|
|
432
|
+
const MAX_LINES = 40;
|
|
433
|
+
/**
|
|
434
|
+
* A unified diff from the file on disk to what the command would write, cut to
|
|
435
|
+
* the first {@link MAX_LINES} lines so a CI log stays readable.
|
|
436
|
+
*/
|
|
437
|
+
function shortDiff(file, onDisk, next) {
|
|
438
|
+
const lines = createTwoFilesPatch(`${file} (on disk)`, `${file} (generated)`, onDisk, next, void 0, void 0, { context: 2 }).split("\n").filter((line) => !line.startsWith("=====")).filter((line, index, all) => line !== "" || index < all.length - 1);
|
|
439
|
+
if (lines.length <= MAX_LINES) return lines.join("\n");
|
|
440
|
+
const rest = lines.length - MAX_LINES;
|
|
441
|
+
return [...lines.slice(0, MAX_LINES), `… ${rest} more diff line${rest === 1 ? "" : "s"}`].join("\n");
|
|
442
|
+
}
|
|
443
|
+
//#endregion
|
|
444
|
+
export { shortDiff as t };
|
|
@@ -3,11 +3,17 @@ import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
|
3
3
|
function isThenable(value) {
|
|
4
4
|
return value !== null && typeof value === "object" && "then" in value && typeof value.then === "function";
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Settles a promise nobody awaits, so its rejection is not reported as
|
|
8
|
+
* unhandled.
|
|
9
|
+
*/
|
|
7
10
|
function ignoreRejection(value) {
|
|
8
11
|
Promise.resolve(value).then(void 0, () => void 0);
|
|
9
12
|
}
|
|
10
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Runs a Standard Schema that must answer synchronously; an asynchronous answer
|
|
15
|
+
* fails.
|
|
16
|
+
*/
|
|
11
17
|
function validateSync(schema, value) {
|
|
12
18
|
const result = schema["~standard"].validate(value);
|
|
13
19
|
if (isThenable(result)) {
|
|
@@ -22,7 +28,10 @@ function validateSync(schema, value) {
|
|
|
22
28
|
issues: result.issues
|
|
23
29
|
};
|
|
24
30
|
}
|
|
25
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* `validateSync` for a schema whose output must be an object; anything else is
|
|
33
|
+
* `undefined`.
|
|
34
|
+
*/
|
|
26
35
|
function validateRecord(schema, value) {
|
|
27
36
|
const validated = validateSync(schema, value);
|
|
28
37
|
return validated.ok && isRecord(validated.value) ? validated.value : void 0;
|