permdock 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/checks-CGkP3Z7A.js +40 -0
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/connector-schema-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/prompt-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/sources-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/text-diff-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import { n as CliError } from "./errors-
|
|
2
|
-
import { a as rel } from "./files-
|
|
1
|
+
import { n as CliError } from "./errors-Vpu6rKHl.js";
|
|
2
|
+
import { a as rel } from "./files-BSjrtIHw.js";
|
|
3
3
|
import { t as beforeFirst } from "./text-BMFRfBqc.js";
|
|
4
|
-
import { n as ROOT } from "./manifest-
|
|
4
|
+
import { n as ROOT } from "./manifest-Cgiq5oqc.js";
|
|
5
5
|
import { i as renameMessage, n as DEFAULT_CHANGES, r as flagRename, t as COMMAND_MOVES } from "./renames-CGj7YwcQ.js";
|
|
6
|
-
import {
|
|
6
|
+
import { i as refuseDirty, t as applyFiles } from "./files-B3AA05f1.js";
|
|
7
7
|
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
8
|
-
import { extname, join, resolve } from "node:path";
|
|
8
|
+
import { basename, extname, join, resolve } from "node:path";
|
|
9
9
|
import { Visitor, parseSync, visitorKeys } from "oxc-parser";
|
|
10
10
|
//#region src/cli/codemod/cli-calls.ts
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* `permdock`, `npx permdock@0.4`, `pnpm exec permdock`: the bin name followed
|
|
13
|
+
* by a space.
|
|
14
|
+
*/
|
|
12
15
|
const INVOCATION = /(?<![\w./@-])permdock(?:@[\w.^~-]+)?(?=[ \t])/gu;
|
|
13
16
|
/**
|
|
14
|
-
* Where a shell command ends: an operator, a pipe, a redirect, a comment or
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
+
* Where a shell command ends: an operator, a pipe, a redirect, a comment or a
|
|
18
|
+
* closing backtick. A JSON string also ends at its closing quote. `<id>` is a
|
|
19
|
+
* placeholder, not a redirect, so a redirect needs a space on both sides.
|
|
17
20
|
*/
|
|
18
21
|
function commandEnd(text, from, json) {
|
|
19
22
|
const match = (json ? /&&|\|\||[;|`)\n"]|(?<=\s)\d?[<>]{1,2}(?:&\d|\s)|\s#/u : /&&|\|\||[;|`)\n]|(?<=\s)\d?[<>]{1,2}(?:&\d|\s)|\s#/u).exec(text.slice(from));
|
|
@@ -33,7 +36,10 @@ function lineColumn(text, offset) {
|
|
|
33
36
|
column: offset - before.lastIndexOf("\n")
|
|
34
37
|
};
|
|
35
38
|
}
|
|
36
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* The leaf path the positional tokens name, with the token after which a moved
|
|
41
|
+
* subcommand goes.
|
|
42
|
+
*/
|
|
37
43
|
function commandOf(tokens) {
|
|
38
44
|
let node = ROOT;
|
|
39
45
|
const path = [];
|
|
@@ -116,8 +122,8 @@ function mappedValue(values, value) {
|
|
|
116
122
|
return Object.hasOwn(values, value) ? values[value] : void 0;
|
|
117
123
|
}
|
|
118
124
|
/**
|
|
119
|
-
* Rewrites the 0.5.0 CLI renames in shell commands: package.json scripts,
|
|
120
|
-
*
|
|
125
|
+
* Rewrites the 0.5.0 CLI renames in shell commands: package.json scripts, CI
|
|
126
|
+
* workflows, shell scripts. A rename that needs a person, such as an
|
|
121
127
|
* environment name that must become a project id, is a follow-up instead.
|
|
122
128
|
*/
|
|
123
129
|
function rewriteCliCalls(text, options) {
|
|
@@ -179,6 +185,380 @@ function dropWithSpace(text, edit) {
|
|
|
179
185
|
} : edit;
|
|
180
186
|
}
|
|
181
187
|
//#endregion
|
|
188
|
+
//#region src/cli/codemod/ast.ts
|
|
189
|
+
function nameOf(node) {
|
|
190
|
+
if (node?.type === "Literal") return typeof node.value === "string" ? node.value : void 0;
|
|
191
|
+
return node?.name;
|
|
192
|
+
}
|
|
193
|
+
const NOT_REFERENCES = /* @__PURE__ */ new Set([
|
|
194
|
+
"ImportSpecifier",
|
|
195
|
+
"ImportDefaultSpecifier",
|
|
196
|
+
"ImportNamespaceSpecifier",
|
|
197
|
+
"LabeledStatement",
|
|
198
|
+
"BreakStatement",
|
|
199
|
+
"ContinueStatement",
|
|
200
|
+
"TSEnumMember",
|
|
201
|
+
"TSModuleDeclaration",
|
|
202
|
+
"TSTypeParameter"
|
|
203
|
+
]);
|
|
204
|
+
const KEYED_MEMBERS = /* @__PURE__ */ new Set([
|
|
205
|
+
"MethodDefinition",
|
|
206
|
+
"PropertyDefinition",
|
|
207
|
+
"AccessorProperty",
|
|
208
|
+
"TSPropertySignature",
|
|
209
|
+
"TSMethodSignature",
|
|
210
|
+
"TSAbstractMethodDefinition",
|
|
211
|
+
"TSAbstractPropertyDefinition"
|
|
212
|
+
]);
|
|
213
|
+
/**
|
|
214
|
+
* How an identifier is read: a plain reference, a shorthand property value, the
|
|
215
|
+
* local of an `export { }`, or not a reference.
|
|
216
|
+
*/
|
|
217
|
+
function referencePlace(node, parent, ancestors) {
|
|
218
|
+
const type = parent.type;
|
|
219
|
+
if (node.type === "JSXIdentifier") return type === "JSXOpeningElement" || type === "JSXClosingElement" || type === "JSXMemberExpression" && parent.object === node ? "reference" : "none";
|
|
220
|
+
if (type === "Property") {
|
|
221
|
+
if (ancestors.at(-2)?.type === "ObjectPattern") return "none";
|
|
222
|
+
if (parent.shorthand === true) return parent.value === node ? "shorthand" : "none";
|
|
223
|
+
return parent.key === node && parent.computed !== true ? "none" : "reference";
|
|
224
|
+
}
|
|
225
|
+
if (type === "MemberExpression" || KEYED_MEMBERS.has(type)) return (type === "MemberExpression" ? parent.property : parent.key) === node && parent.computed !== true ? "none" : "reference";
|
|
226
|
+
if (type === "ExportSpecifier") {
|
|
227
|
+
const reexport = ancestors.at(-2)?.source !== null;
|
|
228
|
+
return parent.local === node && !reexport ? "export" : "none";
|
|
229
|
+
}
|
|
230
|
+
if (type === "TSQualifiedName") return parent.right === node ? "none" : "reference";
|
|
231
|
+
return NOT_REFERENCES.has(type) ? "none" : "reference";
|
|
232
|
+
}
|
|
233
|
+
function nodes(value) {
|
|
234
|
+
return Array.isArray(value) ? value.filter(isNode) : [];
|
|
235
|
+
}
|
|
236
|
+
function isNode(value) {
|
|
237
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* A child node under a field `Estree` types as something else (`value`, a type
|
|
241
|
+
* parameter's `name`).
|
|
242
|
+
*/
|
|
243
|
+
function child(node, field) {
|
|
244
|
+
const value = Reflect.get(node, field);
|
|
245
|
+
return isNode(value) ? value : void 0;
|
|
246
|
+
}
|
|
247
|
+
function patternNames(pattern, into) {
|
|
248
|
+
if (pattern === null || pattern === void 0) return;
|
|
249
|
+
switch (pattern.type) {
|
|
250
|
+
case "Identifier":
|
|
251
|
+
into.add(pattern.name ?? "");
|
|
252
|
+
return;
|
|
253
|
+
case "ObjectPattern":
|
|
254
|
+
for (const property of nodes(pattern.properties)) patternNames(property.type === "RestElement" ? property.argument : child(property, "value"), into);
|
|
255
|
+
return;
|
|
256
|
+
case "ArrayPattern":
|
|
257
|
+
for (const element of nodes(pattern.elements)) patternNames(element, into);
|
|
258
|
+
return;
|
|
259
|
+
default: patternNames(pattern.left ?? pattern.argument ?? pattern.parameter, into);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
const DECLARATIONS_WITH_ID = /* @__PURE__ */ new Set([
|
|
263
|
+
"FunctionDeclaration",
|
|
264
|
+
"ClassDeclaration",
|
|
265
|
+
"TSEnumDeclaration",
|
|
266
|
+
"TSTypeAliasDeclaration",
|
|
267
|
+
"TSInterfaceDeclaration",
|
|
268
|
+
"TSModuleDeclaration",
|
|
269
|
+
"TSImportEqualsDeclaration",
|
|
270
|
+
"TSDeclareFunction"
|
|
271
|
+
]);
|
|
272
|
+
function declareStatement(statement, into) {
|
|
273
|
+
const type = statement.type;
|
|
274
|
+
if (type === "VariableDeclaration") for (const declarator of nodes(statement.declarations)) patternNames(declarator.id, into);
|
|
275
|
+
else if (DECLARATIONS_WITH_ID.has(type)) patternNames(statement.id, into);
|
|
276
|
+
else if (statement.declaration !== null && statement.declaration !== void 0) declareStatement(statement.declaration, into);
|
|
277
|
+
else if (type === "ImportDeclaration") for (const spec of nodes(statement.specifiers)) patternNames(spec.local, into);
|
|
278
|
+
}
|
|
279
|
+
const BLOCK_SCOPES = /* @__PURE__ */ new Set([
|
|
280
|
+
"Program",
|
|
281
|
+
"BlockStatement",
|
|
282
|
+
"StaticBlock",
|
|
283
|
+
"TSModuleBlock"
|
|
284
|
+
]);
|
|
285
|
+
const FUNCTION_SCOPES = /* @__PURE__ */ new Set([
|
|
286
|
+
"FunctionDeclaration",
|
|
287
|
+
"FunctionExpression",
|
|
288
|
+
"ArrowFunctionExpression",
|
|
289
|
+
"TSDeclareFunction"
|
|
290
|
+
]);
|
|
291
|
+
/**
|
|
292
|
+
* The names a node declares for the code inside it; `undefined` for a node that
|
|
293
|
+
* opens no scope.
|
|
294
|
+
*/
|
|
295
|
+
function scopeBindings(node) {
|
|
296
|
+
const names = /* @__PURE__ */ new Set();
|
|
297
|
+
const declare = (statements) => {
|
|
298
|
+
for (const statement of statements) if (statement !== null && statement !== void 0) declareStatement(statement, names);
|
|
299
|
+
};
|
|
300
|
+
const type = node.type;
|
|
301
|
+
let opens = true;
|
|
302
|
+
if (BLOCK_SCOPES.has(type)) declare(nodes(node.body));
|
|
303
|
+
else if (FUNCTION_SCOPES.has(type)) {
|
|
304
|
+
for (const param of nodes(node.params)) patternNames(param, names);
|
|
305
|
+
patternNames(type === "FunctionExpression" ? node.id : void 0, names);
|
|
306
|
+
} else if (type === "ClassExpression") patternNames(node.id, names);
|
|
307
|
+
else if (type === "ForStatement") declare([node.init]);
|
|
308
|
+
else if (type === "ForInStatement" || type === "ForOfStatement") declare([node.left]);
|
|
309
|
+
else if (type === "CatchClause") patternNames(node.param, names);
|
|
310
|
+
else if (type === "SwitchStatement") declare(nodes(node.cases).flatMap((branch) => nodes(branch.consequent)));
|
|
311
|
+
else if (type === "TSMappedType") patternNames(node.key, names);
|
|
312
|
+
else opens = false;
|
|
313
|
+
for (const param of nodes(node.typeParameters?.params)) {
|
|
314
|
+
opens = true;
|
|
315
|
+
patternNames(child(param, "name"), names);
|
|
316
|
+
}
|
|
317
|
+
return opens ? names : void 0;
|
|
318
|
+
}
|
|
319
|
+
function bindingsCached(node, cache) {
|
|
320
|
+
let found = cache.get(node);
|
|
321
|
+
if (found === void 0) {
|
|
322
|
+
found = scopeBindings(node) ?? null;
|
|
323
|
+
cache.set(node, found);
|
|
324
|
+
}
|
|
325
|
+
return found;
|
|
326
|
+
}
|
|
327
|
+
function applyEdits(source, edits) {
|
|
328
|
+
let out = source;
|
|
329
|
+
for (const item of edits.toSorted((a, b) => b.start - a.start || b.end - a.end)) out = out.slice(0, item.start) + item.text + out.slice(item.end);
|
|
330
|
+
return out;
|
|
331
|
+
}
|
|
332
|
+
function position(lineAt, index) {
|
|
333
|
+
const { line, lineStart } = lineAt(index);
|
|
334
|
+
return {
|
|
335
|
+
line,
|
|
336
|
+
column: index - lineStart + 1
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
function lineIndex(source) {
|
|
340
|
+
const starts = [0];
|
|
341
|
+
for (let i = 0; i < source.length; i += 1) if (source.charCodeAt(i) === 10) starts.push(i + 1);
|
|
342
|
+
return (index) => {
|
|
343
|
+
let low = 0;
|
|
344
|
+
let high = starts.length - 1;
|
|
345
|
+
while (low < high) {
|
|
346
|
+
const mid = low + high + 1 >> 1;
|
|
347
|
+
if ((starts[mid] ?? 0) <= index) low = mid;
|
|
348
|
+
else high = mid - 1;
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
line: low + 1,
|
|
352
|
+
lineStart: starts[low] ?? 0
|
|
353
|
+
};
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Every node in source order with its parent and ancestors: Oxc nodes carry no
|
|
358
|
+
* parent, so enter and exit keep a stack.
|
|
359
|
+
*/
|
|
360
|
+
function walk(program, visit) {
|
|
361
|
+
const stack = [];
|
|
362
|
+
const handlers = {};
|
|
363
|
+
for (const type of Object.keys(visitorKeys)) {
|
|
364
|
+
handlers[type] = (node) => {
|
|
365
|
+
visit(node, stack.at(-1), stack);
|
|
366
|
+
stack.push(node);
|
|
367
|
+
};
|
|
368
|
+
handlers[`${type}:exit`] = () => {
|
|
369
|
+
stack.pop();
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
new Visitor(handlers).visit(program);
|
|
373
|
+
}
|
|
374
|
+
//#endregion
|
|
375
|
+
//#region src/cli/codemod/config-moves.ts
|
|
376
|
+
/** Passes over one file before the codemod stops; each pass moves one key. */
|
|
377
|
+
const MAX_PASSES = 500;
|
|
378
|
+
function unwrap(node) {
|
|
379
|
+
if (node?.type === "TSSatisfiesExpression" || node?.type === "TSAsExpression" || node?.type === "ParenthesizedExpression") return unwrap(child(node, "expression"));
|
|
380
|
+
if (node?.type === "CallExpression" && nameOf(node.callee) === "defineConfig") return unwrap(node.arguments?.[0]);
|
|
381
|
+
return node;
|
|
382
|
+
}
|
|
383
|
+
function configRoots(program, file) {
|
|
384
|
+
const roots = [];
|
|
385
|
+
const isConfigFile = basename(file).startsWith("permdock.config.");
|
|
386
|
+
walk(program, (node) => {
|
|
387
|
+
const root = node.type === "CallExpression" && nameOf(node.callee) === "defineConfig" ? unwrap(node) : node.type === "ExportDefaultDeclaration" && isConfigFile ? unwrap(node.declaration) : void 0;
|
|
388
|
+
if (root?.type === "ObjectExpression" && !roots.includes(root)) roots.push(root);
|
|
389
|
+
});
|
|
390
|
+
return roots;
|
|
391
|
+
}
|
|
392
|
+
function keyOf(property) {
|
|
393
|
+
return property.type === "Property" && property.computed !== true ? nameOf(property.key) : void 0;
|
|
394
|
+
}
|
|
395
|
+
function propertyOf(object, key) {
|
|
396
|
+
return nodes(object.properties).find((property) => keyOf(property) === key);
|
|
397
|
+
}
|
|
398
|
+
function objectValue(property) {
|
|
399
|
+
const value = child(property, "value");
|
|
400
|
+
return value?.type === "ObjectExpression" ? value : void 0;
|
|
401
|
+
}
|
|
402
|
+
/** The first property at `move.from` under `object`, with the concrete paths. */
|
|
403
|
+
function find(object, move, depth, path, skipped) {
|
|
404
|
+
const segment = move.from[depth];
|
|
405
|
+
if (segment === void 0) return;
|
|
406
|
+
const keys = segment === "*" ? nodes(object.properties).flatMap((property) => {
|
|
407
|
+
const key = keyOf(property);
|
|
408
|
+
return key === void 0 ? [] : [key];
|
|
409
|
+
}) : [segment];
|
|
410
|
+
for (const key of keys) {
|
|
411
|
+
const property = propertyOf(object, key);
|
|
412
|
+
if (property === void 0) continue;
|
|
413
|
+
const at = [...path, key];
|
|
414
|
+
if (depth === move.from.length - 1) {
|
|
415
|
+
if (skipped.has(property.start)) continue;
|
|
416
|
+
return {
|
|
417
|
+
parent: object,
|
|
418
|
+
property,
|
|
419
|
+
path: at
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
const next = objectValue(property);
|
|
423
|
+
const found = next === void 0 ? void 0 : find(next, move, depth + 1, at, skipped);
|
|
424
|
+
if (found !== void 0) return found;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/** `move.to` with each `*` replaced by the key `from` matched there. */
|
|
428
|
+
function concreteTarget(move, path) {
|
|
429
|
+
return move.to.map((segment, index) => segment === "*" ? path[index] ?? segment : segment);
|
|
430
|
+
}
|
|
431
|
+
function removal(source, parent, property) {
|
|
432
|
+
const siblings = nodes(parent.properties);
|
|
433
|
+
const index = siblings.indexOf(property);
|
|
434
|
+
const next = siblings[index + 1];
|
|
435
|
+
if (next !== void 0) return {
|
|
436
|
+
start: property.start,
|
|
437
|
+
end: next.start,
|
|
438
|
+
text: ""
|
|
439
|
+
};
|
|
440
|
+
const previous = siblings[index - 1];
|
|
441
|
+
const end = /^\s*,/u.exec(source.slice(property.end))?.[0].length ?? 0;
|
|
442
|
+
return previous === void 0 ? {
|
|
443
|
+
start: property.start,
|
|
444
|
+
end: property.end + end,
|
|
445
|
+
text: ""
|
|
446
|
+
} : {
|
|
447
|
+
start: previous.end,
|
|
448
|
+
end: property.end,
|
|
449
|
+
text: ""
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
/** Adds `text` as the last property of `object`, so moved keys keep their order. */
|
|
453
|
+
function append(source, object, text) {
|
|
454
|
+
const last = nodes(object.properties).at(-1);
|
|
455
|
+
if (last === void 0) return {
|
|
456
|
+
start: object.start + 1,
|
|
457
|
+
end: object.start + 1,
|
|
458
|
+
text: ` ${text} `
|
|
459
|
+
};
|
|
460
|
+
const comma = /^\s*,/u.exec(source.slice(last.end))?.[0].length;
|
|
461
|
+
return comma === void 0 ? {
|
|
462
|
+
start: last.end,
|
|
463
|
+
end: last.end,
|
|
464
|
+
text: `, ${text}`
|
|
465
|
+
} : {
|
|
466
|
+
start: last.end + comma,
|
|
467
|
+
end: last.end + comma,
|
|
468
|
+
text: ` ${text},`
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
function nested(keys, value) {
|
|
472
|
+
const [first, ...rest] = keys;
|
|
473
|
+
return rest.length === 0 ? `${first}: ${value}` : `${first}: { ${nested(rest, value)} }`;
|
|
474
|
+
}
|
|
475
|
+
function step(source, found, to) {
|
|
476
|
+
const relative = to.slice(found.path.length - 1);
|
|
477
|
+
const value = child(found.property, "value");
|
|
478
|
+
const text = value === void 0 ? "" : source.slice(value.start, value.end);
|
|
479
|
+
const from = found.path.join(".");
|
|
480
|
+
const target = to.join(".");
|
|
481
|
+
let object = found.parent;
|
|
482
|
+
for (const [index, key] of relative.entries()) {
|
|
483
|
+
const existing = propertyOf(object, key);
|
|
484
|
+
const last = index === relative.length - 1;
|
|
485
|
+
if (existing === void 0) {
|
|
486
|
+
const insert = nested(relative.slice(index), text);
|
|
487
|
+
return {
|
|
488
|
+
kind: "edits",
|
|
489
|
+
at: found.property.start,
|
|
490
|
+
from,
|
|
491
|
+
to: target,
|
|
492
|
+
edits: object === found.parent ? [{
|
|
493
|
+
start: found.property.start,
|
|
494
|
+
end: found.property.end,
|
|
495
|
+
text: insert
|
|
496
|
+
}] : [removal(source, found.parent, found.property), append(source, object, insert)]
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
const next = objectValue(existing);
|
|
500
|
+
if (last || next === void 0) return {
|
|
501
|
+
kind: "conflict",
|
|
502
|
+
at: found.property.start,
|
|
503
|
+
message: `${from} moved to ${target}, which ${last ? "is already set" : "is not an object literal"}; merge it by hand`
|
|
504
|
+
};
|
|
505
|
+
object = next;
|
|
506
|
+
}
|
|
507
|
+
return {
|
|
508
|
+
kind: "conflict",
|
|
509
|
+
at: found.property.start,
|
|
510
|
+
message: `${from} moved to ${target}; move it by hand`
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* The first move that applies under any config root. A move that conflicts is
|
|
515
|
+
* skipped from then on and reported once in `followUps`.
|
|
516
|
+
*/
|
|
517
|
+
function nextEdits(program, file, source, moves, skipped, followUps) {
|
|
518
|
+
for (const root of configRoots(program, file)) for (const move of moves) {
|
|
519
|
+
const found = find(root, move, 0, [], skipped);
|
|
520
|
+
if (found === void 0) continue;
|
|
521
|
+
const result = step(source, found, concreteTarget(move, found.path));
|
|
522
|
+
if (result.kind === "edits") return result;
|
|
523
|
+
skipped.add(found.property.start);
|
|
524
|
+
if (!followUps.some((item) => item.message === result.message)) followUps.push({
|
|
525
|
+
...position(lineIndex(source), result.at),
|
|
526
|
+
name: found.path.join("."),
|
|
527
|
+
message: result.message
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Moves each key `moves` names to its new path, one key per pass, until no move
|
|
533
|
+
* applies. A key whose target is already set, or sits under a value that is not
|
|
534
|
+
* an object literal, is reported instead.
|
|
535
|
+
*/
|
|
536
|
+
function moveConfigKeys(file, original, moves) {
|
|
537
|
+
let source = original;
|
|
538
|
+
const lineAt = lineIndex(original);
|
|
539
|
+
const changes = [];
|
|
540
|
+
const followUps = [];
|
|
541
|
+
const skipped = /* @__PURE__ */ new Set();
|
|
542
|
+
for (let pass = 0; pass < MAX_PASSES; pass += 1) {
|
|
543
|
+
const parsed = parseSync(file, source, { sourceType: "module" });
|
|
544
|
+
if (parsed.errors.length > 0) break;
|
|
545
|
+
const program = parsed.program;
|
|
546
|
+
const applied = nextEdits(program, file, source, moves, skipped, followUps);
|
|
547
|
+
if (applied === void 0) break;
|
|
548
|
+
changes.push({
|
|
549
|
+
...position(lineAt, Math.min(applied.at, original.length)),
|
|
550
|
+
from: applied.from,
|
|
551
|
+
to: applied.to
|
|
552
|
+
});
|
|
553
|
+
source = applyEdits(source, applied.edits);
|
|
554
|
+
}
|
|
555
|
+
return {
|
|
556
|
+
source,
|
|
557
|
+
changes,
|
|
558
|
+
followUps
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
//#endregion
|
|
182
562
|
//#region src/cli/codemod/renames-0.5.ts
|
|
183
563
|
const SERVER_ADAPTERS = [
|
|
184
564
|
"permdock/server",
|
|
@@ -797,6 +1177,94 @@ const SIGNATURE_CHANGES_0_5 = Object.freeze([
|
|
|
797
1177
|
after: "PermissionRequirementOptions"
|
|
798
1178
|
}
|
|
799
1179
|
]);
|
|
1180
|
+
/**
|
|
1181
|
+
* 0.8 folds the `tenant` / `team` config shorthands into the named-scope forms,
|
|
1182
|
+
* under the `tenant` / `team` aliases a policy's first and second scope answer
|
|
1183
|
+
* to.
|
|
1184
|
+
*/
|
|
1185
|
+
const CONFIG_MOVES_0_8 = Object.freeze([
|
|
1186
|
+
{
|
|
1187
|
+
from: ["rls", "tenantType"],
|
|
1188
|
+
to: [
|
|
1189
|
+
"rls",
|
|
1190
|
+
"scopeTypes",
|
|
1191
|
+
"tenant"
|
|
1192
|
+
]
|
|
1193
|
+
},
|
|
1194
|
+
{
|
|
1195
|
+
from: ["rls", "teamType"],
|
|
1196
|
+
to: [
|
|
1197
|
+
"rls",
|
|
1198
|
+
"scopeTypes",
|
|
1199
|
+
"team"
|
|
1200
|
+
]
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
from: [
|
|
1204
|
+
"rls",
|
|
1205
|
+
"memberships",
|
|
1206
|
+
"tenant"
|
|
1207
|
+
],
|
|
1208
|
+
to: [
|
|
1209
|
+
"rls",
|
|
1210
|
+
"memberships",
|
|
1211
|
+
"scopes",
|
|
1212
|
+
"tenant"
|
|
1213
|
+
]
|
|
1214
|
+
},
|
|
1215
|
+
{
|
|
1216
|
+
from: [
|
|
1217
|
+
"rls",
|
|
1218
|
+
"memberships",
|
|
1219
|
+
"team"
|
|
1220
|
+
],
|
|
1221
|
+
to: [
|
|
1222
|
+
"rls",
|
|
1223
|
+
"memberships",
|
|
1224
|
+
"scopes",
|
|
1225
|
+
"team"
|
|
1226
|
+
]
|
|
1227
|
+
},
|
|
1228
|
+
...[[
|
|
1229
|
+
"rls",
|
|
1230
|
+
"memberships",
|
|
1231
|
+
"scopes",
|
|
1232
|
+
"*"
|
|
1233
|
+
], [
|
|
1234
|
+
"rls",
|
|
1235
|
+
"memberships",
|
|
1236
|
+
"resource",
|
|
1237
|
+
"*"
|
|
1238
|
+
]].flatMap((table) => ["tenant", "team"].map((scope) => ({
|
|
1239
|
+
from: [...table, scope],
|
|
1240
|
+
to: [
|
|
1241
|
+
...table,
|
|
1242
|
+
"columns",
|
|
1243
|
+
scope
|
|
1244
|
+
]
|
|
1245
|
+
})))
|
|
1246
|
+
]);
|
|
1247
|
+
/**
|
|
1248
|
+
* 0.8 drops `team` from the client `RolesOptions`; `{ scope, id }` names any
|
|
1249
|
+
* scope. Reported, since only the reader knows the scope a `team` id belongs
|
|
1250
|
+
* to.
|
|
1251
|
+
*/
|
|
1252
|
+
const SIGNATURE_CHANGES_0_8 = Object.freeze([{
|
|
1253
|
+
name: "useRoles",
|
|
1254
|
+
entries: [
|
|
1255
|
+
"permdock/react",
|
|
1256
|
+
"permdock/react-native",
|
|
1257
|
+
"permdock/vue",
|
|
1258
|
+
"permdock/solid"
|
|
1259
|
+
],
|
|
1260
|
+
before: "useRoles({ team: id })",
|
|
1261
|
+
after: "useRoles({ scope: \"team\", id })"
|
|
1262
|
+
}, ...["roles", "rolesFor"].map((name) => ({
|
|
1263
|
+
name,
|
|
1264
|
+
entries: ["permdock/svelte"],
|
|
1265
|
+
before: `${name}(() => ({ team: id }))`,
|
|
1266
|
+
after: `${name}(() => ({ scope: "team", id }))`
|
|
1267
|
+
}))]);
|
|
800
1268
|
//#endregion
|
|
801
1269
|
//#region src/cli/codemod/shapes-0.5.ts
|
|
802
1270
|
const JSX_KITS = [
|
|
@@ -912,181 +1380,6 @@ const DURATION_KEYS_0_5 = Object.freeze({
|
|
|
912
1380
|
lists: ["durations"]
|
|
913
1381
|
});
|
|
914
1382
|
//#endregion
|
|
915
|
-
//#region src/cli/codemod/ast.ts
|
|
916
|
-
function nameOf(node) {
|
|
917
|
-
if (node?.type === "Literal") return typeof node.value === "string" ? node.value : void 0;
|
|
918
|
-
return node?.name;
|
|
919
|
-
}
|
|
920
|
-
const NOT_REFERENCES = /* @__PURE__ */ new Set([
|
|
921
|
-
"ImportSpecifier",
|
|
922
|
-
"ImportDefaultSpecifier",
|
|
923
|
-
"ImportNamespaceSpecifier",
|
|
924
|
-
"LabeledStatement",
|
|
925
|
-
"BreakStatement",
|
|
926
|
-
"ContinueStatement",
|
|
927
|
-
"TSEnumMember",
|
|
928
|
-
"TSModuleDeclaration",
|
|
929
|
-
"TSTypeParameter"
|
|
930
|
-
]);
|
|
931
|
-
const KEYED_MEMBERS = /* @__PURE__ */ new Set([
|
|
932
|
-
"MethodDefinition",
|
|
933
|
-
"PropertyDefinition",
|
|
934
|
-
"AccessorProperty",
|
|
935
|
-
"TSPropertySignature",
|
|
936
|
-
"TSMethodSignature",
|
|
937
|
-
"TSAbstractMethodDefinition",
|
|
938
|
-
"TSAbstractPropertyDefinition"
|
|
939
|
-
]);
|
|
940
|
-
/** How an identifier is read: a plain reference, a shorthand property value, the local of an `export { }`, or not a reference. */
|
|
941
|
-
function referencePlace(node, parent, ancestors) {
|
|
942
|
-
const type = parent.type;
|
|
943
|
-
if (node.type === "JSXIdentifier") return type === "JSXOpeningElement" || type === "JSXClosingElement" || type === "JSXMemberExpression" && parent.object === node ? "reference" : "none";
|
|
944
|
-
if (type === "Property") {
|
|
945
|
-
if (ancestors.at(-2)?.type === "ObjectPattern") return "none";
|
|
946
|
-
if (parent.shorthand === true) return parent.value === node ? "shorthand" : "none";
|
|
947
|
-
return parent.key === node && parent.computed !== true ? "none" : "reference";
|
|
948
|
-
}
|
|
949
|
-
if (type === "MemberExpression" || KEYED_MEMBERS.has(type)) return (type === "MemberExpression" ? parent.property : parent.key) === node && parent.computed !== true ? "none" : "reference";
|
|
950
|
-
if (type === "ExportSpecifier") {
|
|
951
|
-
const reexport = ancestors.at(-2)?.source !== null;
|
|
952
|
-
return parent.local === node && !reexport ? "export" : "none";
|
|
953
|
-
}
|
|
954
|
-
if (type === "TSQualifiedName") return parent.right === node ? "none" : "reference";
|
|
955
|
-
return NOT_REFERENCES.has(type) ? "none" : "reference";
|
|
956
|
-
}
|
|
957
|
-
function nodes(value) {
|
|
958
|
-
return Array.isArray(value) ? value.filter(isNode) : [];
|
|
959
|
-
}
|
|
960
|
-
function isNode(value) {
|
|
961
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
962
|
-
}
|
|
963
|
-
/** A child node under a field `Estree` types as something else (`value`, a type parameter's `name`). */
|
|
964
|
-
function child(node, field) {
|
|
965
|
-
const value = Reflect.get(node, field);
|
|
966
|
-
return isNode(value) ? value : void 0;
|
|
967
|
-
}
|
|
968
|
-
function patternNames(pattern, into) {
|
|
969
|
-
if (pattern === null || pattern === void 0) return;
|
|
970
|
-
switch (pattern.type) {
|
|
971
|
-
case "Identifier":
|
|
972
|
-
into.add(pattern.name ?? "");
|
|
973
|
-
return;
|
|
974
|
-
case "ObjectPattern":
|
|
975
|
-
for (const property of nodes(pattern.properties)) patternNames(property.type === "RestElement" ? property.argument : child(property, "value"), into);
|
|
976
|
-
return;
|
|
977
|
-
case "ArrayPattern":
|
|
978
|
-
for (const element of nodes(pattern.elements)) patternNames(element, into);
|
|
979
|
-
return;
|
|
980
|
-
default: patternNames(pattern.left ?? pattern.argument ?? pattern.parameter, into);
|
|
981
|
-
}
|
|
982
|
-
}
|
|
983
|
-
const DECLARATIONS_WITH_ID = /* @__PURE__ */ new Set([
|
|
984
|
-
"FunctionDeclaration",
|
|
985
|
-
"ClassDeclaration",
|
|
986
|
-
"TSEnumDeclaration",
|
|
987
|
-
"TSTypeAliasDeclaration",
|
|
988
|
-
"TSInterfaceDeclaration",
|
|
989
|
-
"TSModuleDeclaration",
|
|
990
|
-
"TSImportEqualsDeclaration",
|
|
991
|
-
"TSDeclareFunction"
|
|
992
|
-
]);
|
|
993
|
-
function declareStatement(statement, into) {
|
|
994
|
-
const type = statement.type;
|
|
995
|
-
if (type === "VariableDeclaration") for (const declarator of nodes(statement.declarations)) patternNames(declarator.id, into);
|
|
996
|
-
else if (DECLARATIONS_WITH_ID.has(type)) patternNames(statement.id, into);
|
|
997
|
-
else if (statement.declaration !== null && statement.declaration !== void 0) declareStatement(statement.declaration, into);
|
|
998
|
-
else if (type === "ImportDeclaration") for (const spec of nodes(statement.specifiers)) patternNames(spec.local, into);
|
|
999
|
-
}
|
|
1000
|
-
const BLOCK_SCOPES = /* @__PURE__ */ new Set([
|
|
1001
|
-
"Program",
|
|
1002
|
-
"BlockStatement",
|
|
1003
|
-
"StaticBlock",
|
|
1004
|
-
"TSModuleBlock"
|
|
1005
|
-
]);
|
|
1006
|
-
const FUNCTION_SCOPES = /* @__PURE__ */ new Set([
|
|
1007
|
-
"FunctionDeclaration",
|
|
1008
|
-
"FunctionExpression",
|
|
1009
|
-
"ArrowFunctionExpression",
|
|
1010
|
-
"TSDeclareFunction"
|
|
1011
|
-
]);
|
|
1012
|
-
/** The names a node declares for the code inside it; `undefined` for a node that opens no scope. */
|
|
1013
|
-
function scopeBindings(node) {
|
|
1014
|
-
const names = /* @__PURE__ */ new Set();
|
|
1015
|
-
const declare = (statements) => {
|
|
1016
|
-
for (const statement of statements) if (statement !== null && statement !== void 0) declareStatement(statement, names);
|
|
1017
|
-
};
|
|
1018
|
-
const type = node.type;
|
|
1019
|
-
let opens = true;
|
|
1020
|
-
if (BLOCK_SCOPES.has(type)) declare(nodes(node.body));
|
|
1021
|
-
else if (FUNCTION_SCOPES.has(type)) {
|
|
1022
|
-
for (const param of nodes(node.params)) patternNames(param, names);
|
|
1023
|
-
patternNames(type === "FunctionExpression" ? node.id : void 0, names);
|
|
1024
|
-
} else if (type === "ClassExpression") patternNames(node.id, names);
|
|
1025
|
-
else if (type === "ForStatement") declare([node.init]);
|
|
1026
|
-
else if (type === "ForInStatement" || type === "ForOfStatement") declare([node.left]);
|
|
1027
|
-
else if (type === "CatchClause") patternNames(node.param, names);
|
|
1028
|
-
else if (type === "SwitchStatement") declare(nodes(node.cases).flatMap((branch) => nodes(branch.consequent)));
|
|
1029
|
-
else if (type === "TSMappedType") patternNames(node.key, names);
|
|
1030
|
-
else opens = false;
|
|
1031
|
-
for (const param of nodes(node.typeParameters?.params)) {
|
|
1032
|
-
opens = true;
|
|
1033
|
-
patternNames(child(param, "name"), names);
|
|
1034
|
-
}
|
|
1035
|
-
return opens ? names : void 0;
|
|
1036
|
-
}
|
|
1037
|
-
function bindingsCached(node, cache) {
|
|
1038
|
-
let found = cache.get(node);
|
|
1039
|
-
if (found === void 0) {
|
|
1040
|
-
found = scopeBindings(node) ?? null;
|
|
1041
|
-
cache.set(node, found);
|
|
1042
|
-
}
|
|
1043
|
-
return found;
|
|
1044
|
-
}
|
|
1045
|
-
function applyEdits(source, edits) {
|
|
1046
|
-
let out = source;
|
|
1047
|
-
for (const item of edits.toSorted((a, b) => b.start - a.start || b.end - a.end)) out = out.slice(0, item.start) + item.text + out.slice(item.end);
|
|
1048
|
-
return out;
|
|
1049
|
-
}
|
|
1050
|
-
function position(lineAt, index) {
|
|
1051
|
-
const { line, lineStart } = lineAt(index);
|
|
1052
|
-
return {
|
|
1053
|
-
line,
|
|
1054
|
-
column: index - lineStart + 1
|
|
1055
|
-
};
|
|
1056
|
-
}
|
|
1057
|
-
function lineIndex(source) {
|
|
1058
|
-
const starts = [0];
|
|
1059
|
-
for (let i = 0; i < source.length; i += 1) if (source.charCodeAt(i) === 10) starts.push(i + 1);
|
|
1060
|
-
return (index) => {
|
|
1061
|
-
let low = 0;
|
|
1062
|
-
let high = starts.length - 1;
|
|
1063
|
-
while (low < high) {
|
|
1064
|
-
const mid = low + high + 1 >> 1;
|
|
1065
|
-
if ((starts[mid] ?? 0) <= index) low = mid;
|
|
1066
|
-
else high = mid - 1;
|
|
1067
|
-
}
|
|
1068
|
-
return {
|
|
1069
|
-
line: low + 1,
|
|
1070
|
-
lineStart: starts[low] ?? 0
|
|
1071
|
-
};
|
|
1072
|
-
};
|
|
1073
|
-
}
|
|
1074
|
-
/** Every node in source order with its parent and ancestors: Oxc nodes carry no parent, so enter and exit keep a stack. */
|
|
1075
|
-
function walk(program, visit) {
|
|
1076
|
-
const stack = [];
|
|
1077
|
-
const handlers = {};
|
|
1078
|
-
for (const type of Object.keys(visitorKeys)) {
|
|
1079
|
-
handlers[type] = (node) => {
|
|
1080
|
-
visit(node, stack.at(-1), stack);
|
|
1081
|
-
stack.push(node);
|
|
1082
|
-
};
|
|
1083
|
-
handlers[`${type}:exit`] = () => {
|
|
1084
|
-
stack.pop();
|
|
1085
|
-
};
|
|
1086
|
-
}
|
|
1087
|
-
new Visitor(handlers).visit(program);
|
|
1088
|
-
}
|
|
1089
|
-
//#endregion
|
|
1090
1383
|
//#region src/cli/codemod/context.ts
|
|
1091
1384
|
/** One version's rename map: what the codemod rewrites and what it only reports. */
|
|
1092
1385
|
const SCRIPT_BLOCK = /<script\b([^>]*)>([\s\S]*?)<\/script>/gu;
|
|
@@ -1121,7 +1414,10 @@ function renameOf(set, name, entry) {
|
|
|
1121
1414
|
function listOf(items) {
|
|
1122
1415
|
return new Intl.ListFormat("en-GB", { type: "disjunction" }).format(items);
|
|
1123
1416
|
}
|
|
1124
|
-
/**
|
|
1417
|
+
/**
|
|
1418
|
+
* The import a call's callee is bound to: a named import, or a member of a
|
|
1419
|
+
* namespace import.
|
|
1420
|
+
*/
|
|
1125
1421
|
function importedCallee(ctx, callee, ancestors) {
|
|
1126
1422
|
if (callee?.type === "Identifier") {
|
|
1127
1423
|
const name = callee.name ?? "";
|
|
@@ -1744,7 +2040,10 @@ function visitMember(ctx, node, ancestors) {
|
|
|
1744
2040
|
else if (origin === void 0) reportMethods(ctx, [property], "member", "is on a value from");
|
|
1745
2041
|
}
|
|
1746
2042
|
}
|
|
1747
|
-
/**
|
|
2043
|
+
/**
|
|
2044
|
+
* `const x = f(…)` or `const x = await f(…)` at module level, where `f` is
|
|
2045
|
+
* imported from a permdock entry.
|
|
2046
|
+
*/
|
|
1748
2047
|
function factoryValues(program, bindings) {
|
|
1749
2048
|
const out = /* @__PURE__ */ new Map();
|
|
1750
2049
|
for (const statement of nodes(program.body)) {
|
|
@@ -1808,8 +2107,8 @@ function renameOptions(ctx, object, rows) {
|
|
|
1808
2107
|
}
|
|
1809
2108
|
}
|
|
1810
2109
|
/**
|
|
1811
|
-
* Rows with `calls` are renamed at those calls and nowhere else: their old
|
|
1812
|
-
*
|
|
2110
|
+
* Rows with `calls` are renamed at those calls and nowhere else: their old key
|
|
2111
|
+
* (`store`) is still a valid option on every other factory. Rows without
|
|
1813
2112
|
* `calls` are reported only on an object that reaches a permdock call.
|
|
1814
2113
|
*/
|
|
1815
2114
|
function reportOptions(ctx, node, ancestors) {
|
|
@@ -1831,9 +2130,9 @@ const PASS_THROUGH = /* @__PURE__ */ new Set([
|
|
|
1831
2130
|
"TSNonNullExpression"
|
|
1832
2131
|
]);
|
|
1833
2132
|
/**
|
|
1834
|
-
* The permdock call an object literal is an argument of, directly or nested
|
|
1835
|
-
*
|
|
1836
|
-
*
|
|
2133
|
+
* The permdock call an object literal is an argument of, directly or nested in
|
|
2134
|
+
* another argument's object, array or property value. `entry` is unset for a
|
|
2135
|
+
* method on a receiver named after PermDock, whose entry is unknown.
|
|
1837
2136
|
*/
|
|
1838
2137
|
function optionTarget(ctx, node, ancestors) {
|
|
1839
2138
|
let child = node;
|
|
@@ -1858,8 +2157,8 @@ function rewriteImports(ctx, removed) {
|
|
|
1858
2157
|
const { rename, spec } = binding;
|
|
1859
2158
|
const imported = spec.imported;
|
|
1860
2159
|
if (rename === void 0 || imported === void 0 || removed.has(local)) continue;
|
|
1861
|
-
if (local
|
|
1862
|
-
else replace(ctx, imported,
|
|
2160
|
+
if (local === binding.imported) replace(ctx, imported, ctx.kept.has(local) ? `${rename.to} as ${local}` : rename.to, rename.from);
|
|
2161
|
+
else replace(ctx, imported, imported.type === "Literal" ? JSON.stringify(rename.to) : rename.to, rename.from);
|
|
1863
2162
|
}
|
|
1864
2163
|
}
|
|
1865
2164
|
function rewriteReferences(ctx) {
|
|
@@ -1873,7 +2172,10 @@ function rewriteReferences(ctx) {
|
|
|
1873
2172
|
else replace(ctx, node, rename.to, name);
|
|
1874
2173
|
}
|
|
1875
2174
|
}
|
|
1876
|
-
/**
|
|
2175
|
+
/**
|
|
2176
|
+
* `export { a } from 'permdock'` keeps exporting `a`: the module's own export
|
|
2177
|
+
* name is not the codemod's to change.
|
|
2178
|
+
*/
|
|
1877
2179
|
function rewriteReexports(ctx) {
|
|
1878
2180
|
for (const statement of nodes(ctx.program.body)) {
|
|
1879
2181
|
const entry = statement.source?.value;
|
|
@@ -1909,8 +2211,16 @@ const CODEMOD_0_5 = Object.freeze({
|
|
|
1909
2211
|
wraps: OPTION_WRAPS_0_5,
|
|
1910
2212
|
durations: DURATION_KEYS_0_5
|
|
1911
2213
|
});
|
|
2214
|
+
const CODEMOD_0_8 = Object.freeze({
|
|
2215
|
+
renames: [],
|
|
2216
|
+
signatures: SIGNATURE_CHANGES_0_8,
|
|
2217
|
+
configMoves: CONFIG_MOVES_0_8
|
|
2218
|
+
});
|
|
1912
2219
|
/** Each codemod version and the rename map it applies. */
|
|
1913
|
-
const CODEMODS = Object.freeze({
|
|
2220
|
+
const CODEMODS = Object.freeze({
|
|
2221
|
+
"0.5": CODEMOD_0_5,
|
|
2222
|
+
"0.8": CODEMOD_0_8
|
|
2223
|
+
});
|
|
1914
2224
|
function codemodVersions() {
|
|
1915
2225
|
return Object.keys(CODEMODS);
|
|
1916
2226
|
}
|
|
@@ -1926,7 +2236,10 @@ const EXTENSIONS = /* @__PURE__ */ new Set([
|
|
|
1926
2236
|
".vue",
|
|
1927
2237
|
".svelte"
|
|
1928
2238
|
]);
|
|
1929
|
-
/**
|
|
2239
|
+
/**
|
|
2240
|
+
* Files whose shell commands the codemod rewrites when the version renames CLI
|
|
2241
|
+
* names.
|
|
2242
|
+
*/
|
|
1930
2243
|
const CLI_FILE_NAMES = /* @__PURE__ */ new Set([
|
|
1931
2244
|
"package.json",
|
|
1932
2245
|
"Makefile",
|
|
@@ -1968,9 +2281,9 @@ function codemod(options) {
|
|
|
1968
2281
|
const writes = [];
|
|
1969
2282
|
for (const file of files) {
|
|
1970
2283
|
const source = readFileSync(file, "utf8");
|
|
1971
|
-
if (!source.includes("permdock")) continue;
|
|
2284
|
+
if (!source.includes("permdock") && !basename(file).startsWith("permdock.config.")) continue;
|
|
1972
2285
|
const name = rel(options.cwd, file);
|
|
1973
|
-
const result = isCodeFile(file) ? transformSource(file, source, set) : cliResult(file, source);
|
|
2286
|
+
const result = isCodeFile(file) ? withConfigMoves(file, transformSource(file, source, set), set) : cliResult(file, source);
|
|
1974
2287
|
if (result.error !== void 0) {
|
|
1975
2288
|
followUps.push({
|
|
1976
2289
|
file: name,
|
|
@@ -2018,6 +2331,15 @@ function codemod(options) {
|
|
|
2018
2331
|
followUps
|
|
2019
2332
|
};
|
|
2020
2333
|
}
|
|
2334
|
+
function withConfigMoves(file, result, set) {
|
|
2335
|
+
if (result.error !== void 0 || set.configMoves === void 0) return result;
|
|
2336
|
+
const moved = moveConfigKeys(file, result.source, set.configMoves);
|
|
2337
|
+
return {
|
|
2338
|
+
source: moved.source,
|
|
2339
|
+
changes: [...result.changes, ...moved.changes],
|
|
2340
|
+
followUps: [...result.followUps, ...moved.followUps]
|
|
2341
|
+
};
|
|
2342
|
+
}
|
|
2021
2343
|
function normaliseVersion(version) {
|
|
2022
2344
|
if (version === void 0) throw new CliError("usage", `codemod needs a version: permdock codemod <version>. Supported: ${Object.keys(CODEMODS).join(", ")}.`);
|
|
2023
2345
|
return /^v?(\d+\.\d+)(?:\.\d+)?$/u.exec(version)?.[1] ?? version;
|