powerlines 0.10.0 → 0.10.1
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/dist/astro.cjs +9 -9
- package/dist/astro.d.cts +2 -1
- package/dist/astro.d.ts +2 -1
- package/dist/astro.js +6 -6
- package/dist/{chunk-UESICHEO.cjs → chunk-2RHPFVYT.cjs} +17 -18
- package/dist/{chunk-75B5EPR4.js → chunk-3Y5CCIJR.js} +3 -3
- package/dist/{chunk-YE56I7CZ.cjs → chunk-5XYGZ3DC.cjs} +2 -2
- package/dist/{chunk-PFCQFK7H.js → chunk-5Y4JYQ66.js} +3 -3
- package/dist/{chunk-H2SX5ZYF.cjs → chunk-66GXB2UY.cjs} +4 -4
- package/dist/{chunk-VOB62ELC.js → chunk-6TJGZR5X.js} +4 -4
- package/dist/{chunk-BWZCYCIF.js → chunk-6UDHGAAI.js} +3 -3
- package/dist/{chunk-ETEQKM36.cjs → chunk-7IWH37DY.cjs} +2 -2
- package/dist/{chunk-GI35XXXH.js → chunk-EGSEJQCE.js} +3 -3
- package/dist/{chunk-ILVCZATT.js → chunk-GPPJ2CRE.js} +2 -2
- package/dist/{chunk-54SOH6E5.js → chunk-HVT7PBFF.js} +3 -3
- package/dist/chunk-IJBH5OUN.cjs +12 -0
- package/dist/chunk-JBTSAOIQ.js +31 -0
- package/dist/{chunk-MXYZKFOD.js → chunk-KYGEWAEG.js} +3 -3
- package/dist/{chunk-6X6QQH33.cjs → chunk-L2SAK2JC.cjs} +4 -4
- package/dist/chunk-LXMNDUPG.cjs +12 -0
- package/dist/{chunk-V56DIXOO.js → chunk-N7NE3VOU.js} +4 -4
- package/dist/{chunk-D55IOUF3.js → chunk-OYIM2M74.js} +522 -517
- package/dist/{chunk-RRGXS7GZ.cjs → chunk-QHGPZK2H.cjs} +4 -4
- package/dist/chunk-RQ4CHMPO.cjs +12 -0
- package/dist/chunk-S5QFX2GM.cjs +12 -0
- package/dist/{chunk-KCDZ3LCF.js → chunk-S746E63M.js} +3 -3
- package/dist/{chunk-FBBWXUGK.js → chunk-SDEBJQDT.js} +12 -13
- package/dist/chunk-SL3CXJWD.cjs +34 -0
- package/dist/{chunk-I5D3SVUH.cjs → chunk-UHCRNFFC.cjs} +9 -9
- package/dist/{chunk-5ST7UKJF.cjs → chunk-UTVZVGM3.cjs} +530 -525
- package/dist/{chunk-QIKKQQF7.cjs → chunk-UZQYBO6Z.cjs} +4 -4
- package/dist/{chunk-YOHDGH77.js → chunk-VIRKTIPK.js} +3 -3
- package/dist/{chunk-WAWIGYB4.js → chunk-WCPY7HPU.js} +4 -4
- package/dist/{chunk-MMDBMHAW.js → chunk-WPVIF35O.js} +2 -2
- package/dist/chunk-YG7U2GIR.cjs +24 -0
- package/dist/{chunk-DOBCIS3U.cjs → chunk-ZBDP43LG.cjs} +6 -6
- package/dist/chunk-ZFATNDSY.cjs +12 -0
- package/dist/{chunk-4R6CQNB2.js → chunk-ZU4IRZSQ.js} +7 -7
- package/dist/define-config.d.cts +2 -1
- package/dist/define-config.d.ts +2 -1
- package/dist/esbuild.cjs +8 -8
- package/dist/esbuild.d.cts +2 -1
- package/dist/esbuild.d.ts +2 -1
- package/dist/esbuild.js +5 -5
- package/dist/extend-plugin.d.cts +2 -1
- package/dist/extend-plugin.d.ts +2 -1
- package/dist/farm.cjs +4 -4
- package/dist/farm.d.cts +2 -1
- package/dist/farm.d.ts +2 -1
- package/dist/farm.js +3 -3
- package/dist/{hooks-D0gf1nT3.d.ts → hooks-BGYnc61f.d.ts} +1 -1
- package/dist/{hooks-fVJu9DCF.d.cts → hooks-gk8S8LFP.d.cts} +1 -1
- package/dist/index.cjs +27 -27
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +18 -18
- package/dist/internal/api.cjs +3 -3
- package/dist/internal/api.d.cts +3 -2
- package/dist/internal/api.d.ts +3 -2
- package/dist/internal/api.js +2 -2
- package/dist/lib/build/esbuild.cjs +4 -4
- package/dist/lib/build/esbuild.d.cts +2 -1
- package/dist/lib/build/esbuild.d.ts +2 -1
- package/dist/lib/build/esbuild.js +1 -1
- package/dist/lib/build/index.cjs +25 -25
- package/dist/lib/build/index.d.cts +3 -2
- package/dist/lib/build/index.d.ts +3 -2
- package/dist/lib/build/index.js +9 -9
- package/dist/lib/build/rolldown.cjs +3 -3
- package/dist/lib/build/rolldown.d.cts +2 -1
- package/dist/lib/build/rolldown.d.ts +2 -1
- package/dist/lib/build/rolldown.js +2 -2
- package/dist/lib/build/rollup.cjs +3 -3
- package/dist/lib/build/rollup.d.cts +2 -1
- package/dist/lib/build/rollup.d.ts +2 -1
- package/dist/lib/build/rollup.js +1 -1
- package/dist/lib/build/rspack.cjs +2 -2
- package/dist/lib/build/rspack.d.cts +2 -1
- package/dist/lib/build/rspack.d.ts +2 -1
- package/dist/lib/build/rspack.js +1 -1
- package/dist/lib/build/tsup.cjs +5 -5
- package/dist/lib/build/tsup.d.cts +2 -1
- package/dist/lib/build/tsup.d.ts +2 -1
- package/dist/lib/build/tsup.js +2 -2
- package/dist/lib/build/unbuild.cjs +6 -6
- package/dist/lib/build/unbuild.d.cts +3 -2
- package/dist/lib/build/unbuild.d.ts +3 -2
- package/dist/lib/build/unbuild.js +3 -3
- package/dist/lib/build/vite.cjs +4 -4
- package/dist/lib/build/vite.d.cts +2 -1
- package/dist/lib/build/vite.d.ts +2 -1
- package/dist/lib/build/vite.js +2 -2
- package/dist/lib/build/webpack.cjs +2 -2
- package/dist/lib/build/webpack.d.cts +2 -1
- package/dist/lib/build/webpack.d.ts +2 -1
- package/dist/lib/build/webpack.js +1 -1
- package/dist/lib/{chunk-7CZ2QZEV.js → chunk-3I2YOM2E.js} +4 -4
- package/dist/lib/chunk-3I2YOM2E.js.map +1 -0
- package/dist/lib/{chunk-KAOWUIFH.cjs → chunk-4XUVP2LL.cjs} +3 -3
- package/dist/lib/chunk-4XUVP2LL.cjs.map +1 -0
- package/dist/lib/{chunk-ZKYZWEHY.cjs → chunk-6U2UX2PX.cjs} +4 -4
- package/dist/lib/chunk-6U2UX2PX.cjs.map +1 -0
- package/dist/lib/{chunk-VRNWPH35.cjs → chunk-7EAV6Q7B.cjs} +10 -9
- package/dist/lib/chunk-7EAV6Q7B.cjs.map +1 -0
- package/dist/lib/{chunk-ZYBUJ2HE.js → chunk-CAPN4FSS.js} +7 -7
- package/dist/lib/chunk-CAPN4FSS.js.map +1 -0
- package/dist/lib/{chunk-LTBRHAQ2.cjs → chunk-GJNFAFKR.cjs} +4 -4
- package/dist/lib/chunk-GJNFAFKR.cjs.map +1 -0
- package/dist/lib/{chunk-VANFTXBT.cjs → chunk-GWYTWFZE.cjs} +7 -7
- package/dist/lib/chunk-GWYTWFZE.cjs.map +1 -0
- package/dist/lib/{chunk-DKE25WTL.js → chunk-HQ6TGY34.js} +2 -2
- package/dist/lib/chunk-HQ6TGY34.js.map +1 -0
- package/dist/lib/{chunk-QSBORJCS.js → chunk-HZDOJWUO.js} +6 -6
- package/dist/lib/chunk-HZDOJWUO.js.map +1 -0
- package/dist/lib/{chunk-ECJPGNXE.cjs → chunk-IK3ABDPP.cjs} +2 -2
- package/dist/lib/chunk-IK3ABDPP.cjs.map +1 -0
- package/dist/lib/{chunk-G5DJO4HA.cjs → chunk-JTUL3477.cjs} +5 -5
- package/dist/lib/chunk-JTUL3477.cjs.map +1 -0
- package/dist/lib/{chunk-E7UTFXPP.js → chunk-KFE2IR3Y.js} +4 -4
- package/dist/lib/chunk-KFE2IR3Y.js.map +1 -0
- package/dist/lib/{chunk-RY67J24J.js → chunk-KSBESEOF.js} +2 -2
- package/dist/lib/chunk-KSBESEOF.js.map +1 -0
- package/dist/lib/{chunk-26W3IQT6.js → chunk-LTVWU4J2.js} +5 -5
- package/dist/lib/chunk-LTVWU4J2.js.map +1 -0
- package/dist/lib/{chunk-GWAVDFOE.js → chunk-M7U5RMK7.js} +8 -6
- package/dist/lib/chunk-M7U5RMK7.js.map +1 -0
- package/dist/lib/{chunk-2D74QBNW.cjs → chunk-M7WHFUKR.cjs} +524 -522
- package/dist/lib/chunk-M7WHFUKR.cjs.map +1 -0
- package/dist/lib/{chunk-EOO7IRCI.js → chunk-MAHHHINV.js} +3 -3
- package/dist/lib/chunk-MAHHHINV.js.map +1 -0
- package/dist/lib/{chunk-7FQQFIHR.cjs → chunk-NANLYIUO.cjs} +4 -4
- package/dist/lib/chunk-NANLYIUO.cjs.map +1 -0
- package/dist/lib/{chunk-TNCZYSNV.js → chunk-NE46WXNJ.js} +2 -2
- package/dist/lib/chunk-NE46WXNJ.js.map +1 -0
- package/dist/lib/{chunk-QGJVGFY4.js → chunk-OF5IJ4WG.js} +6 -6
- package/dist/lib/chunk-OF5IJ4WG.js.map +1 -0
- package/dist/lib/{chunk-WDNYOFEH.js → chunk-PIFE7MUZ.js} +500 -498
- package/dist/lib/chunk-PIFE7MUZ.js.map +1 -0
- package/dist/lib/{chunk-2ZYHO243.js → chunk-PXSRMP4E.js} +2 -2
- package/dist/lib/chunk-PXSRMP4E.js.map +1 -0
- package/dist/lib/{chunk-CXYZENE4.js → chunk-Q2L3FNJO.js} +13 -7
- package/dist/lib/chunk-Q2L3FNJO.js.map +1 -0
- package/dist/lib/{chunk-XFIGAAKN.cjs → chunk-Q2RUDKWY.cjs} +8 -6
- package/dist/lib/chunk-Q2RUDKWY.cjs.map +1 -0
- package/dist/lib/{chunk-NFDRIBCM.js → chunk-Q3KJZ3B5.js} +5 -7
- package/dist/lib/chunk-Q3KJZ3B5.js.map +1 -0
- package/dist/lib/{chunk-FHZJQZOE.cjs → chunk-QXJHCA3E.cjs} +7 -7
- package/dist/lib/chunk-QXJHCA3E.cjs.map +1 -0
- package/dist/lib/{chunk-TZFBE35T.cjs → chunk-RQICHHZM.cjs} +2 -2
- package/dist/lib/chunk-RQICHHZM.cjs.map +1 -0
- package/dist/lib/{chunk-7MXG5EG2.js → chunk-RXQWNSZX.js} +3 -3
- package/dist/lib/chunk-RXQWNSZX.js.map +1 -0
- package/dist/lib/{chunk-I6A564OE.cjs → chunk-U36VZLW6.cjs} +2 -2
- package/dist/lib/chunk-U36VZLW6.cjs.map +1 -0
- package/dist/lib/{chunk-65DUUIIF.cjs → chunk-UQJWVRRE.cjs} +2 -2
- package/dist/lib/chunk-UQJWVRRE.cjs.map +1 -0
- package/dist/lib/{chunk-XHCRXNQ3.cjs → chunk-V5OY4ALI.cjs} +5 -5
- package/dist/lib/chunk-V5OY4ALI.cjs.map +1 -0
- package/dist/lib/{chunk-I3I4BYJ4.js → chunk-VJN72T2O.js} +5 -5
- package/dist/lib/chunk-VJN72T2O.js.map +1 -0
- package/dist/lib/{chunk-KACTPBW2.cjs → chunk-W4OMKQ7W.cjs} +14 -8
- package/dist/lib/chunk-W4OMKQ7W.cjs.map +1 -0
- package/dist/lib/{chunk-SB3NFYXT.cjs → chunk-XZD7S5TU.cjs} +5 -5
- package/dist/lib/chunk-XZD7S5TU.cjs.map +1 -0
- package/dist/lib/{chunk-PJKWY74P.js → chunk-YBIWVB66.js} +10 -9
- package/dist/lib/chunk-YBIWVB66.js.map +1 -0
- package/dist/lib/{chunk-JXIRUV56.js → chunk-YF3YHK4X.js} +5 -5
- package/dist/lib/chunk-YF3YHK4X.js.map +1 -0
- package/dist/lib/{chunk-TJQEGHJA.cjs → chunk-YVDJCVE5.cjs} +12 -12
- package/dist/lib/chunk-YVDJCVE5.cjs.map +1 -0
- package/dist/lib/{chunk-M2TB43VG.cjs → chunk-ZP7PDTVE.cjs} +7 -9
- package/dist/lib/chunk-ZP7PDTVE.cjs.map +1 -0
- package/dist/lib/{config-BOPIY57U.d.cts → config-AuIGsUck.d.cts} +110 -106
- package/dist/lib/{config-Chd_3Uh3.d.ts → config-B_WTwd49.d.ts} +110 -106
- package/dist/lib/config-file.d.cts +2 -1
- package/dist/lib/config-file.d.ts +2 -1
- package/dist/lib/entry.d.cts +2 -1
- package/dist/lib/entry.d.ts +2 -1
- package/dist/lib/{hooks-DkVRKYVN.d.cts → hooks-4KkL9GD2.d.cts} +1 -1
- package/dist/lib/{hooks-56fQP2HY.d.ts → hooks-DErK4Fv4.d.ts} +1 -1
- package/dist/lib/index.cjs +36 -36
- package/dist/lib/index.d.cts +3 -2
- package/dist/lib/index.d.ts +3 -2
- package/dist/lib/index.js +11 -11
- package/dist/lib/logger.d.cts +2 -1
- package/dist/lib/logger.d.ts +2 -1
- package/dist/lib/typescript/compiler-host.cjs +6 -6
- package/dist/lib/typescript/compiler-host.cjs.map +1 -1
- package/dist/lib/typescript/compiler-host.d.cts +2 -1
- package/dist/lib/typescript/compiler-host.d.ts +2 -1
- package/dist/lib/typescript/compiler-host.js +5 -5
- package/dist/lib/typescript/compiler-host.js.map +1 -1
- package/dist/lib/typescript/import-transformer.cjs +1 -1
- package/dist/lib/typescript/import-transformer.cjs.map +1 -1
- package/dist/lib/typescript/import-transformer.d.cts +2 -1
- package/dist/lib/typescript/import-transformer.d.ts +2 -1
- package/dist/lib/typescript/import-transformer.js +1 -1
- package/dist/lib/typescript/import-transformer.js.map +1 -1
- package/dist/lib/typescript/index.cjs +6 -6
- package/dist/lib/typescript/index.d.cts +2 -1
- package/dist/lib/typescript/index.d.ts +2 -1
- package/dist/lib/typescript/index.js +1 -1
- package/dist/lib/typescript/program.cjs +6 -6
- package/dist/lib/typescript/program.d.cts +2 -1
- package/dist/lib/typescript/program.d.ts +2 -1
- package/dist/lib/typescript/program.js +1 -1
- package/dist/lib/unplugin/factory.cjs +6 -6
- package/dist/lib/unplugin/factory.d.cts +3 -2
- package/dist/lib/unplugin/factory.d.ts +3 -2
- package/dist/lib/unplugin/factory.js +5 -5
- package/dist/lib/unplugin/index.cjs +9 -9
- package/dist/lib/unplugin/index.d.cts +3 -2
- package/dist/lib/unplugin/index.d.ts +3 -2
- package/dist/lib/unplugin/index.js +6 -6
- package/dist/lib/unplugin/plugin.cjs +4 -4
- package/dist/lib/unplugin/plugin.d.cts +2 -1
- package/dist/lib/unplugin/plugin.d.ts +2 -1
- package/dist/lib/unplugin/plugin.js +3 -3
- package/dist/lib/unplugin/resolve-id.cjs +2 -2
- package/dist/lib/unplugin/resolve-id.d.cts +2 -1
- package/dist/lib/unplugin/resolve-id.d.ts +2 -1
- package/dist/lib/unplugin/resolve-id.js +1 -1
- package/dist/lib/utilities/cache.cjs +4 -4
- package/dist/lib/utilities/cache.js +2 -2
- package/dist/lib/utilities/file-header.d.cts +2 -1
- package/dist/lib/utilities/file-header.d.ts +2 -1
- package/dist/lib/utilities/index.cjs +24 -24
- package/dist/lib/utilities/index.d.cts +2 -1
- package/dist/lib/utilities/index.d.ts +2 -1
- package/dist/lib/utilities/index.js +7 -7
- package/dist/lib/utilities/meta.cjs +8 -8
- package/dist/lib/utilities/meta.d.cts +2 -1
- package/dist/lib/utilities/meta.d.ts +2 -1
- package/dist/lib/utilities/meta.js +1 -1
- package/dist/lib/utilities/plugin-helpers.d.cts +2 -1
- package/dist/lib/utilities/plugin-helpers.d.ts +2 -1
- package/dist/lib/utilities/resolve-path.cjs +2 -2
- package/dist/lib/utilities/resolve-path.d.cts +2 -1
- package/dist/lib/utilities/resolve-path.d.ts +2 -1
- package/dist/lib/utilities/resolve-path.js +1 -1
- package/dist/lib/utilities/source-file.cjs +4 -4
- package/dist/lib/utilities/source-file.js +1 -1
- package/dist/lib/utilities/source-map.cjs +2 -2
- package/dist/lib/utilities/source-map.js +1 -1
- package/dist/lib/utilities/worker.cjs +3 -3
- package/dist/lib/utilities/worker.d.cts +2 -1
- package/dist/lib/utilities/worker.d.ts +2 -1
- package/dist/lib/utilities/worker.js +1 -1
- package/dist/lib/utilities/write-file.cjs +2 -2
- package/dist/lib/utilities/write-file.d.cts +2 -1
- package/dist/lib/utilities/write-file.d.ts +2 -1
- package/dist/lib/utilities/write-file.js +1 -1
- package/dist/next.cjs +8 -8
- package/dist/next.js +5 -5
- package/dist/nuxt.cjs +10 -10
- package/dist/nuxt.js +7 -7
- package/dist/{resolved-NZTd64-O.d.cts → resolved-CcuVqMqc.d.cts} +28 -3
- package/dist/{resolved-DhHHMnUD.d.ts → resolved-Dhscmo3z.d.ts} +28 -3
- package/dist/rolldown.cjs +7 -7
- package/dist/rolldown.d.cts +2 -1
- package/dist/rolldown.d.ts +2 -1
- package/dist/rolldown.js +4 -4
- package/dist/rollup.cjs +7 -7
- package/dist/rollup.d.cts +2 -1
- package/dist/rollup.d.ts +2 -1
- package/dist/rollup.js +4 -4
- package/dist/rspack.cjs +7 -7
- package/dist/rspack.d.cts +2 -1
- package/dist/rspack.d.ts +2 -1
- package/dist/rspack.js +4 -4
- package/dist/tsup.cjs +9 -9
- package/dist/tsup.js +6 -6
- package/dist/types/babel.d.cts +2 -1
- package/dist/types/babel.d.ts +2 -1
- package/dist/types/commands.d.cts +2 -1
- package/dist/types/commands.d.ts +2 -1
- package/dist/types/compiler.d.cts +2 -1
- package/dist/types/compiler.d.ts +2 -1
- package/dist/types/config.d.cts +2 -1
- package/dist/types/config.d.ts +2 -1
- package/dist/types/context.cjs +2 -2
- package/dist/types/context.d.cts +2 -1
- package/dist/types/context.d.ts +2 -1
- package/dist/types/context.js +1 -1
- package/dist/types/hooks.d.cts +2 -1
- package/dist/types/hooks.d.ts +2 -1
- package/dist/types/index.cjs +9 -9
- package/dist/types/index.d.cts +3 -2
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.js +2 -2
- package/dist/types/internal.d.cts +3 -2
- package/dist/types/internal.d.ts +3 -2
- package/dist/types/plugin.d.cts +2 -1
- package/dist/types/plugin.d.ts +2 -1
- package/dist/types/resolved.d.cts +2 -1
- package/dist/types/resolved.d.ts +2 -1
- package/dist/types/unplugin.d.cts +2 -1
- package/dist/types/unplugin.d.ts +2 -1
- package/dist/types/vfs.cjs +7 -7
- package/dist/types/vfs.d.cts +93 -111
- package/dist/types/vfs.d.ts +93 -111
- package/dist/types/vfs.js +1 -1
- package/dist/unloader.cjs +7 -7
- package/dist/unloader.d.cts +2 -1
- package/dist/unloader.d.ts +2 -1
- package/dist/unloader.js +4 -4
- package/dist/unplugin.cjs +19 -19
- package/dist/unplugin.d.cts +3 -2
- package/dist/unplugin.d.ts +3 -2
- package/dist/unplugin.js +16 -16
- package/dist/vite.cjs +8 -8
- package/dist/vite.d.cts +2 -1
- package/dist/vite.d.ts +2 -1
- package/dist/vite.js +5 -5
- package/dist/webpack.cjs +7 -7
- package/dist/webpack.d.cts +2 -1
- package/dist/webpack.d.ts +2 -1
- package/dist/webpack.js +4 -4
- package/package.json +9 -9
- package/dist/chunk-6FRFYMLC.cjs +0 -12
- package/dist/chunk-6M3HIMSG.cjs +0 -12
- package/dist/chunk-6ODSQSQL.cjs +0 -34
- package/dist/chunk-HPXUAQCU.cjs +0 -12
- package/dist/chunk-KJHDE76P.cjs +0 -24
- package/dist/chunk-R5CZG7XN.js +0 -31
- package/dist/chunk-RGMGFYXY.cjs +0 -12
- package/dist/chunk-TZ4Y7R4G.cjs +0 -12
- package/dist/lib/chunk-26W3IQT6.js.map +0 -1
- package/dist/lib/chunk-2D74QBNW.cjs.map +0 -1
- package/dist/lib/chunk-2ZYHO243.js.map +0 -1
- package/dist/lib/chunk-65DUUIIF.cjs.map +0 -1
- package/dist/lib/chunk-7CZ2QZEV.js.map +0 -1
- package/dist/lib/chunk-7FQQFIHR.cjs.map +0 -1
- package/dist/lib/chunk-7MXG5EG2.js.map +0 -1
- package/dist/lib/chunk-CXYZENE4.js.map +0 -1
- package/dist/lib/chunk-DKE25WTL.js.map +0 -1
- package/dist/lib/chunk-E7UTFXPP.js.map +0 -1
- package/dist/lib/chunk-ECJPGNXE.cjs.map +0 -1
- package/dist/lib/chunk-EOO7IRCI.js.map +0 -1
- package/dist/lib/chunk-FHZJQZOE.cjs.map +0 -1
- package/dist/lib/chunk-G5DJO4HA.cjs.map +0 -1
- package/dist/lib/chunk-GWAVDFOE.js.map +0 -1
- package/dist/lib/chunk-I3I4BYJ4.js.map +0 -1
- package/dist/lib/chunk-I6A564OE.cjs.map +0 -1
- package/dist/lib/chunk-JXIRUV56.js.map +0 -1
- package/dist/lib/chunk-KACTPBW2.cjs.map +0 -1
- package/dist/lib/chunk-KAOWUIFH.cjs.map +0 -1
- package/dist/lib/chunk-LTBRHAQ2.cjs.map +0 -1
- package/dist/lib/chunk-M2TB43VG.cjs.map +0 -1
- package/dist/lib/chunk-NFDRIBCM.js.map +0 -1
- package/dist/lib/chunk-PJKWY74P.js.map +0 -1
- package/dist/lib/chunk-QGJVGFY4.js.map +0 -1
- package/dist/lib/chunk-QSBORJCS.js.map +0 -1
- package/dist/lib/chunk-RY67J24J.js.map +0 -1
- package/dist/lib/chunk-SB3NFYXT.cjs.map +0 -1
- package/dist/lib/chunk-TJQEGHJA.cjs.map +0 -1
- package/dist/lib/chunk-TNCZYSNV.js.map +0 -1
- package/dist/lib/chunk-TZFBE35T.cjs.map +0 -1
- package/dist/lib/chunk-VANFTXBT.cjs.map +0 -1
- package/dist/lib/chunk-VRNWPH35.cjs.map +0 -1
- package/dist/lib/chunk-WDNYOFEH.js.map +0 -1
- package/dist/lib/chunk-XFIGAAKN.cjs.map +0 -1
- package/dist/lib/chunk-XHCRXNQ3.cjs.map +0 -1
- package/dist/lib/chunk-ZKYZWEHY.cjs.map +0 -1
- package/dist/lib/chunk-ZYBUJ2HE.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PLUGIN_NON_HOOK_FIELDS } from './chunk-EBMELFCF.js';
|
|
2
|
-
import { __VFS_CACHE__, __VFS_RESOLVER__, __VFS_VIRTUAL__, __VFS_UNIFIED__, __VFS_INIT__, __VFS_REVERT__ } from './chunk-
|
|
2
|
+
import { __VFS_CACHE__, __VFS_RESOLVER__, __VFS_VIRTUAL__, __VFS_UNIFIED__, __VFS_INIT__, __VFS_REVERT__ } from './chunk-GPPJ2CRE.js';
|
|
3
3
|
import { SUPPORTED_COMMANDS } from './chunk-LO77RPRV.js';
|
|
4
4
|
import { __name } from './chunk-7QVYU63E.js';
|
|
5
5
|
import { formatLogMessage } from '@storm-software/config-tools/logger/console';
|
|
@@ -11,8 +11,6 @@ import { createDirectory } from '@stryke/fs/helpers';
|
|
|
11
11
|
import { install } from '@stryke/fs/install';
|
|
12
12
|
import { listFiles, listFilesSync } from '@stryke/fs/list-files';
|
|
13
13
|
import { isPackageExists, isPackageListed, doesPackageMatch, getPackageListing } from '@stryke/fs/package-fns';
|
|
14
|
-
import { findFilePath, hasFileExtension, findFileExtensionSafe, relativePath, findFileName } from '@stryke/path/file-path-fns';
|
|
15
|
-
import { isParentPath } from '@stryke/path/is-parent-path';
|
|
16
14
|
import { joinPaths } from '@stryke/path/join-paths';
|
|
17
15
|
import { replacePath } from '@stryke/path/replace';
|
|
18
16
|
import { isError } from '@stryke/type-checks/is-error';
|
|
@@ -28,21 +26,23 @@ import { readJsonFile, readJsonFileSync } from '@stryke/fs/json';
|
|
|
28
26
|
import { appendPath } from '@stryke/path/append';
|
|
29
27
|
import defu5, { defu } from 'defu';
|
|
30
28
|
import ts2, { createProgram, createCompilerHost, getPreEmitDiagnostics, getLineAndCharacterOfPosition, flattenDiagnosticMessageText } from 'typescript';
|
|
31
|
-
import { titleCase } from '@stryke/string-format/title-case';
|
|
32
29
|
import '@stryke/fs/remove-file';
|
|
33
30
|
import { hashDirectory } from '@stryke/hash/hash-files';
|
|
34
31
|
import { getUnique, getUniqueBy } from '@stryke/helpers/get-unique';
|
|
32
|
+
import { findFilePath, findFileExtensionSafe, hasFileExtension, relativePath, findFileName } from '@stryke/path/file-path-fns';
|
|
35
33
|
import { kebabCase } from '@stryke/string-format/kebab-case';
|
|
36
34
|
import { isUndefined } from '@stryke/type-checks/is-undefined';
|
|
37
35
|
import { writeFile as writeFile$1 } from '@stryke/fs/write-file';
|
|
38
|
-
import {
|
|
36
|
+
import { resolveConfig, format } from 'prettier';
|
|
39
37
|
import { resolvePackage } from '@stryke/fs/resolve';
|
|
40
38
|
import { getWorkspaceConfig } from '@storm-software/config-tools/get-config';
|
|
41
39
|
import { loadConfig } from 'c12';
|
|
40
|
+
import { titleCase } from '@stryke/string-format/title-case';
|
|
42
41
|
import { getEnvPaths } from '@stryke/env/get-env-paths';
|
|
43
42
|
import { relativeToWorkspaceRoot } from '@stryke/fs/get-workspace-root';
|
|
44
43
|
import { murmurhash } from '@stryke/hash/murmurhash';
|
|
45
44
|
import { omit } from '@stryke/helpers/omit';
|
|
45
|
+
import { isAbsolutePath, isAbsolute } from '@stryke/path/is-type';
|
|
46
46
|
import { joinPaths as joinPaths$1 } from '@stryke/path/join';
|
|
47
47
|
import { isNull } from '@stryke/type-checks/is-null';
|
|
48
48
|
import { isString } from '@stryke/type-checks/is-string';
|
|
@@ -54,7 +54,7 @@ import { getColor } from '@storm-software/config-tools/utilities/colors';
|
|
|
54
54
|
import { noop } from '@stryke/helpers/noop';
|
|
55
55
|
import { createJiti } from 'jiti';
|
|
56
56
|
import { bufferToString } from '@stryke/convert/buffer-to-string';
|
|
57
|
-
import {
|
|
57
|
+
import { isParentPath } from '@stryke/path/is-parent-path';
|
|
58
58
|
import { prettyBytes } from '@stryke/string-format/pretty-bytes';
|
|
59
59
|
import { isBuffer } from '@stryke/type-checks/is-buffer';
|
|
60
60
|
import { Volume } from 'memfs';
|
|
@@ -154,26 +154,6 @@ ${parsedCommandLine.errors.map((error) => `- ${(error.category !== void 0 && err
|
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
156
|
__name(getParsedTypeScriptConfig, "getParsedTypeScriptConfig");
|
|
157
|
-
function getBaseFileHeader(context) {
|
|
158
|
-
return `
|
|
159
|
-
// Generated with ${titleCase(context.config.framework)}
|
|
160
|
-
// Note: Do not edit this file manually - it will be overwritten automatically
|
|
161
|
-
`;
|
|
162
|
-
}
|
|
163
|
-
__name(getBaseFileHeader, "getBaseFileHeader");
|
|
164
|
-
function getFileHeader(context, options = {}) {
|
|
165
|
-
const { directive = null, prettierIgnore = false } = options;
|
|
166
|
-
return `/* eslint-disable */
|
|
167
|
-
// biome-ignore lint: disable
|
|
168
|
-
${prettierIgnore ? `// prettier-ignore` : ""}${directive ? `
|
|
169
|
-
|
|
170
|
-
${directive}
|
|
171
|
-
` : "\n"}
|
|
172
|
-
${getBaseFileHeader(context)}
|
|
173
|
-
|
|
174
|
-
`;
|
|
175
|
-
}
|
|
176
|
-
__name(getFileHeader, "getFileHeader");
|
|
177
157
|
var PROJECT_ROOT_HASH_LENGTH = 45;
|
|
178
158
|
var CACHE_HASH_LENGTH = 62;
|
|
179
159
|
function getPrefixedProjectRootHash(name, projectRootHash) {
|
|
@@ -198,11 +178,13 @@ __name(getChecksum, "getChecksum");
|
|
|
198
178
|
async function writeMetaFile(context) {
|
|
199
179
|
const metaFilePath = joinPaths(context.dataPath, "meta.json");
|
|
200
180
|
context.log(LogLevelLabel.DEBUG, `Writing runtime metadata to ${metaFilePath}`);
|
|
201
|
-
await context.fs.
|
|
181
|
+
await context.fs.writeFile(metaFilePath, JSON.stringify({
|
|
202
182
|
...context.meta,
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}, null, 2)
|
|
183
|
+
virtualFiles: context.fs[__VFS_VIRTUAL__].toJSON(context.artifactsPath),
|
|
184
|
+
virtualFilesMeta: context.fs.getPartialMeta()
|
|
185
|
+
}, null, 2), {
|
|
186
|
+
mode: "fs"
|
|
187
|
+
});
|
|
206
188
|
}
|
|
207
189
|
__name(writeMetaFile, "writeMetaFile");
|
|
208
190
|
function isPlugin(value) {
|
|
@@ -468,6 +450,154 @@ function createResolver(options) {
|
|
|
468
450
|
return baseResolver;
|
|
469
451
|
}
|
|
470
452
|
__name(createResolver, "createResolver");
|
|
453
|
+
function isBufferEncoding(options) {
|
|
454
|
+
return isSetString(options) || options === null;
|
|
455
|
+
}
|
|
456
|
+
__name(isBufferEncoding, "isBufferEncoding");
|
|
457
|
+
function isPowerlinesWriteFileOptions(options) {
|
|
458
|
+
return !isBufferEncoding(options) && isSetObject(options) && ("skipFormat" in options || "mode" in options && (options.mode === "fs" || options.mode === "virtual"));
|
|
459
|
+
}
|
|
460
|
+
__name(isPowerlinesWriteFileOptions, "isPowerlinesWriteFileOptions");
|
|
461
|
+
function isNodeWriteFileOptions(options) {
|
|
462
|
+
return !isUndefined(options) && (isBufferEncoding(options) || !isPowerlinesWriteFileOptions(options));
|
|
463
|
+
}
|
|
464
|
+
__name(isNodeWriteFileOptions, "isNodeWriteFileOptions");
|
|
465
|
+
function isPowerLinesWriteFileData(data) {
|
|
466
|
+
return !!(isSetObject(data) && "code" in data && data.code);
|
|
467
|
+
}
|
|
468
|
+
__name(isPowerLinesWriteFileData, "isPowerLinesWriteFileData");
|
|
469
|
+
var FILE_PREFIX = "file://";
|
|
470
|
+
function toFilePath(pathOrUrl) {
|
|
471
|
+
if (!pathOrUrl) {
|
|
472
|
+
throw new Error("No Path or URL provided to Virtual File System");
|
|
473
|
+
}
|
|
474
|
+
let result = pathOrUrl.toString();
|
|
475
|
+
if (result.startsWith(FILE_PREFIX)) {
|
|
476
|
+
result = result.slice(FILE_PREFIX.length);
|
|
477
|
+
}
|
|
478
|
+
return result;
|
|
479
|
+
}
|
|
480
|
+
__name(toFilePath, "toFilePath");
|
|
481
|
+
var FS_METHODS = [
|
|
482
|
+
"mkdir",
|
|
483
|
+
"mkdirSync",
|
|
484
|
+
"rmdir",
|
|
485
|
+
"rmdirSync",
|
|
486
|
+
"unlink",
|
|
487
|
+
"unlinkSync",
|
|
488
|
+
"existsSync",
|
|
489
|
+
"realpathSync",
|
|
490
|
+
"writeFileSync",
|
|
491
|
+
"readFileSync",
|
|
492
|
+
"readdirSync",
|
|
493
|
+
"createWriteStream",
|
|
494
|
+
"WriteStream",
|
|
495
|
+
"createReadStream",
|
|
496
|
+
"ReadStream"
|
|
497
|
+
];
|
|
498
|
+
var FS_PROMISE_METHODS = [
|
|
499
|
+
"mkdir",
|
|
500
|
+
"rm",
|
|
501
|
+
"rmdir",
|
|
502
|
+
"unlink",
|
|
503
|
+
"writeFile",
|
|
504
|
+
"readFile",
|
|
505
|
+
"readdir",
|
|
506
|
+
"stat",
|
|
507
|
+
"lstat"
|
|
508
|
+
];
|
|
509
|
+
function cloneFS(originalFS) {
|
|
510
|
+
const clonedFS = {
|
|
511
|
+
...originalFS,
|
|
512
|
+
promises: {
|
|
513
|
+
...originalFS.promises ?? {}
|
|
514
|
+
}
|
|
515
|
+
};
|
|
516
|
+
for (const method of FS_METHODS) {
|
|
517
|
+
if (originalFS[method]) {
|
|
518
|
+
clonedFS[method] = originalFS[method];
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
originalFS.promises ??= {};
|
|
522
|
+
for (const method of FS_PROMISE_METHODS) {
|
|
523
|
+
if (originalFS.promises[method]) {
|
|
524
|
+
clonedFS.promises ??= {};
|
|
525
|
+
clonedFS.promises[method] = originalFS.promises[method];
|
|
526
|
+
clonedFS[method] = originalFS.promises[method];
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
for (const prop in clonedFS) {
|
|
530
|
+
if (isFunction(clonedFS[prop])) {
|
|
531
|
+
clonedFS[prop] = clonedFS[prop].bind(originalFS);
|
|
532
|
+
if (isFunction(clonedFS.promises[prop])) {
|
|
533
|
+
clonedFS.promises[prop] = clonedFS.promises[prop].bind(originalFS);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
for (const prop in clonedFS.promises) {
|
|
538
|
+
if (isFunction(clonedFS.promises[prop])) {
|
|
539
|
+
clonedFS.promises[prop] = clonedFS.promises[prop].bind(originalFS);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return clonedFS;
|
|
543
|
+
}
|
|
544
|
+
__name(cloneFS, "cloneFS");
|
|
545
|
+
function patchFS(originalFS, vfs) {
|
|
546
|
+
const clonedFS = cloneFS(originalFS);
|
|
547
|
+
originalFS.mkdirSync = (file, options) => vfs.mkdirSync(toFilePath(file), options);
|
|
548
|
+
originalFS.mkdir = (file, options, callback) => vfs.mkdir(toFilePath(file), options, callback);
|
|
549
|
+
originalFS.promises.mkdir = async (file, options) => vfs.mkdir(toFilePath(file), options);
|
|
550
|
+
originalFS.unlinkSync = (file) => vfs.unlinkSync(toFilePath(file));
|
|
551
|
+
originalFS.promises.rm = async (file, options) => vfs.rm(toFilePath(file), options);
|
|
552
|
+
originalFS.promises.unlink = async (file) => vfs.unlink(toFilePath(file));
|
|
553
|
+
originalFS.existsSync = (file) => vfs.existsSync(toFilePath(file));
|
|
554
|
+
Object.defineProperty(originalFS, "realpathSync", {
|
|
555
|
+
value: /* @__PURE__ */ __name((file, options) => vfs.realpathSync(toFilePath(file), options), "value")
|
|
556
|
+
});
|
|
557
|
+
originalFS.writeFileSync = (file, data, options) => vfs.writeFileSync(toFilePath(file), data, options);
|
|
558
|
+
originalFS.promises.writeFile = async (file, data, options) => vfs.writeFile(toFilePath(file), data, options);
|
|
559
|
+
originalFS.readFileSync = (file, options) => vfs.readFileSync(toFilePath(file), options);
|
|
560
|
+
originalFS.promises.readFile = (file, options) => vfs.readFile(toFilePath(file), options);
|
|
561
|
+
originalFS.readdirSync = (file, options) => vfs.readdirSync(toFilePath(file), options);
|
|
562
|
+
originalFS.promises.readdir = (file, options) => vfs.readdir(toFilePath(file), options);
|
|
563
|
+
Object.defineProperty(originalFS, "statSync", {
|
|
564
|
+
value: /* @__PURE__ */ __name((file, options) => vfs.statSync(toFilePath(file), options), "value")
|
|
565
|
+
});
|
|
566
|
+
originalFS.stat = (file, options) => vfs.statSync(toFilePath(file), options);
|
|
567
|
+
originalFS.promises.stat = (file, options) => vfs.stat(toFilePath(file), options);
|
|
568
|
+
Object.defineProperty(originalFS, "lstatSync", {
|
|
569
|
+
value: /* @__PURE__ */ __name((file, options) => vfs.lstatSync(toFilePath(file), options), "value")
|
|
570
|
+
});
|
|
571
|
+
originalFS.lstat = (file, options) => vfs.lstatSync(toFilePath(file), options);
|
|
572
|
+
originalFS.promises.lstat = (file, options) => vfs.lstat(toFilePath(file), options);
|
|
573
|
+
return () => {
|
|
574
|
+
originalFS.mkdirSync = clonedFS.mkdirSync;
|
|
575
|
+
originalFS.mkdir = clonedFS.mkdir;
|
|
576
|
+
originalFS.promises.mkdir = clonedFS.promises.mkdir;
|
|
577
|
+
originalFS.unlinkSync = clonedFS.unlinkSync;
|
|
578
|
+
originalFS.promises.rm = clonedFS.promises.rm;
|
|
579
|
+
originalFS.promises.unlink = clonedFS.promises.unlink;
|
|
580
|
+
originalFS.existsSync = clonedFS.existsSync;
|
|
581
|
+
originalFS.realpathSync = clonedFS.realpathSync;
|
|
582
|
+
originalFS.writeFileSync = clonedFS.writeFileSync;
|
|
583
|
+
originalFS.promises.writeFile = clonedFS.promises.writeFile;
|
|
584
|
+
originalFS.readFileSync = clonedFS.readFileSync;
|
|
585
|
+
originalFS.promises.readFile = clonedFS.promises.readFile;
|
|
586
|
+
originalFS.readdirSync = clonedFS.readdirSync;
|
|
587
|
+
originalFS.promises.readdir = clonedFS.promises.readdir;
|
|
588
|
+
Object.defineProperty(originalFS, "statSync", {
|
|
589
|
+
value: clonedFS.statSync
|
|
590
|
+
});
|
|
591
|
+
originalFS.stat = clonedFS.stat;
|
|
592
|
+
originalFS.promises.stat = clonedFS.promises.stat;
|
|
593
|
+
Object.defineProperty(originalFS, "lstatSync", {
|
|
594
|
+
value: clonedFS.lstatSync
|
|
595
|
+
});
|
|
596
|
+
originalFS.lstat = clonedFS.lstat;
|
|
597
|
+
originalFS.promises.lstat = clonedFS.promises.lstat;
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
__name(patchFS, "patchFS");
|
|
471
601
|
var VirtualFileSystem = class {
|
|
472
602
|
static {
|
|
473
603
|
__name(this, "VirtualFileSystem");
|
|
@@ -475,7 +605,11 @@ var VirtualFileSystem = class {
|
|
|
475
605
|
/**
|
|
476
606
|
* The internal map of virtual files.
|
|
477
607
|
*/
|
|
478
|
-
#
|
|
608
|
+
#meta = {};
|
|
609
|
+
/**
|
|
610
|
+
* A map of unique identifiers to their virtual file paths.
|
|
611
|
+
*/
|
|
612
|
+
#ids = {};
|
|
479
613
|
/**
|
|
480
614
|
* A map of virtual file paths to their underlying file content.
|
|
481
615
|
*/
|
|
@@ -516,6 +650,16 @@ var VirtualFileSystem = class {
|
|
|
516
650
|
*/
|
|
517
651
|
#log;
|
|
518
652
|
/**
|
|
653
|
+
* Checks if a path exists in the virtual file system (VFS).
|
|
654
|
+
*
|
|
655
|
+
* @param path - The path to check.
|
|
656
|
+
* @returns `true` if the path exists, otherwise `false`.
|
|
657
|
+
*/
|
|
658
|
+
#existsSync(path) {
|
|
659
|
+
const formattedPath = this.formatPath(path);
|
|
660
|
+
return this.#virtualFS.existsSync(formattedPath) || this.#fs.existsSync(formattedPath) || this.resolveFS(path).existsSync(formattedPath);
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
519
663
|
* Exposes the internal VFS map for advanced usage.
|
|
520
664
|
*/
|
|
521
665
|
get [__VFS_CACHE__]() {
|
|
@@ -540,15 +684,54 @@ var VirtualFileSystem = class {
|
|
|
540
684
|
return this.#unifiedFS;
|
|
541
685
|
}
|
|
542
686
|
/**
|
|
687
|
+
* A proxy to access the underlying file metadata.
|
|
688
|
+
*/
|
|
689
|
+
get meta() {
|
|
690
|
+
return new Proxy(this.#meta, {
|
|
691
|
+
get: /* @__PURE__ */ __name((target, prop) => {
|
|
692
|
+
if (target[prop]) {
|
|
693
|
+
return {
|
|
694
|
+
id: prop,
|
|
695
|
+
mode: this.#virtualFS.existsSync(prop) ? "virtual" : this.#fs.existsSync(prop) ? "fs" : this.#context.config.output.mode,
|
|
696
|
+
details: {},
|
|
697
|
+
variant: "normal",
|
|
698
|
+
...target[prop]
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
return void 0;
|
|
702
|
+
}, "get"),
|
|
703
|
+
set: /* @__PURE__ */ __name((target, prop, value) => {
|
|
704
|
+
target[prop] = value;
|
|
705
|
+
this.#ids[value.id || prop] = prop;
|
|
706
|
+
return true;
|
|
707
|
+
}, "set"),
|
|
708
|
+
deleteProperty: /* @__PURE__ */ __name((target, prop) => {
|
|
709
|
+
delete this.#ids[target[prop]?.id || prop];
|
|
710
|
+
delete target[prop];
|
|
711
|
+
return true;
|
|
712
|
+
}, "deleteProperty")
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* A map of module ids to their file paths.
|
|
717
|
+
*/
|
|
718
|
+
get ids() {
|
|
719
|
+
return this.#ids;
|
|
720
|
+
}
|
|
721
|
+
/**
|
|
543
722
|
* Creates a new instance of the VirtualFileSystem.
|
|
544
723
|
*
|
|
545
724
|
* @param context - The context of the virtual file system, typically containing options and logging functions.
|
|
546
725
|
* @param serialized - A map of files/file contents to populate in cache
|
|
547
726
|
*/
|
|
548
|
-
constructor(context, serialized) {
|
|
727
|
+
constructor(context, serialized = {}) {
|
|
549
728
|
this.#context = context;
|
|
550
729
|
this.#cachedFS = /* @__PURE__ */ new Map();
|
|
551
|
-
this.#
|
|
730
|
+
this.#meta = Object.fromEntries(Object.entries(serialized.virtualFilesMeta ?? {}));
|
|
731
|
+
this.#ids = Object.fromEntries(Object.entries(this.#meta).map(([path, data]) => [
|
|
732
|
+
data.id || path,
|
|
733
|
+
path
|
|
734
|
+
]));
|
|
552
735
|
if (!this.#fs.existsSync(this.#context.dataPath)) {
|
|
553
736
|
this.#fs.mkdirSync(this.#context.dataPath, {
|
|
554
737
|
recursive: true
|
|
@@ -630,65 +813,44 @@ var VirtualFileSystem = class {
|
|
|
630
813
|
}
|
|
631
814
|
}
|
|
632
815
|
/**
|
|
633
|
-
*
|
|
816
|
+
* Check if a path or id corresponds to a virtual file **(does not actually exists on disk)**.
|
|
634
817
|
*
|
|
635
|
-
* @
|
|
818
|
+
* @param pathOrId - The path or id to check.
|
|
819
|
+
* @param options - Optional parameters for resolving the path.
|
|
820
|
+
* @returns Whether the path or id corresponds to a virtual file **(does not actually exists on disk)**.
|
|
636
821
|
*/
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
*
|
|
643
|
-
* @returns An array of formatted runtime IDs.
|
|
644
|
-
*/
|
|
645
|
-
get runtimeIds() {
|
|
646
|
-
return Array.from(this.builtinIdMap.keys()).map((id) => this.formatRuntimeId(id));
|
|
647
|
-
}
|
|
648
|
-
/**
|
|
649
|
-
* Checks if a given path or ID corresponds to a runtime file.
|
|
650
|
-
*
|
|
651
|
-
* @param pathOrId - The path or ID to check.
|
|
652
|
-
* @param options - Options for resolving the path, such as paths to check.
|
|
653
|
-
* @returns `true` if the path or ID corresponds to a runtime file, otherwise `false`.
|
|
654
|
-
*/
|
|
655
|
-
isBuiltinFile(pathOrId, options) {
|
|
656
|
-
return !!this.builtinIdMap.values().find((path) => path === this.resolvePath(pathOrId, {
|
|
822
|
+
isVirtual(pathOrId, options = {}) {
|
|
823
|
+
if (!pathOrId) {
|
|
824
|
+
return false;
|
|
825
|
+
}
|
|
826
|
+
const resolvedPath = this.resolve(pathOrId, {
|
|
657
827
|
...options,
|
|
658
828
|
type: "file"
|
|
659
|
-
})
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
* @param id - The ID to check.
|
|
665
|
-
* @returns Whether the ID is a valid runtime ID.
|
|
666
|
-
*/
|
|
667
|
-
isValidBuiltinId(id) {
|
|
668
|
-
return id.startsWith(`${this.#context.config.output.builtinPrefix}:`);
|
|
829
|
+
});
|
|
830
|
+
if (!resolvedPath) {
|
|
831
|
+
return false;
|
|
832
|
+
}
|
|
833
|
+
return this.meta[resolvedPath]?.mode === "virtual";
|
|
669
834
|
}
|
|
670
835
|
/**
|
|
671
|
-
* Check if a path or
|
|
836
|
+
* Check if a path or id corresponds to a file written to the file system **(actually exists on disk)**.
|
|
672
837
|
*
|
|
673
|
-
* @param pathOrId - The path or
|
|
674
|
-
* @param options -
|
|
675
|
-
* @returns Whether the path or
|
|
838
|
+
* @param pathOrId - The path or id to check.
|
|
839
|
+
* @param options - Optional parameters for resolving the path.
|
|
840
|
+
* @returns Whether the path or id corresponds to a file written to the file system **(actually exists on disk)**.
|
|
676
841
|
*/
|
|
677
|
-
|
|
842
|
+
isFs(pathOrId, options = {}) {
|
|
678
843
|
if (!pathOrId) {
|
|
679
844
|
return false;
|
|
680
845
|
}
|
|
681
|
-
const resolvedPath = this.
|
|
846
|
+
const resolvedPath = this.resolve(pathOrId, {
|
|
682
847
|
...options,
|
|
683
848
|
type: "file"
|
|
684
849
|
});
|
|
685
850
|
if (!resolvedPath) {
|
|
686
851
|
return false;
|
|
687
852
|
}
|
|
688
|
-
|
|
689
|
-
return true;
|
|
690
|
-
}
|
|
691
|
-
return this.#virtualFS.existsSync(resolvedPath);
|
|
853
|
+
return this.meta[resolvedPath]?.mode === "fs";
|
|
692
854
|
}
|
|
693
855
|
/**
|
|
694
856
|
* Check if a path exists within one of the directories specified in the tsconfig.json's `path` field.
|
|
@@ -702,37 +864,6 @@ var VirtualFileSystem = class {
|
|
|
702
864
|
return !!this.#context.tsconfig.options.paths && Object.keys(this.#context.tsconfig.options.paths).some((path) => pathOrId.startsWith(path.replaceAll("*", "")));
|
|
703
865
|
}
|
|
704
866
|
/**
|
|
705
|
-
* Checks if a given ID corresponds to a runtime file path.
|
|
706
|
-
*
|
|
707
|
-
* @param id - The unique identifier for the runtime file.
|
|
708
|
-
* @param pathOrId - The path or ID to check.
|
|
709
|
-
* @returns `true` if the ID corresponds to the path or ID of a runtime file, otherwise `false`.
|
|
710
|
-
*/
|
|
711
|
-
isMatchingBuiltinId(id, pathOrId) {
|
|
712
|
-
const resolvedPath = this.resolvePath(pathOrId);
|
|
713
|
-
const resolvedId = this.resolveId(pathOrId);
|
|
714
|
-
return !!(this.isBuiltinFile(pathOrId) && (resolvedPath && (resolvedPath === this.builtinIdMap.get(id) || resolvedPath === this.builtinIdMap.get(this.formatRuntimeId(id))) || resolvedId && (resolvedId === this.builtinIdMap.get(id) || resolvedId === this.builtinIdMap.get(this.formatRuntimeId(id)))));
|
|
715
|
-
}
|
|
716
|
-
/**
|
|
717
|
-
* Lists all runtime files in the virtual file system.
|
|
718
|
-
*
|
|
719
|
-
* @returns A promise that resolves to an array of runtime files.
|
|
720
|
-
*/
|
|
721
|
-
async listBuiltinFiles() {
|
|
722
|
-
const runtimeFiles = [];
|
|
723
|
-
for (const [id, path] of this.builtinIdMap.entries()) {
|
|
724
|
-
const contents = await this.readFile(path);
|
|
725
|
-
if (contents) {
|
|
726
|
-
runtimeFiles.push({
|
|
727
|
-
id: this.formatRuntimeId(id),
|
|
728
|
-
path,
|
|
729
|
-
contents
|
|
730
|
-
});
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
return runtimeFiles;
|
|
734
|
-
}
|
|
735
|
-
/**
|
|
736
867
|
* Lists files in a given path.
|
|
737
868
|
*
|
|
738
869
|
* @param path - The path to list files from.
|
|
@@ -749,7 +880,7 @@ var VirtualFileSystem = class {
|
|
|
749
880
|
*/
|
|
750
881
|
unlinkSync(path, options) {
|
|
751
882
|
const formattedPath = toFilePath(path);
|
|
752
|
-
if (!this.
|
|
883
|
+
if (!this.isFile(formattedPath)) {
|
|
753
884
|
return;
|
|
754
885
|
}
|
|
755
886
|
this.#log(LogLevelLabel.TRACE, `Synchronously removing file: ${formattedPath}`);
|
|
@@ -764,7 +895,7 @@ var VirtualFileSystem = class {
|
|
|
764
895
|
*/
|
|
765
896
|
async unlink(path, options) {
|
|
766
897
|
const formattedPath = toFilePath(path);
|
|
767
|
-
if (!this.
|
|
898
|
+
if (!this.isFile(formattedPath)) {
|
|
768
899
|
return;
|
|
769
900
|
}
|
|
770
901
|
this.#log(LogLevelLabel.TRACE, `Removing file: ${formattedPath}`);
|
|
@@ -784,7 +915,7 @@ var VirtualFileSystem = class {
|
|
|
784
915
|
*/
|
|
785
916
|
rmdirSync(path, options = {}) {
|
|
786
917
|
const formattedPath = toFilePath(path);
|
|
787
|
-
if (!this.
|
|
918
|
+
if (!this.isDirectory(formattedPath)) {
|
|
788
919
|
return;
|
|
789
920
|
}
|
|
790
921
|
this.#log(LogLevelLabel.TRACE, `Synchronously removing directory: ${formattedPath}`);
|
|
@@ -803,7 +934,7 @@ var VirtualFileSystem = class {
|
|
|
803
934
|
*/
|
|
804
935
|
async rmdir(path, options = {}) {
|
|
805
936
|
const formattedPath = toFilePath(path);
|
|
806
|
-
if (!this.
|
|
937
|
+
if (!this.isDirectory(formattedPath)) {
|
|
807
938
|
return;
|
|
808
939
|
}
|
|
809
940
|
this.#log(LogLevelLabel.TRACE, `Removing directory: ${formattedPath}`);
|
|
@@ -830,7 +961,7 @@ var VirtualFileSystem = class {
|
|
|
830
961
|
*/
|
|
831
962
|
async rm(path, options = {}) {
|
|
832
963
|
this.#log(LogLevelLabel.TRACE, `Removing: ${toFilePath(path)}`);
|
|
833
|
-
if (this.
|
|
964
|
+
if (this.isDirectory(path)) {
|
|
834
965
|
return this.rmdir(path, options);
|
|
835
966
|
}
|
|
836
967
|
return this.unlink(path, options);
|
|
@@ -874,12 +1005,12 @@ var VirtualFileSystem = class {
|
|
|
874
1005
|
/**
|
|
875
1006
|
* Lists files in a given path.
|
|
876
1007
|
*
|
|
877
|
-
* @param
|
|
1008
|
+
* @param pathOrId - The path to list files from.
|
|
878
1009
|
* @param options - Options for listing files, such as encoding and recursion.
|
|
879
1010
|
* @returns An array of file names in the specified path.
|
|
880
1011
|
*/
|
|
881
|
-
async readdir(
|
|
882
|
-
return this.resolveFS(
|
|
1012
|
+
async readdir(pathOrId, options = "utf8") {
|
|
1013
|
+
return this.resolveFS(pathOrId).promises.readdir(toFilePath(pathOrId), options);
|
|
883
1014
|
}
|
|
884
1015
|
/**
|
|
885
1016
|
* Asynchronously reads a file from the virtual file system (VFS).
|
|
@@ -891,7 +1022,7 @@ var VirtualFileSystem = class {
|
|
|
891
1022
|
if (!pathOrId) {
|
|
892
1023
|
return void 0;
|
|
893
1024
|
}
|
|
894
|
-
const filePath = this.
|
|
1025
|
+
const filePath = this.resolve(toFilePath(pathOrId), {
|
|
895
1026
|
type: "file"
|
|
896
1027
|
});
|
|
897
1028
|
if (filePath) {
|
|
@@ -920,7 +1051,7 @@ var VirtualFileSystem = class {
|
|
|
920
1051
|
if (!pathOrId) {
|
|
921
1052
|
return void 0;
|
|
922
1053
|
}
|
|
923
|
-
const filePath = this.
|
|
1054
|
+
const filePath = this.resolve(toFilePath(pathOrId), {
|
|
924
1055
|
type: "file"
|
|
925
1056
|
});
|
|
926
1057
|
if (filePath) {
|
|
@@ -937,137 +1068,80 @@ var VirtualFileSystem = class {
|
|
|
937
1068
|
/**
|
|
938
1069
|
* Writes a file to the virtual file system (VFS).
|
|
939
1070
|
*
|
|
940
|
-
* @param
|
|
1071
|
+
* @param path - The path to the file.
|
|
941
1072
|
* @param data - The contents of the file.
|
|
942
1073
|
* @param options - Optional parameters for writing the file.
|
|
943
1074
|
* @returns A promise that resolves when the file is written.
|
|
944
1075
|
*/
|
|
945
|
-
async writeFile(
|
|
946
|
-
const
|
|
947
|
-
if (!this.
|
|
948
|
-
await this.mkdir(findFilePath(
|
|
1076
|
+
async writeFile(path, data = "", options = "utf8") {
|
|
1077
|
+
const formattedPath = this.formatPath(path);
|
|
1078
|
+
if (!this.isDirectory(findFilePath(formattedPath))) {
|
|
1079
|
+
await this.mkdir(findFilePath(formattedPath), isPowerlinesWriteFileOptions(options) ? options : void 0);
|
|
1080
|
+
}
|
|
1081
|
+
let code = isPowerLinesWriteFileData(data) ? data.code : data;
|
|
1082
|
+
if ((!isPowerlinesWriteFileOptions(options) || !options.skipFormat) && isSetString(code)) {
|
|
1083
|
+
const resolvedConfig = await resolveConfig(formattedPath);
|
|
1084
|
+
if (resolvedConfig) {
|
|
1085
|
+
code = await format(code, {
|
|
1086
|
+
absolutePath: formattedPath,
|
|
1087
|
+
...resolvedConfig
|
|
1088
|
+
});
|
|
1089
|
+
}
|
|
949
1090
|
}
|
|
950
|
-
|
|
951
|
-
this.#
|
|
952
|
-
this.
|
|
953
|
-
|
|
1091
|
+
const outputMode = this.resolveOutputMode(formattedPath, isPowerlinesWriteFileOptions(options) ? options : void 0);
|
|
1092
|
+
this.#log(LogLevelLabel.TRACE, `Writing ${formattedPath} file to the ${outputMode === "fs" ? "" : "virtual "}file system (size: ${prettyBytes(new Blob(toArray(code)).size)})`);
|
|
1093
|
+
this.meta[formattedPath] = {
|
|
1094
|
+
path: formattedPath,
|
|
1095
|
+
code,
|
|
1096
|
+
mode: outputMode,
|
|
1097
|
+
variant: "normal",
|
|
1098
|
+
...isPowerLinesWriteFileData(data) ? data : {}
|
|
1099
|
+
};
|
|
1100
|
+
this.clearResolverCache(formattedPath);
|
|
1101
|
+
const ifs = this.resolveFS(formattedPath, isPowerlinesWriteFileOptions(options) ? options : void 0);
|
|
954
1102
|
if (isFunction(ifs.promises.writeFile)) {
|
|
955
|
-
return ifs.promises.writeFile(
|
|
956
|
-
"mode"
|
|
957
|
-
]));
|
|
1103
|
+
return ifs.promises.writeFile(formattedPath, code, isNodeWriteFileOptions(options) ? options : "utf8");
|
|
958
1104
|
}
|
|
959
|
-
return ifs.writeFileSync(
|
|
960
|
-
"mode"
|
|
961
|
-
]));
|
|
1105
|
+
return ifs.writeFileSync(formattedPath, code, isNodeWriteFileOptions(options) ? options : "utf8");
|
|
962
1106
|
}
|
|
963
1107
|
/**
|
|
964
1108
|
* Synchronously writes a file to the virtual file system (VFS).
|
|
965
1109
|
*
|
|
966
|
-
* @param
|
|
1110
|
+
* @param path - The file to write.
|
|
967
1111
|
* @param data - The contents of the file.
|
|
968
1112
|
* @param options - Optional parameters for writing the file.
|
|
969
1113
|
*/
|
|
970
|
-
writeFileSync(
|
|
971
|
-
const
|
|
972
|
-
if (!this.
|
|
973
|
-
this.mkdirSync(findFilePath(
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
this
|
|
977
|
-
this.
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1114
|
+
writeFileSync(path, data = "", options = "utf8") {
|
|
1115
|
+
const formattedPath = this.formatPath(path);
|
|
1116
|
+
if (!this.isDirectory(findFilePath(formattedPath))) {
|
|
1117
|
+
this.mkdirSync(findFilePath(formattedPath), isPowerlinesWriteFileOptions(options) ? options : void 0);
|
|
1118
|
+
}
|
|
1119
|
+
const code = isPowerLinesWriteFileData(data) ? data.code : data;
|
|
1120
|
+
const outputMode = this.resolveOutputMode(formattedPath, isPowerlinesWriteFileOptions(options) ? options : void 0);
|
|
1121
|
+
this.#log(LogLevelLabel.TRACE, `Writing ${formattedPath} file to the ${outputMode === "fs" ? "" : "virtual "}file system (size: ${prettyBytes(new Blob(toArray(code)).size)})`);
|
|
1122
|
+
this.meta[formattedPath] = {
|
|
1123
|
+
path: formattedPath,
|
|
1124
|
+
code,
|
|
1125
|
+
mode: outputMode,
|
|
1126
|
+
variant: "normal",
|
|
1127
|
+
...isPowerLinesWriteFileData(data) ? data : {}
|
|
1128
|
+
};
|
|
1129
|
+
this.clearResolverCache(formattedPath);
|
|
1130
|
+
const writeStream = this.resolveFS(formattedPath, isPowerlinesWriteFileOptions(options) ? options : void 0).createWriteStream(formattedPath);
|
|
981
1131
|
try {
|
|
982
|
-
writeStream.write(
|
|
1132
|
+
writeStream.write(code);
|
|
983
1133
|
} finally {
|
|
984
1134
|
writeStream.close();
|
|
985
1135
|
}
|
|
986
1136
|
}
|
|
987
1137
|
/**
|
|
988
|
-
* Writes a runtime file to the virtual file system (VFS).
|
|
989
|
-
*
|
|
990
|
-
* @param id - The unique identifier for the runtime file.
|
|
991
|
-
* @param path - The path to the runtime file.
|
|
992
|
-
* @param contents - The contents of the runtime file.
|
|
993
|
-
* @param options - Optional parameters for writing the runtime file.
|
|
994
|
-
* @returns A promise that resolves when the file is written.
|
|
995
|
-
*/
|
|
996
|
-
async writeBuiltinFile(id, path, contents, options = {}) {
|
|
997
|
-
const formattedId = this.formatRuntimeId(id);
|
|
998
|
-
const absolutePath = this.formatAbsoluteFilePath(toFilePath(path));
|
|
999
|
-
this.builtinIdMap.set(formattedId, absolutePath);
|
|
1000
|
-
let data = contents;
|
|
1001
|
-
if (!options.skipFormat) {
|
|
1002
|
-
data = await format(contents, {
|
|
1003
|
-
absolutePath,
|
|
1004
|
-
...await resolveConfig(absolutePath)
|
|
1005
|
-
});
|
|
1006
|
-
}
|
|
1007
|
-
const _options = defu5(isSetString(options) ? {} : options ?? {}, {
|
|
1008
|
-
encoding: isSetString(options) ? options : "utf8",
|
|
1009
|
-
mode: "virtual"
|
|
1010
|
-
});
|
|
1011
|
-
this.#log(LogLevelLabel.DEBUG, `Writing runtime file ${absolutePath} (size: ${prettyBytes(new Blob(toArray(data)).size)}) to ${this.resolveOutputMode(absolutePath, _options) === "fs" ? "disk" : "memory"}`);
|
|
1012
|
-
return this.writeFile(absolutePath, data, _options);
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* Adds an entry file to the virtual file system.
|
|
1016
|
-
*
|
|
1017
|
-
* @param name - The file name or absolute path of the entry module.
|
|
1018
|
-
* @param contents - The contents of the entry file.
|
|
1019
|
-
* @param options - Optional parameters for writing the entry file.
|
|
1020
|
-
*/
|
|
1021
|
-
async writeEntryFile(name, contents, options = {}) {
|
|
1022
|
-
const absolutePath = this.formatAbsoluteFilePath(isAbsolutePath(toFilePath(name)) ? toFilePath(name) : toFilePath(joinPaths(this.#context.entryPath, name)));
|
|
1023
|
-
let data = contents;
|
|
1024
|
-
if (!options.skipFormat) {
|
|
1025
|
-
data = await format(contents, {
|
|
1026
|
-
absolutePath,
|
|
1027
|
-
...await resolveConfig(absolutePath)
|
|
1028
|
-
});
|
|
1029
|
-
}
|
|
1030
|
-
const _options = defu5(isSetString(options) ? {} : options ?? {}, {
|
|
1031
|
-
encoding: isSetString(options) ? options : "utf8",
|
|
1032
|
-
mode: "virtual"
|
|
1033
|
-
});
|
|
1034
|
-
this.#log(LogLevelLabel.DEBUG, `Writing entry file ${absolutePath} (size: ${prettyBytes(new Blob(toArray(data)).size)}) to ${this.resolveOutputMode(absolutePath, _options) === "fs" ? "disk" : "virtual memory"}`);
|
|
1035
|
-
return this.writeFile(absolutePath, data, _options);
|
|
1036
|
-
}
|
|
1037
|
-
/**
|
|
1038
|
-
* Writes a file to disk from the physical file system (on disk).
|
|
1039
|
-
*
|
|
1040
|
-
* @param path - The path to the file to write.
|
|
1041
|
-
* @param contents - The contents of the file to write.
|
|
1042
|
-
* @param options - Optional parameters for writing the file.
|
|
1043
|
-
* @returns A promise that resolves when the file is written.
|
|
1044
|
-
*/
|
|
1045
|
-
async writeFileToDisk(path, contents, options = {}) {
|
|
1046
|
-
const absolutePath = this.formatAbsoluteFilePath(toFilePath(path));
|
|
1047
|
-
let data = contents;
|
|
1048
|
-
if (!options.skipFormat) {
|
|
1049
|
-
const resolvedConfig = await resolveConfig(absolutePath);
|
|
1050
|
-
if (resolvedConfig) {
|
|
1051
|
-
data = await format(contents, {
|
|
1052
|
-
absolutePath,
|
|
1053
|
-
...resolvedConfig
|
|
1054
|
-
});
|
|
1055
|
-
}
|
|
1056
|
-
}
|
|
1057
|
-
return this.writeFile(absolutePath, data, defu5({
|
|
1058
|
-
mode: "fs"
|
|
1059
|
-
}, isSetString(options) ? {} : options ?? {}, {
|
|
1060
|
-
encoding: isSetString(options) ? options : "utf8"
|
|
1061
|
-
}));
|
|
1062
|
-
}
|
|
1063
|
-
/**
|
|
1064
1138
|
* Synchronously checks if a file exists in the virtual file system (VFS).
|
|
1065
1139
|
*
|
|
1066
1140
|
* @param pathOrId - The path or ID of the file to check.
|
|
1067
1141
|
* @returns `true` if the file exists, otherwise `false`.
|
|
1068
1142
|
*/
|
|
1069
1143
|
existsSync(pathOrId) {
|
|
1070
|
-
return this.
|
|
1144
|
+
return this.resolve(pathOrId) !== false;
|
|
1071
1145
|
}
|
|
1072
1146
|
/**
|
|
1073
1147
|
* Checks if a file exists in the virtual file system (VFS).
|
|
@@ -1075,32 +1149,22 @@ var VirtualFileSystem = class {
|
|
|
1075
1149
|
* @remarks
|
|
1076
1150
|
* This is a base method used by {@link existsSync} - it does not try to resolve the path prior to checking if it exists or not.
|
|
1077
1151
|
*
|
|
1078
|
-
* @param
|
|
1152
|
+
* @param pathOrId - The path of the file to check.
|
|
1079
1153
|
* @returns `true` if the file exists, otherwise `false`.
|
|
1080
1154
|
*/
|
|
1081
|
-
|
|
1082
|
-
const
|
|
1083
|
-
return
|
|
1155
|
+
isFile(pathOrId) {
|
|
1156
|
+
const resolved = this.resolve(pathOrId);
|
|
1157
|
+
return !!(resolved && (this.#virtualFS.existsSync(resolved) && this.#virtualFS.lstatSync(resolved).isFile() || this.#fs.existsSync(resolved) && this.#fs.lstatSync(resolved).isFile() || this.resolveFS(resolved).existsSync(resolved) && this.resolveFS(resolved).lstatSync(resolved).isFile()));
|
|
1084
1158
|
}
|
|
1085
1159
|
/**
|
|
1086
1160
|
* Checks if a directory exists in the virtual file system (VFS).
|
|
1087
1161
|
*
|
|
1088
|
-
* @param
|
|
1162
|
+
* @param pathOrId - The path of the directory to check.
|
|
1089
1163
|
* @returns `true` if the directory exists, otherwise `false`.
|
|
1090
1164
|
*/
|
|
1091
|
-
|
|
1092
|
-
const
|
|
1093
|
-
return this.#virtualFS.existsSync(
|
|
1094
|
-
}
|
|
1095
|
-
/**
|
|
1096
|
-
* Checks if a path exists in the virtual file system (VFS).
|
|
1097
|
-
*
|
|
1098
|
-
* @param path - The path to check.
|
|
1099
|
-
* @returns `true` if the path exists, otherwise `false`.
|
|
1100
|
-
*/
|
|
1101
|
-
pathExistsSync(path) {
|
|
1102
|
-
const formattedPath = this.formatAbsoluteFilePath(toFilePath(path));
|
|
1103
|
-
return this.isValidBuiltinId(formattedPath) || this.#virtualFS.existsSync(formattedPath) || this.#fs.existsSync(formattedPath) || this.resolveFS(path).existsSync(formattedPath);
|
|
1165
|
+
isDirectory(pathOrId) {
|
|
1166
|
+
const resolved = this.resolve(pathOrId);
|
|
1167
|
+
return !!(resolved && (this.#virtualFS.existsSync(resolved) && this.#virtualFS.lstatSync(resolved).isDirectory() || this.#fs.existsSync(resolved) && this.#fs.lstatSync(resolved).isDirectory() || this.resolveFS(resolved).existsSync(resolved) && this.resolveFS(resolved).lstatSync(resolved).isDirectory()));
|
|
1104
1168
|
}
|
|
1105
1169
|
/**
|
|
1106
1170
|
* Retrieves the status of a file in the virtual file system (VFS).
|
|
@@ -1109,7 +1173,7 @@ var VirtualFileSystem = class {
|
|
|
1109
1173
|
* @returns A promise that resolves to the file's status information, or false if the file does not exist.
|
|
1110
1174
|
*/
|
|
1111
1175
|
async stat(pathOrId, options) {
|
|
1112
|
-
return this.resolveFS(pathOrId).promises.stat(this.
|
|
1176
|
+
return this.resolveFS(pathOrId).promises.stat(this.resolve(toFilePath(pathOrId)) || toFilePath(pathOrId), options);
|
|
1113
1177
|
}
|
|
1114
1178
|
/**
|
|
1115
1179
|
* Synchronously retrieves the status of a file in the virtual file system (VFS).
|
|
@@ -1118,7 +1182,7 @@ var VirtualFileSystem = class {
|
|
|
1118
1182
|
* @returns The file's status information, or false if the file does not exist.
|
|
1119
1183
|
*/
|
|
1120
1184
|
statSync(pathOrId) {
|
|
1121
|
-
return this.resolveFS(pathOrId).statSync(this.
|
|
1185
|
+
return this.resolveFS(pathOrId).statSync(this.resolve(toFilePath(pathOrId)) || toFilePath(pathOrId));
|
|
1122
1186
|
}
|
|
1123
1187
|
/**
|
|
1124
1188
|
* Retrieves the status of a symbolic link in the virtual file system (VFS).
|
|
@@ -1127,7 +1191,7 @@ var VirtualFileSystem = class {
|
|
|
1127
1191
|
* @returns A promise that resolves to the symbolic link's status information, or false if the link does not exist.
|
|
1128
1192
|
*/
|
|
1129
1193
|
async lstat(pathOrId, options) {
|
|
1130
|
-
return this.resolveFS(pathOrId).promises.lstat(this.
|
|
1194
|
+
return this.resolveFS(pathOrId).promises.lstat(this.resolve(toFilePath(pathOrId)) || toFilePath(pathOrId), options);
|
|
1131
1195
|
}
|
|
1132
1196
|
/**
|
|
1133
1197
|
* Synchronously retrieves the status of a symbolic link in the virtual file system (VFS).
|
|
@@ -1136,23 +1200,7 @@ var VirtualFileSystem = class {
|
|
|
1136
1200
|
* @returns The symbolic link's status information, or false if the link does not exist.
|
|
1137
1201
|
*/
|
|
1138
1202
|
lstatSync(pathOrId, options) {
|
|
1139
|
-
return this.resolveFS(pathOrId).lstatSync(this.
|
|
1140
|
-
}
|
|
1141
|
-
/**
|
|
1142
|
-
* Resolves a path or ID to a runtime file id in the virtual file system.
|
|
1143
|
-
*
|
|
1144
|
-
* @param pathOrId - The path or id of the file to resolve.
|
|
1145
|
-
* @returns The resolved id of the runtime file if it exists, otherwise false.
|
|
1146
|
-
*/
|
|
1147
|
-
resolveId(pathOrId) {
|
|
1148
|
-
if (this.builtinIdMap.has(this.formatRuntimeId(toFilePath(pathOrId)))) {
|
|
1149
|
-
return this.formatRuntimeId(toFilePath(pathOrId));
|
|
1150
|
-
}
|
|
1151
|
-
const filePath = this.resolvePath(toFilePath(pathOrId));
|
|
1152
|
-
if (filePath) {
|
|
1153
|
-
return this.builtinIdMap.keys().find((id) => this.builtinIdMap.get(id) === filePath) || false;
|
|
1154
|
-
}
|
|
1155
|
-
return false;
|
|
1203
|
+
return this.resolveFS(pathOrId).lstatSync(this.resolve(toFilePath(pathOrId)) || toFilePath(pathOrId), options);
|
|
1156
1204
|
}
|
|
1157
1205
|
/**
|
|
1158
1206
|
* Resolves a path based on TypeScript's `tsconfig.json` paths.
|
|
@@ -1165,9 +1213,9 @@ var VirtualFileSystem = class {
|
|
|
1165
1213
|
resolveTsconfigPath(path) {
|
|
1166
1214
|
if (this.#context.tsconfig.options.paths) {
|
|
1167
1215
|
for (const tsconfigPathKey of Object.keys(this.#context.tsconfig.options.paths).filter((tsconfigPath) => path.startsWith(tsconfigPath.replaceAll("*", "")))) {
|
|
1168
|
-
const resolvedPath = this.#context.tsconfig.options.paths[tsconfigPathKey]?.find((tsconfigPath) => this.
|
|
1216
|
+
const resolvedPath = this.#context.tsconfig.options.paths[tsconfigPathKey]?.find((tsconfigPath) => this.resolvePath(joinPaths(this.#context.workspaceConfig.workspaceRoot, tsconfigPath.replaceAll("*", ""), path.replace(tsconfigPathKey.replaceAll("*", ""), ""))) || this.formatPath(tsconfigPath) === this.formatPath(path));
|
|
1169
1217
|
if (resolvedPath) {
|
|
1170
|
-
return this.
|
|
1218
|
+
return this.formatPath(resolvedPath) === this.formatPath(path) ? this.formatPath(resolvedPath) : this.resolvePath(joinPaths(this.#context.workspaceConfig.workspaceRoot, resolvedPath.replaceAll("*", ""), path.replace(tsconfigPathKey.replaceAll("*", ""), "")));
|
|
1171
1219
|
}
|
|
1172
1220
|
}
|
|
1173
1221
|
}
|
|
@@ -1197,7 +1245,7 @@ var VirtualFileSystem = class {
|
|
|
1197
1245
|
* @returns The resolved real path if it exists, otherwise undefined.
|
|
1198
1246
|
*/
|
|
1199
1247
|
realpathSync(pathOrId) {
|
|
1200
|
-
const filePath = this.
|
|
1248
|
+
const filePath = this.resolve(toFilePath(pathOrId));
|
|
1201
1249
|
if (!filePath) {
|
|
1202
1250
|
throw new Error(`File not found: ${toFilePath(pathOrId)}`);
|
|
1203
1251
|
}
|
|
@@ -1210,24 +1258,18 @@ var VirtualFileSystem = class {
|
|
|
1210
1258
|
* @param options - Optional parameters for resolving the path, such as whether to include the file extension.
|
|
1211
1259
|
* @returns The resolved file path if it exists, otherwise undefined.
|
|
1212
1260
|
*/
|
|
1213
|
-
|
|
1214
|
-
const
|
|
1215
|
-
const resolverKey = `${
|
|
1261
|
+
resolve(pathOrId, options = {}) {
|
|
1262
|
+
const formattedPathOrId = toFilePath(pathOrId);
|
|
1263
|
+
const resolverKey = `${formattedPathOrId}${options.withExtension ? "-ext" : ""}${options.paths ? `-${murmurhash(options.paths)}` : ""}${options.type ? `-${options.type}` : ""}`;
|
|
1216
1264
|
if (this.#cachedResolver.has(resolverKey)) {
|
|
1217
1265
|
return this.#cachedResolver.get(resolverKey);
|
|
1218
|
-
} else if (this.#cachedFS.has(formattedPath)) {
|
|
1219
|
-
return formattedPath;
|
|
1220
1266
|
}
|
|
1221
|
-
let result =
|
|
1222
|
-
if (
|
|
1223
|
-
result = this.
|
|
1224
|
-
} else {
|
|
1225
|
-
result = this.resolvePathName(formattedPath, options);
|
|
1267
|
+
let result = this.resolveId(formattedPathOrId);
|
|
1268
|
+
if (!result) {
|
|
1269
|
+
result = this.resolvePath(formattedPathOrId, options);
|
|
1226
1270
|
}
|
|
1227
1271
|
if (!result) {
|
|
1228
1272
|
result = false;
|
|
1229
|
-
} else {
|
|
1230
|
-
result = toFilePath(result);
|
|
1231
1273
|
}
|
|
1232
1274
|
if (result && options.withExtension === false) {
|
|
1233
1275
|
return result.replace(/\.[m|c]?[t|j]sx?$/, "");
|
|
@@ -1236,16 +1278,12 @@ var VirtualFileSystem = class {
|
|
|
1236
1278
|
return result;
|
|
1237
1279
|
}
|
|
1238
1280
|
/**
|
|
1239
|
-
*
|
|
1281
|
+
* Retrieves the partial metadata for all files in the virtual file system (VFS).
|
|
1240
1282
|
*
|
|
1241
|
-
* @
|
|
1242
|
-
* @returns The formatted file path.
|
|
1283
|
+
* @returns A record containing the partial metadata for all files.
|
|
1243
1284
|
*/
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
throw new Error(`Invalid path provided. Expected a string or a valid file path.`);
|
|
1247
|
-
}
|
|
1248
|
-
return path.replace(new RegExp(`^${this.#context.config.output.builtinPrefix}:`), "").replace(/^\\0/, "");
|
|
1285
|
+
getPartialMeta() {
|
|
1286
|
+
return Object.fromEntries(Object.entries(this.#meta).filter(([_, data]) => isSetObject(data)));
|
|
1249
1287
|
}
|
|
1250
1288
|
/**
|
|
1251
1289
|
* Converts a relative path to an absolute path based on the workspace and project root.
|
|
@@ -1253,56 +1291,67 @@ var VirtualFileSystem = class {
|
|
|
1253
1291
|
* @param path - The relative path to convert.
|
|
1254
1292
|
* @returns The absolute path.
|
|
1255
1293
|
*/
|
|
1256
|
-
|
|
1257
|
-
const formattedPath =
|
|
1294
|
+
formatPath(path) {
|
|
1295
|
+
const formattedPath = toFilePath(path);
|
|
1258
1296
|
if (isAbsolutePath(formattedPath) || formattedPath.startsWith(this.#context.workspaceConfig.workspaceRoot)) {
|
|
1259
1297
|
return formattedPath;
|
|
1260
1298
|
} else if (formattedPath.startsWith(this.#context.config.projectRoot)) {
|
|
1261
1299
|
return joinPaths(this.#context.workspaceConfig.workspaceRoot, formattedPath);
|
|
1262
1300
|
}
|
|
1263
1301
|
return formattedPath;
|
|
1264
|
-
}
|
|
1302
|
+
}
|
|
1265
1303
|
/**
|
|
1266
|
-
* Formats a
|
|
1304
|
+
* Formats a file id by removing the file extension and prepending the runtime prefix.
|
|
1267
1305
|
*
|
|
1268
|
-
* @param id - The
|
|
1269
|
-
* @returns The formatted
|
|
1306
|
+
* @param id - The file ID to format.
|
|
1307
|
+
* @returns The formatted file ID.
|
|
1270
1308
|
*/
|
|
1271
|
-
|
|
1272
|
-
|
|
1309
|
+
formatId(id) {
|
|
1310
|
+
const formattedId = toFilePath(id);
|
|
1311
|
+
return `${this.#context.config.output.builtinPrefix}:${formattedId.replace(new RegExp(`^${this.#context.config.output.builtinPrefix}:`), "").replace(/^\\0/, "").replace(findFileExtensionSafe(formattedId), "")}`;
|
|
1273
1312
|
}
|
|
1274
1313
|
/**
|
|
1275
|
-
* Resolves
|
|
1314
|
+
* Resolves an id parameter to a corresponding virtual file path in the virtual file system (VFS).
|
|
1276
1315
|
*
|
|
1277
|
-
* @param
|
|
1278
|
-
* @returns The resolved file
|
|
1316
|
+
* @param id - The id to resolve.
|
|
1317
|
+
* @returns The resolved file id if it exists, otherwise undefined.
|
|
1279
1318
|
*/
|
|
1280
|
-
|
|
1281
|
-
if (
|
|
1282
|
-
return false;
|
|
1319
|
+
resolveId(id) {
|
|
1320
|
+
if (this.#ids[this.formatId(id)]) {
|
|
1321
|
+
return this.#ids[this.formatId(id)] || false;
|
|
1283
1322
|
}
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1323
|
+
return false;
|
|
1324
|
+
}
|
|
1325
|
+
/**
|
|
1326
|
+
* Resolves a path parameter to a corresponding virtual file path in the virtual file system (VFS).
|
|
1327
|
+
*
|
|
1328
|
+
* @param path - The path to resolve.
|
|
1329
|
+
* @param options - Optional parameters for resolving the path.
|
|
1330
|
+
* @returns The resolved file path if it exists, otherwise undefined.
|
|
1331
|
+
*/
|
|
1332
|
+
resolvePath(path, options = {}) {
|
|
1333
|
+
if (isAbsolutePath(path)) {
|
|
1334
|
+
if (this.#existsSync(path)) {
|
|
1335
|
+
return path;
|
|
1287
1336
|
}
|
|
1288
|
-
const result = checkVariants(
|
|
1337
|
+
const result = this.checkVariants(path);
|
|
1289
1338
|
if (result) {
|
|
1290
1339
|
return result;
|
|
1291
1340
|
}
|
|
1292
1341
|
}
|
|
1293
|
-
for (const
|
|
1294
|
-
const request = joinPaths(
|
|
1295
|
-
if (
|
|
1342
|
+
for (const parentPath of this.resolveParentPaths(path, options.paths)) {
|
|
1343
|
+
const request = joinPaths(parentPath, path);
|
|
1344
|
+
if (this.#existsSync(request)) {
|
|
1296
1345
|
return request;
|
|
1297
1346
|
}
|
|
1298
|
-
const result = checkVariants(request
|
|
1347
|
+
const result = this.checkVariants(request);
|
|
1299
1348
|
if (result) {
|
|
1300
1349
|
return result;
|
|
1301
1350
|
}
|
|
1302
1351
|
}
|
|
1303
1352
|
return false;
|
|
1304
1353
|
}
|
|
1305
|
-
resolveParentPaths(request,
|
|
1354
|
+
resolveParentPaths(request, parents = []) {
|
|
1306
1355
|
let paths = [
|
|
1307
1356
|
this.#context.workspaceConfig.workspaceRoot,
|
|
1308
1357
|
joinPaths(this.#context.workspaceConfig.workspaceRoot, this.#context.config.projectRoot)
|
|
@@ -1320,7 +1369,7 @@ var VirtualFileSystem = class {
|
|
|
1320
1369
|
ret.push(path);
|
|
1321
1370
|
}
|
|
1322
1371
|
return ret;
|
|
1323
|
-
},
|
|
1372
|
+
}, parents.filter(Boolean).map((p) => this.formatPath(p)));
|
|
1324
1373
|
}
|
|
1325
1374
|
/**
|
|
1326
1375
|
* Select the file system module to use for the operation based on the path or URL.
|
|
@@ -1351,7 +1400,7 @@ var VirtualFileSystem = class {
|
|
|
1351
1400
|
} else if (options.mode === "fs" || this.#context.config.output.mode === "fs" || isParentPath(toFilePath(pathOrUrl), this.#context.dataPath) || isParentPath(toFilePath(pathOrUrl), this.#context.cachePath) || isParentPath(toFilePath(pathOrUrl), joinPaths(this.#context.workspaceConfig.workspaceRoot, this.#context.config.output.outputPath))) {
|
|
1352
1401
|
return "fs";
|
|
1353
1402
|
}
|
|
1354
|
-
return
|
|
1403
|
+
return void 0;
|
|
1355
1404
|
}
|
|
1356
1405
|
/**
|
|
1357
1406
|
* Clears the resolver cache for a given path.
|
|
@@ -1361,208 +1410,93 @@ var VirtualFileSystem = class {
|
|
|
1361
1410
|
clearResolverCache(path) {
|
|
1362
1411
|
this.#cachedResolver.keys().filter((key) => key.startsWith(toFilePath(path))).forEach((key) => this.#cachedResolver.delete(key));
|
|
1363
1412
|
}
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
__name(toFilePath, "toFilePath");
|
|
1377
|
-
var FS_METHODS = [
|
|
1378
|
-
"mkdir",
|
|
1379
|
-
"mkdirSync",
|
|
1380
|
-
"rmdir",
|
|
1381
|
-
"rmdirSync",
|
|
1382
|
-
"unlink",
|
|
1383
|
-
"unlinkSync",
|
|
1384
|
-
"existsSync",
|
|
1385
|
-
"realpathSync",
|
|
1386
|
-
"writeFileSync",
|
|
1387
|
-
"readFileSync",
|
|
1388
|
-
"readdirSync",
|
|
1389
|
-
"createWriteStream",
|
|
1390
|
-
"WriteStream",
|
|
1391
|
-
"createReadStream",
|
|
1392
|
-
"ReadStream"
|
|
1393
|
-
];
|
|
1394
|
-
var FS_PROMISE_METHODS = [
|
|
1395
|
-
"mkdir",
|
|
1396
|
-
"rm",
|
|
1397
|
-
"rmdir",
|
|
1398
|
-
"unlink",
|
|
1399
|
-
"writeFile",
|
|
1400
|
-
"readFile",
|
|
1401
|
-
"readdir",
|
|
1402
|
-
"stat",
|
|
1403
|
-
"lstat"
|
|
1404
|
-
];
|
|
1405
|
-
function cloneFS(originalFS) {
|
|
1406
|
-
const clonedFS = {
|
|
1407
|
-
...originalFS,
|
|
1408
|
-
promises: {
|
|
1409
|
-
...originalFS.promises ?? {}
|
|
1413
|
+
/**
|
|
1414
|
+
* Check if the file exists with different variants (index, extensions).
|
|
1415
|
+
*
|
|
1416
|
+
* @param request - The request path to check.
|
|
1417
|
+
* @param parentPath - An optional parent path to prepend to the request.
|
|
1418
|
+
* @returns The file path if it exists, otherwise false.
|
|
1419
|
+
*/
|
|
1420
|
+
checkVariants(request, parentPath) {
|
|
1421
|
+
const path = parentPath ? joinPaths(parentPath, request) : request;
|
|
1422
|
+
let file = this.checkExtensions(path);
|
|
1423
|
+
if (file) {
|
|
1424
|
+
return file;
|
|
1410
1425
|
}
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
clonedFS[method] = originalFS[method];
|
|
1426
|
+
file = this.checkIndex(path);
|
|
1427
|
+
if (file) {
|
|
1428
|
+
return file;
|
|
1415
1429
|
}
|
|
1430
|
+
return false;
|
|
1416
1431
|
}
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1432
|
+
/**
|
|
1433
|
+
* Check if the index file exists in the given request path.
|
|
1434
|
+
*
|
|
1435
|
+
* @param request - The request path to check.
|
|
1436
|
+
* @returns The index file path if it exists, otherwise false.
|
|
1437
|
+
*/
|
|
1438
|
+
checkIndex(request) {
|
|
1439
|
+
let file = joinPaths(request, "index");
|
|
1440
|
+
if (this.#existsSync(file)) {
|
|
1441
|
+
return file;
|
|
1423
1442
|
}
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
clonedFS[prop] = clonedFS[prop].bind(originalFS);
|
|
1428
|
-
if (isFunction(clonedFS.promises[prop])) {
|
|
1429
|
-
clonedFS.promises[prop] = clonedFS.promises[prop].bind(originalFS);
|
|
1430
|
-
}
|
|
1443
|
+
file = this.checkExtensions(file);
|
|
1444
|
+
if (file) {
|
|
1445
|
+
return file;
|
|
1431
1446
|
}
|
|
1447
|
+
return false;
|
|
1432
1448
|
}
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1449
|
+
/**
|
|
1450
|
+
* Check if the file exists with different extensions.
|
|
1451
|
+
*
|
|
1452
|
+
* @param request - The request path to check.
|
|
1453
|
+
* @param vfs - The file system module to use for checking file existence.
|
|
1454
|
+
* @returns The file path if it exists with any of the checked extensions, otherwise false.
|
|
1455
|
+
*/
|
|
1456
|
+
checkExtensions(request) {
|
|
1457
|
+
let file = `${request}.ts`;
|
|
1458
|
+
if (this.#existsSync(file)) {
|
|
1459
|
+
return file;
|
|
1436
1460
|
}
|
|
1461
|
+
file = `${request}.mts`;
|
|
1462
|
+
if (this.#existsSync(file)) {
|
|
1463
|
+
return file;
|
|
1464
|
+
}
|
|
1465
|
+
file = `${request}.cts`;
|
|
1466
|
+
if (this.#existsSync(file)) {
|
|
1467
|
+
return file;
|
|
1468
|
+
}
|
|
1469
|
+
file = `${request}.tsx`;
|
|
1470
|
+
if (this.#existsSync(file)) {
|
|
1471
|
+
return file;
|
|
1472
|
+
}
|
|
1473
|
+
file = `${request}.js`;
|
|
1474
|
+
if (this.#existsSync(file)) {
|
|
1475
|
+
return file;
|
|
1476
|
+
}
|
|
1477
|
+
file = `${request}.mjs`;
|
|
1478
|
+
if (this.#existsSync(file)) {
|
|
1479
|
+
return file;
|
|
1480
|
+
}
|
|
1481
|
+
file = `${request}.cjs`;
|
|
1482
|
+
if (this.#existsSync(file)) {
|
|
1483
|
+
return file;
|
|
1484
|
+
}
|
|
1485
|
+
file = `${request}.jsx`;
|
|
1486
|
+
if (this.#existsSync(file)) {
|
|
1487
|
+
return file;
|
|
1488
|
+
}
|
|
1489
|
+
file = `${request}.json`;
|
|
1490
|
+
if (this.#existsSync(file)) {
|
|
1491
|
+
return file;
|
|
1492
|
+
}
|
|
1493
|
+
file = `${request}.d.ts`;
|
|
1494
|
+
if (this.#existsSync(file)) {
|
|
1495
|
+
return file;
|
|
1496
|
+
}
|
|
1497
|
+
return false;
|
|
1437
1498
|
}
|
|
1438
|
-
|
|
1439
|
-
}
|
|
1440
|
-
__name(cloneFS, "cloneFS");
|
|
1441
|
-
function patchFS(originalFS, vfs) {
|
|
1442
|
-
const clonedFS = cloneFS(originalFS);
|
|
1443
|
-
originalFS.mkdirSync = (file, options) => vfs.mkdirSync(toFilePath(file), options);
|
|
1444
|
-
originalFS.mkdir = (file, options, callback) => vfs.mkdir(toFilePath(file), options, callback);
|
|
1445
|
-
originalFS.promises.mkdir = async (file, options) => vfs.mkdir(toFilePath(file), options);
|
|
1446
|
-
originalFS.unlinkSync = (file) => vfs.unlinkSync(toFilePath(file));
|
|
1447
|
-
originalFS.promises.rm = async (file, options) => vfs.rm(toFilePath(file), options);
|
|
1448
|
-
originalFS.promises.unlink = async (file) => vfs.unlink(toFilePath(file));
|
|
1449
|
-
originalFS.existsSync = (file) => vfs.existsSync(toFilePath(file));
|
|
1450
|
-
Object.defineProperty(originalFS, "realpathSync", {
|
|
1451
|
-
value: /* @__PURE__ */ __name((file, options) => vfs.realpathSync(toFilePath(file), options), "value")
|
|
1452
|
-
});
|
|
1453
|
-
originalFS.writeFileSync = (file, data, options) => vfs.writeFileSync(toFilePath(file), data, options);
|
|
1454
|
-
originalFS.promises.writeFile = async (file, data, options) => vfs.writeFile(toFilePath(file), data, options);
|
|
1455
|
-
originalFS.readFileSync = (file, options) => vfs.readFileSync(toFilePath(file), options);
|
|
1456
|
-
originalFS.promises.readFile = (file, options) => vfs.readFile(toFilePath(file), options);
|
|
1457
|
-
originalFS.readdirSync = (file, options) => vfs.readdirSync(toFilePath(file), options);
|
|
1458
|
-
originalFS.promises.readdir = (file, options) => vfs.readdir(toFilePath(file), options);
|
|
1459
|
-
Object.defineProperty(originalFS, "statSync", {
|
|
1460
|
-
value: /* @__PURE__ */ __name((file, options) => vfs.statSync(toFilePath(file), options), "value")
|
|
1461
|
-
});
|
|
1462
|
-
originalFS.stat = (file, options) => vfs.statSync(toFilePath(file), options);
|
|
1463
|
-
originalFS.promises.stat = (file, options) => vfs.stat(toFilePath(file), options);
|
|
1464
|
-
Object.defineProperty(originalFS, "lstatSync", {
|
|
1465
|
-
value: /* @__PURE__ */ __name((file, options) => vfs.lstatSync(toFilePath(file), options), "value")
|
|
1466
|
-
});
|
|
1467
|
-
originalFS.lstat = (file, options) => vfs.lstatSync(toFilePath(file), options);
|
|
1468
|
-
originalFS.promises.lstat = (file, options) => vfs.lstat(toFilePath(file), options);
|
|
1469
|
-
return () => {
|
|
1470
|
-
originalFS.mkdirSync = clonedFS.mkdirSync;
|
|
1471
|
-
originalFS.mkdir = clonedFS.mkdir;
|
|
1472
|
-
originalFS.promises.mkdir = clonedFS.promises.mkdir;
|
|
1473
|
-
originalFS.unlinkSync = clonedFS.unlinkSync;
|
|
1474
|
-
originalFS.promises.rm = clonedFS.promises.rm;
|
|
1475
|
-
originalFS.promises.unlink = clonedFS.promises.unlink;
|
|
1476
|
-
originalFS.existsSync = clonedFS.existsSync;
|
|
1477
|
-
originalFS.realpathSync = clonedFS.realpathSync;
|
|
1478
|
-
originalFS.writeFileSync = clonedFS.writeFileSync;
|
|
1479
|
-
originalFS.promises.writeFile = clonedFS.promises.writeFile;
|
|
1480
|
-
originalFS.readFileSync = clonedFS.readFileSync;
|
|
1481
|
-
originalFS.promises.readFile = clonedFS.promises.readFile;
|
|
1482
|
-
originalFS.readdirSync = clonedFS.readdirSync;
|
|
1483
|
-
originalFS.promises.readdir = clonedFS.promises.readdir;
|
|
1484
|
-
Object.defineProperty(originalFS, "statSync", {
|
|
1485
|
-
value: clonedFS.statSync
|
|
1486
|
-
});
|
|
1487
|
-
originalFS.stat = clonedFS.stat;
|
|
1488
|
-
originalFS.promises.stat = clonedFS.promises.stat;
|
|
1489
|
-
Object.defineProperty(originalFS, "lstatSync", {
|
|
1490
|
-
value: clonedFS.lstatSync
|
|
1491
|
-
});
|
|
1492
|
-
originalFS.lstat = clonedFS.lstat;
|
|
1493
|
-
originalFS.promises.lstat = clonedFS.promises.lstat;
|
|
1494
|
-
};
|
|
1495
|
-
}
|
|
1496
|
-
__name(patchFS, "patchFS");
|
|
1497
|
-
function checkVariants(request, vfs, parentPath) {
|
|
1498
|
-
const path = parentPath ? joinPaths(parentPath, request) : request;
|
|
1499
|
-
let file = checkExtensions(path, vfs);
|
|
1500
|
-
if (file) {
|
|
1501
|
-
return file;
|
|
1502
|
-
}
|
|
1503
|
-
file = checkIndex(path, vfs);
|
|
1504
|
-
if (file) {
|
|
1505
|
-
return file;
|
|
1506
|
-
}
|
|
1507
|
-
return false;
|
|
1508
|
-
}
|
|
1509
|
-
__name(checkVariants, "checkVariants");
|
|
1510
|
-
function checkIndex(request, vfs) {
|
|
1511
|
-
let file = joinPaths(request, "index");
|
|
1512
|
-
if (vfs.fileExistsSync(file)) {
|
|
1513
|
-
return file;
|
|
1514
|
-
}
|
|
1515
|
-
file = checkExtensions(file, vfs);
|
|
1516
|
-
if (file) {
|
|
1517
|
-
return file;
|
|
1518
|
-
}
|
|
1519
|
-
return false;
|
|
1520
|
-
}
|
|
1521
|
-
__name(checkIndex, "checkIndex");
|
|
1522
|
-
function checkExtensions(request, vfs) {
|
|
1523
|
-
let file = `${request}.ts`;
|
|
1524
|
-
if (vfs.fileExistsSync(file)) {
|
|
1525
|
-
return file;
|
|
1526
|
-
}
|
|
1527
|
-
file = `${request}.mts`;
|
|
1528
|
-
if (vfs.fileExistsSync(file)) {
|
|
1529
|
-
return file;
|
|
1530
|
-
}
|
|
1531
|
-
file = `${request}.cts`;
|
|
1532
|
-
if (vfs.fileExistsSync(file)) {
|
|
1533
|
-
return file;
|
|
1534
|
-
}
|
|
1535
|
-
file = `${request}.tsx`;
|
|
1536
|
-
if (vfs.fileExistsSync(file)) {
|
|
1537
|
-
return file;
|
|
1538
|
-
}
|
|
1539
|
-
file = `${request}.js`;
|
|
1540
|
-
if (vfs.fileExistsSync(file)) {
|
|
1541
|
-
return file;
|
|
1542
|
-
}
|
|
1543
|
-
file = `${request}.mjs`;
|
|
1544
|
-
if (vfs.fileExistsSync(file)) {
|
|
1545
|
-
return file;
|
|
1546
|
-
}
|
|
1547
|
-
file = `${request}.cjs`;
|
|
1548
|
-
if (vfs.fileExistsSync(file)) {
|
|
1549
|
-
return file;
|
|
1550
|
-
}
|
|
1551
|
-
file = `${request}.jsx`;
|
|
1552
|
-
if (vfs.fileExistsSync(file)) {
|
|
1553
|
-
return file;
|
|
1554
|
-
}
|
|
1555
|
-
file = `${request}.json`;
|
|
1556
|
-
if (vfs.fileExistsSync(file)) {
|
|
1557
|
-
return file;
|
|
1558
|
-
}
|
|
1559
|
-
file = `${request}.d.ts`;
|
|
1560
|
-
if (vfs.fileExistsSync(file)) {
|
|
1561
|
-
return file;
|
|
1562
|
-
}
|
|
1563
|
-
return false;
|
|
1564
|
-
}
|
|
1565
|
-
__name(checkExtensions, "checkExtensions");
|
|
1499
|
+
};
|
|
1566
1500
|
function createVfs(context) {
|
|
1567
1501
|
const vfs = new VirtualFileSystem(context);
|
|
1568
1502
|
return vfs;
|
|
@@ -1798,6 +1732,57 @@ var PowerlinesContext = class _PowerlinesContext {
|
|
|
1798
1732
|
return relativeToWorkspaceRoot(this.config.projectRoot);
|
|
1799
1733
|
}
|
|
1800
1734
|
/**
|
|
1735
|
+
* The builtin module id that exist in the Powerlines virtual file system
|
|
1736
|
+
*/
|
|
1737
|
+
get builtins() {
|
|
1738
|
+
return Object.values(this.fs.meta).filter((meta) => meta && meta.variant === "builtin").map((meta) => meta?.id).filter(Boolean);
|
|
1739
|
+
}
|
|
1740
|
+
/**
|
|
1741
|
+
* Get the project root relative to the workspace root
|
|
1742
|
+
*/
|
|
1743
|
+
async getBuiltins() {
|
|
1744
|
+
return Promise.all(Object.entries(this.fs.meta).filter(([, meta]) => meta && meta.variant === "builtin").map(async ([path, meta]) => {
|
|
1745
|
+
const code = await this.fs.readFile(path);
|
|
1746
|
+
return {
|
|
1747
|
+
...meta,
|
|
1748
|
+
path,
|
|
1749
|
+
code
|
|
1750
|
+
};
|
|
1751
|
+
}));
|
|
1752
|
+
}
|
|
1753
|
+
/**
|
|
1754
|
+
* Resolves a entry virtual file and writes it to the VFS if it does not already exist
|
|
1755
|
+
*
|
|
1756
|
+
* @param code - The source code of the entry file
|
|
1757
|
+
* @param path - A path to write the entry file to
|
|
1758
|
+
* @param options - Optional write file options
|
|
1759
|
+
*/
|
|
1760
|
+
async writeEntry(code, path, options = {}) {
|
|
1761
|
+
return this.fs.writeFile(isAbsolute(path) ? path : appendPath(path, this.entryPath), {
|
|
1762
|
+
code,
|
|
1763
|
+
variant: "entry"
|
|
1764
|
+
}, defu5(options, {
|
|
1765
|
+
mode: this.config.output.mode
|
|
1766
|
+
}));
|
|
1767
|
+
}
|
|
1768
|
+
/**
|
|
1769
|
+
* Resolves a builtin virtual file and writes it to the VFS if it does not already exist
|
|
1770
|
+
*
|
|
1771
|
+
* @param code - The source code of the builtin file
|
|
1772
|
+
* @param id - The unique identifier of the builtin file
|
|
1773
|
+
* @param path - An optional path to write the builtin file to
|
|
1774
|
+
* @param options - Optional write file options
|
|
1775
|
+
*/
|
|
1776
|
+
async writeBuiltin(code, id, path, options = {}) {
|
|
1777
|
+
return this.fs.writeFile(path ? isAbsolute(path) ? path : joinPaths$1(this.builtinsPath, path) : appendPath(id, this.builtinsPath), {
|
|
1778
|
+
id,
|
|
1779
|
+
code,
|
|
1780
|
+
variant: "builtin"
|
|
1781
|
+
}, defu5(options, {
|
|
1782
|
+
mode: this.config.output.mode
|
|
1783
|
+
}));
|
|
1784
|
+
}
|
|
1785
|
+
/**
|
|
1801
1786
|
* Parses the source code and returns a {@link ParseResult} object.
|
|
1802
1787
|
*
|
|
1803
1788
|
* @param code - The source code to parse.
|
|
@@ -2390,6 +2375,26 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends PowerlinesContext
|
|
|
2390
2375
|
}
|
|
2391
2376
|
}
|
|
2392
2377
|
};
|
|
2378
|
+
function getBaseFileHeader(context) {
|
|
2379
|
+
return `
|
|
2380
|
+
// Generated with ${titleCase(context.config.framework)}
|
|
2381
|
+
// Note: Do not edit this file manually - it will be overwritten automatically
|
|
2382
|
+
`;
|
|
2383
|
+
}
|
|
2384
|
+
__name(getBaseFileHeader, "getBaseFileHeader");
|
|
2385
|
+
function getFileHeader(context, options = {}) {
|
|
2386
|
+
const { directive = null, prettierIgnore = false } = options;
|
|
2387
|
+
return `/* eslint-disable */
|
|
2388
|
+
// biome-ignore lint: disable
|
|
2389
|
+
${prettierIgnore ? `// prettier-ignore` : ""}${directive ? `
|
|
2390
|
+
|
|
2391
|
+
${directive}
|
|
2392
|
+
` : "\n"}
|
|
2393
|
+
${getBaseFileHeader(context)}
|
|
2394
|
+
|
|
2395
|
+
`;
|
|
2396
|
+
}
|
|
2397
|
+
__name(getFileHeader, "getFileHeader");
|
|
2393
2398
|
function getString(code) {
|
|
2394
2399
|
if (!code) {
|
|
2395
2400
|
return "";
|
|
@@ -2424,7 +2429,7 @@ function resolveModulePath(nodePath, state) {
|
|
|
2424
2429
|
return;
|
|
2425
2430
|
}
|
|
2426
2431
|
const sourcePath = nodePath.node.value;
|
|
2427
|
-
const resolvedPath = state.context?.fs.
|
|
2432
|
+
const resolvedPath = state.context?.fs.resolve(sourcePath);
|
|
2428
2433
|
if (resolvedPath) {
|
|
2429
2434
|
nodePath.replaceWith(t.stringLiteral(
|
|
2430
2435
|
// Remove the file extension if it exists
|
|
@@ -2525,8 +2530,9 @@ var moduleResolverBabelPlugin = /* @__PURE__ */ __name((context) => {
|
|
|
2525
2530
|
async function generateTypes(context) {
|
|
2526
2531
|
context.log(LogLevelLabel.TRACE, `Preparing the TypeScript definitions for the Powerlines project.`);
|
|
2527
2532
|
context.log(LogLevelLabel.TRACE, "Transforming built-ins runtime modules files.");
|
|
2528
|
-
const builtinFiles = await
|
|
2529
|
-
|
|
2533
|
+
const builtinFiles = await context.getBuiltins();
|
|
2534
|
+
const builtinFilePaths = await Promise.all(builtinFiles.map(async (file) => {
|
|
2535
|
+
const result = await transformAsync(file.code.toString(), {
|
|
2530
2536
|
highlightCode: true,
|
|
2531
2537
|
code: true,
|
|
2532
2538
|
ast: false,
|
|
@@ -2554,14 +2560,14 @@ async function generateTypes(context) {
|
|
|
2554
2560
|
throw new Error(`Powerlines - Generate Types failed to compile ${file.id}`);
|
|
2555
2561
|
}
|
|
2556
2562
|
context.log(LogLevelLabel.TRACE, `Writing transformed built-in runtime file ${file.id}.`);
|
|
2557
|
-
await context.
|
|
2563
|
+
await context.writeBuiltin(result.code, file.id, file.path);
|
|
2558
2564
|
return file.path;
|
|
2559
2565
|
}));
|
|
2560
2566
|
const typescriptPath = await resolvePackage("typescript");
|
|
2561
2567
|
if (!typescriptPath) {
|
|
2562
2568
|
throw new Error("Could not resolve TypeScript package location. Please ensure TypeScript is installed.");
|
|
2563
2569
|
}
|
|
2564
|
-
const files =
|
|
2570
|
+
const files = builtinFilePaths.reduce((ret, fileName) => {
|
|
2565
2571
|
const formatted = replacePath(fileName, context.workspaceConfig.workspaceRoot);
|
|
2566
2572
|
if (!ret.includes(formatted)) {
|
|
2567
2573
|
ret.push(formatted);
|
|
@@ -2596,9 +2602,9 @@ async function generateTypes(context) {
|
|
|
2596
2602
|
const emitResult = program.emit(void 0, (fileName, text, _, __, sourceFiles, _data) => {
|
|
2597
2603
|
const sourceFile2 = sourceFiles?.[0];
|
|
2598
2604
|
if (sourceFile2?.fileName && !fileName.endsWith(".map")) {
|
|
2599
|
-
if (
|
|
2605
|
+
if (builtinFiles.some((file) => file.id === sourceFile2.fileName || file.path === sourceFile2.fileName)) {
|
|
2600
2606
|
builtinModules += `
|
|
2601
|
-
declare module "${context.fs.
|
|
2607
|
+
declare module "${context.fs.resolve(sourceFile2.fileName)}" {
|
|
2602
2608
|
${text.trim().replace(/^\s*export\s*declare\s*/gm, "export ").replace(/^\s*declare\s*/gm, "")}
|
|
2603
2609
|
}
|
|
2604
2610
|
`;
|
|
@@ -2637,7 +2643,9 @@ ${builtinModules}`.replace(
|
|
|
2637
2643
|
/import\s*(?:type\s*)?\{?[\w,\s]*(?:\}\s*)?from\s*(?:'|")@?[a-zA-Z0-9-\\/.]*(?:'|");?/g,
|
|
2638
2644
|
""
|
|
2639
2645
|
).replaceAll("#private;", "").replace(/__Ω/g, ""));
|
|
2640
|
-
await context.fs.
|
|
2646
|
+
await context.fs.writeFile(sourceFile.id, getString(sourceFile.code), {
|
|
2647
|
+
mode: "fs"
|
|
2648
|
+
});
|
|
2641
2649
|
}
|
|
2642
2650
|
__name(generateTypes, "generateTypes");
|
|
2643
2651
|
async function installPackage(context, packageName, dev = false) {
|
|
@@ -2801,7 +2809,9 @@ async function initializeTsconfig(context) {
|
|
|
2801
2809
|
const tsconfigFilePath = getTsconfigFilePath(context.workspaceConfig.workspaceRoot, context.config.projectRoot, context.config.tsconfig);
|
|
2802
2810
|
context.tsconfig.originalTsconfigJson = await readJsonFile(tsconfigFilePath);
|
|
2803
2811
|
context.tsconfig.tsconfigJson = await resolveTsconfigChanges(context);
|
|
2804
|
-
await context.fs.
|
|
2812
|
+
await context.fs.writeFile(tsconfigFilePath, StormJSON.stringify(context.tsconfig.tsconfigJson), {
|
|
2813
|
+
mode: "fs"
|
|
2814
|
+
});
|
|
2805
2815
|
context.tsconfig = getParsedTypeScriptConfig(context.workspaceConfig.workspaceRoot, context.config.projectRoot, context.config.tsconfig, context.config.tsconfigRaw, context.tsconfig.originalTsconfigJson);
|
|
2806
2816
|
}
|
|
2807
2817
|
__name(initializeTsconfig, "initializeTsconfig");
|
|
@@ -2937,11 +2947,6 @@ ${formatLogMessage(context.config)}`);
|
|
|
2937
2947
|
await this.callPreHook(context, "prepare");
|
|
2938
2948
|
if (context.config.projectType === "application") {
|
|
2939
2949
|
context.log(LogLevelLabel.TRACE, "Generating built-in barrel file");
|
|
2940
|
-
await context.fs.writeBuiltinFile("index", joinPaths(context.builtinsPath, "index.ts"), `
|
|
2941
|
-
${getFileHeader(context)}
|
|
2942
|
-
|
|
2943
|
-
${(await context.fs.listBuiltinFiles()).filter((file) => !isParentPath(file.path, joinPaths(context.builtinsPath, "log")) && !isParentPath(file.path, joinPaths(context.builtinsPath, "storage"))).map((file) => `export * from "./${replacePath(file.path, context.builtinsPath).replace(`.${findFileExtensionSafe(file.path)}`, "")}";`).join("\n")}
|
|
2944
|
-
`);
|
|
2945
2950
|
}
|
|
2946
2951
|
if (context.config.output.dts !== false) {
|
|
2947
2952
|
await generateTypes(context);
|
|
@@ -3372,5 +3377,5 @@ Note: Please ensure the plugin package's default export is a class that extends
|
|
|
3372
3377
|
};
|
|
3373
3378
|
|
|
3374
3379
|
export { PowerlinesAPI, createLog, getString };
|
|
3375
|
-
//# sourceMappingURL=chunk-
|
|
3376
|
-
//# sourceMappingURL=chunk-
|
|
3380
|
+
//# sourceMappingURL=chunk-OYIM2M74.js.map
|
|
3381
|
+
//# sourceMappingURL=chunk-OYIM2M74.js.map
|