From 5fbcd0b8d6d89d7b24b1c637a0da00827f8b38e1 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Fri, 20 Mar 2026 14:45:38 +0100 Subject: [PATCH] Update Package.json. --- .gitignore | 4 +- bun.lock | 69 +++++++------- dist/build/compile.js | 74 +++++++++++++++ dist/build/lightningcss-wasm-shim.js | 9 ++ dist/commands/index.js | 45 ++++++++++ .../server/web-pages/grab-file-path-module.js | 3 - .../web-pages/grab-tsx-string-module.js | 4 - dist/index.js | 47 +--------- package.json | 9 +- src/build/compile.ts | 87 ++++++++++++++++++ src/build/lightningcss-wasm-shim.ts | 30 +++++++ src/commands/index.ts | 88 ++++++++++++++++++ .../web-pages/grab-file-path-module.tsx | 3 - .../web-pages/grab-tsx-string-module.tsx | 4 - src/index.ts | 90 +------------------ 15 files changed, 383 insertions(+), 183 deletions(-) create mode 100644 dist/build/compile.js create mode 100644 dist/build/lightningcss-wasm-shim.js create mode 100644 dist/commands/index.js create mode 100644 src/build/compile.ts create mode 100644 src/build/lightningcss-wasm-shim.ts create mode 100755 src/commands/index.ts mode change 100755 => 100644 src/index.ts diff --git a/.gitignore b/.gitignore index 0105a8c..6b7eed9 100644 --- a/.gitignore +++ b/.gitignore @@ -173,4 +173,6 @@ out # Finder (MacOS) folder config .DS_Store /test -.bunext \ No newline at end of file +.bunext +/bin +/build \ No newline at end of file diff --git a/bun.lock b/bun.lock index 0c1d684..6690c4d 100644 --- a/bun.lock +++ b/bun.lock @@ -4,11 +4,12 @@ "": { "name": "bun-next", "dependencies": { - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.2.2", "bun-plugin-tailwind": "^0.1.2", "chalk": "^5.6.2", "commander": "^14.0.2", "esbuild": "^0.27.4", + "lightningcss-wasm": "^1.32.0", "lodash": "^4.17.23", "micromatch": "^4.0.8", "ora": "^9.0.0", @@ -120,35 +121,35 @@ "@oven/bun-windows-x64-baseline": ["@oven/bun-windows-x64-baseline@1.3.10", "", { "os": "win32", "cpu": "x64" }, "sha512-gh3UAHbUdDUG6fhLc1Csa4IGdtghue6U8oAIXWnUqawp6lwb3gOCRvp25IUnLF5vUHtgfMxuEUYV7YA2WxVutw=="], - "@tailwindcss/node": ["@tailwindcss/node@4.2.1", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.31.1", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.1" } }, "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg=="], + "@tailwindcss/node": ["@tailwindcss/node@4.2.2", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.2" } }, "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA=="], - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.1", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.1", "@tailwindcss/oxide-darwin-arm64": "4.2.1", "@tailwindcss/oxide-darwin-x64": "4.2.1", "@tailwindcss/oxide-freebsd-x64": "4.2.1", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", "@tailwindcss/oxide-linux-x64-musl": "4.2.1", "@tailwindcss/oxide-wasm32-wasi": "4.2.1", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" } }, "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.2", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.2", "@tailwindcss/oxide-darwin-arm64": "4.2.2", "@tailwindcss/oxide-darwin-x64": "4.2.2", "@tailwindcss/oxide-freebsd-x64": "4.2.2", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", "@tailwindcss/oxide-linux-x64-musl": "4.2.2", "@tailwindcss/oxide-wasm32-wasi": "4.2.2", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg=="], - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.1", "", { "os": "android", "cpu": "arm64" }, "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.2", "", { "os": "android", "cpu": "arm64" }, "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg=="], - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg=="], - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw=="], - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ=="], - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1", "", { "os": "linux", "cpu": "arm" }, "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2", "", { "os": "linux", "cpu": "arm" }, "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ=="], - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw=="], - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag=="], - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg=="], - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ=="], - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.1", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q=="], + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.2", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q=="], - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ=="], - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.2", "", { "os": "win32", "cpu": "x64" }, "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA=="], - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.1", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.1", "@tailwindcss/oxide": "4.2.1", "postcss": "^8.5.6", "tailwindcss": "4.2.1" } }, "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw=="], + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.2", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.2", "@tailwindcss/oxide": "4.2.2", "postcss": "^8.5.6", "tailwindcss": "4.2.2" } }, "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ=="], "@types/braces": ["@types/braces@3.0.5", "", {}, "sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w=="], @@ -188,7 +189,7 @@ "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "enhanced-resolve": ["enhanced-resolve@5.20.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ=="], + "enhanced-resolve": ["enhanced-resolve@5.20.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA=="], "esbuild": ["esbuild@0.27.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.4", "@esbuild/android-arm": "0.27.4", "@esbuild/android-arm64": "0.27.4", "@esbuild/android-x64": "0.27.4", "@esbuild/darwin-arm64": "0.27.4", "@esbuild/darwin-x64": "0.27.4", "@esbuild/freebsd-arm64": "0.27.4", "@esbuild/freebsd-x64": "0.27.4", "@esbuild/linux-arm": "0.27.4", "@esbuild/linux-arm64": "0.27.4", "@esbuild/linux-ia32": "0.27.4", "@esbuild/linux-loong64": "0.27.4", "@esbuild/linux-mips64el": "0.27.4", "@esbuild/linux-ppc64": "0.27.4", "@esbuild/linux-riscv64": "0.27.4", "@esbuild/linux-s390x": "0.27.4", "@esbuild/linux-x64": "0.27.4", "@esbuild/netbsd-arm64": "0.27.4", "@esbuild/netbsd-x64": "0.27.4", "@esbuild/openbsd-arm64": "0.27.4", "@esbuild/openbsd-x64": "0.27.4", "@esbuild/openharmony-arm64": "0.27.4", "@esbuild/sunos-x64": "0.27.4", "@esbuild/win32-arm64": "0.27.4", "@esbuild/win32-ia32": "0.27.4", "@esbuild/win32-x64": "0.27.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ=="], @@ -206,29 +207,31 @@ "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "lightningcss": ["lightningcss@1.31.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.31.1", "lightningcss-darwin-arm64": "1.31.1", "lightningcss-darwin-x64": "1.31.1", "lightningcss-freebsd-x64": "1.31.1", "lightningcss-linux-arm-gnueabihf": "1.31.1", "lightningcss-linux-arm64-gnu": "1.31.1", "lightningcss-linux-arm64-musl": "1.31.1", "lightningcss-linux-x64-gnu": "1.31.1", "lightningcss-linux-x64-musl": "1.31.1", "lightningcss-win32-arm64-msvc": "1.31.1", "lightningcss-win32-x64-msvc": "1.31.1" } }, "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ=="], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.31.1", "", { "os": "android", "cpu": "arm64" }, "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.31.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.31.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.31.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.31.1", "", { "os": "linux", "cpu": "arm" }, "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.31.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w=="], + "lightningcss-wasm": ["lightningcss-wasm@1.32.0", "", { "dependencies": { "napi-wasm": "^1.0.1" } }, "sha512-SteAkCtRuSCDYPGHKhLV/dDs5Bk+7I4QUxWxfk4xwsTI1rQk8MQyYtpGcd3NECsUGzK0q2/KqoVS+YHCqKHUTQ=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.31.1", "", { "os": "win32", "cpu": "x64" }, "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="], @@ -270,7 +273,7 @@ "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - "tailwindcss": ["tailwindcss@4.2.1", "", {}, "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw=="], + "tailwindcss": ["tailwindcss@4.2.2", "", {}, "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="], "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], @@ -282,9 +285,9 @@ "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="], @@ -298,6 +301,8 @@ "bun-types/@types/node": ["@types/node@22.13.5", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg=="], + "lightningcss-wasm/napi-wasm": ["napi-wasm@1.1.3", "", { "bundled": true }, "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="], + "@types/ws/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], "bun-types/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], diff --git a/dist/build/compile.js b/dist/build/compile.js new file mode 100644 index 0000000..cb003cc --- /dev/null +++ b/dist/build/compile.js @@ -0,0 +1,74 @@ +import { resolve } from "path"; +import { readFileSync } from "fs"; +const shimPath = resolve(import.meta.dir, "lightningcss-wasm-shim.ts"); +const wasmBytes = readFileSync(resolve(import.meta.dir, "node_modules/lightningcss-wasm/lightningcss_node.wasm")); +const wasmBase64 = wasmBytes.toString("base64"); +const result = await Bun.build({ + entrypoints: ["./src/commands/index.ts"], + outdir: "./build", + target: "bun", + plugins: [ + { + name: "alias-lightningcss-to-wasm", + setup(build) { + build.onResolve({ filter: /^lightningcss$/ }, () => { + return { + path: "lightningcss", + namespace: "lcss-wasm-shim", + }; + }); + build.onResolve({ filter: /^lightningcss\// }, () => { + return { + path: "lightningcss", + namespace: "lcss-wasm-shim", + }; + }); + build.onLoad({ filter: /.*/, namespace: "lcss-wasm-shim" }, () => { + return { + contents: ` + import init, { + transform as wasmTransform, + transformStyleAttribute as wasmTransformStyleAttribute, + bundle as wasmBundle, + bundleAsync as wasmBundleAsync, + Features, + browserslistToTargets, + composeVisitors, + } from "lightningcss-wasm"; + + const wasmBytes = Uint8Array.from(atob("${wasmBase64}"), c => c.charCodeAt(0)); + await init(wasmBytes); + + export { + wasmTransform as transform, + wasmTransformStyleAttribute as transformStyleAttribute, + wasmBundle as bundle, + wasmBundleAsync as bundleAsync, + Features, + browserslistToTargets, + composeVisitors, + }; + `, + loader: "ts", + }; + }); + }, + }, + ], +}); +if (!result.success) { + console.error("Build failed:", result.logs); + process.exit(1); +} +Bun.spawnSync({ + cmd: [ + "bun", + "build", + "./build/index.js", + "--compile", + "--outfile", + "bin/bunext", + ], + stdout: "inherit", + stderr: "inherit", +}); diff --git a/dist/build/lightningcss-wasm-shim.js b/dist/build/lightningcss-wasm-shim.js new file mode 100644 index 0000000..e5047a5 --- /dev/null +++ b/dist/build/lightningcss-wasm-shim.js @@ -0,0 +1,9 @@ +import { readFileSync } from "fs"; +import { resolve, dirname } from "path"; +import { fileURLToPath } from "url"; +import init, { transform as wasmTransform, transformStyleAttribute as wasmTransformStyleAttribute, bundle as wasmBundle, bundleAsync as wasmBundleAsync, Features, browserslistToTargets, composeVisitors, } from "lightningcss-wasm"; +// Resolve the .wasm file at build time — Bun's bundler will inline this +// as a static path that gets embedded into the bundle. +const wasmBytes = readFileSync(require.resolve("lightningcss-wasm/lightningcss_node.wasm")); +await init(wasmBytes.toString()); +export { wasmTransform as transform, wasmTransformStyleAttribute as transformStyleAttribute, wasmBundle as bundle, wasmBundleAsync as bundleAsync, Features, browserslistToTargets, composeVisitors, }; diff --git a/dist/commands/index.js b/dist/commands/index.js new file mode 100644 index 0000000..85f9e94 --- /dev/null +++ b/dist/commands/index.js @@ -0,0 +1,45 @@ +#!/usr/bin/env bun +import { program } from "commander"; +import start from "./start"; +import dev from "./dev"; +import ora, {} from "ora"; +import init from "../functions/init"; +import grabDirNames from "../utils/grab-dir-names"; +import build from "./build"; +global.ORA_SPINNER = ora(); +global.ORA_SPINNER.clear(); +global.HMR_CONTROLLERS = []; +global.IS_FIRST_BUNDLE_READY = false; +global.BUNDLER_REBUILDS = 0; +global.PAGE_FILES = []; +await init(); +const { PAGES_DIR } = grabDirNames(); +const router = new Bun.FileSystemRouter({ + style: "nextjs", + dir: PAGES_DIR, +}); +global.ROUTER = router; +/** + * # Describe Program + */ +program + .name(`bunext`) + .description(`A React Next JS replacement built with bun JS`) + .version(`1.0.0`); +/** + * # Declare Commands + */ +program.addCommand(dev()); +program.addCommand(start()); +program.addCommand(build()); +/** + * # Handle Unavailable Commands + */ +program.on("command:*", () => { + console.error("Invalid command: %s\nSee --help for a list of available commands.", program.args.join(" ")); + process.exit(1); +}); +/** + * # Parse Arguments + */ +program.parse(Bun.argv); diff --git a/dist/functions/server/web-pages/grab-file-path-module.js b/dist/functions/server/web-pages/grab-file-path-module.js index 4a2acb8..87ce051 100644 --- a/dist/functions/server/web-pages/grab-file-path-module.js +++ b/dist/functions/server/web-pages/grab-file-path-module.js @@ -1,8 +1,5 @@ import isDevelopment from "../../../utils/is-development"; import * as esbuild from "esbuild"; -import postcss from "postcss"; -import tailwindcss from "@tailwindcss/postcss"; -import { readFile } from "fs/promises"; import grabDirNames from "../../../utils/grab-dir-names"; import path from "path"; import tailwindEsbuildPlugin from "./tailwind-esbuild-plugin"; diff --git a/dist/functions/server/web-pages/grab-tsx-string-module.js b/dist/functions/server/web-pages/grab-tsx-string-module.js index 3c62216..b1f4c27 100644 --- a/dist/functions/server/web-pages/grab-tsx-string-module.js +++ b/dist/functions/server/web-pages/grab-tsx-string-module.js @@ -1,11 +1,7 @@ import isDevelopment from "../../../utils/is-development"; import * as esbuild from "esbuild"; -import postcss from "postcss"; -import tailwindcss from "@tailwindcss/postcss"; -import { readFile } from "fs/promises"; import grabDirNames from "../../../utils/grab-dir-names"; import path from "path"; -import { execSync } from "child_process"; import tailwindEsbuildPlugin from "./tailwind-esbuild-plugin"; export default async function grabTsxStringModule({ tsx, file_path, }) { const dev = isDevelopment(); diff --git a/dist/index.js b/dist/index.js index 3f80e77..c82740f 100755 --- a/dist/index.js +++ b/dist/index.js @@ -1,45 +1,2 @@ -#!/usr/bin/env bun -import { program } from "commander"; -import start from "./commands/start"; -import dev from "./commands/dev"; -import ora, {} from "ora"; -import init from "./functions/init"; -import grabDirNames from "./utils/grab-dir-names"; -import build from "./commands/build"; -global.ORA_SPINNER = ora(); -global.ORA_SPINNER.clear(); -global.HMR_CONTROLLERS = []; -global.IS_FIRST_BUNDLE_READY = false; -global.BUNDLER_REBUILDS = 0; -global.PAGE_FILES = []; -await init(); -const { PAGES_DIR } = grabDirNames(); -const router = new Bun.FileSystemRouter({ - style: "nextjs", - dir: PAGES_DIR, -}); -global.ROUTER = router; -/** - * # Describe Program - */ -program - .name(`bunext`) - .description(`A React Next JS replacement built with bun JS`) - .version(`1.0.0`); -/** - * # Declare Commands - */ -program.addCommand(dev()); -program.addCommand(start()); -program.addCommand(build()); -/** - * # Handle Unavailable Commands - */ -program.on("command:*", () => { - console.error("Invalid command: %s\nSee --help for a list of available commands.", program.args.join(" ")); - process.exit(1); -}); -/** - * # Parse Arguments - */ -program.parse(Bun.argv); +const bunext = {}; +export default bunext; diff --git a/package.json b/package.json index 64ee7a2..489c1c5 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,9 @@ "module": "index.ts", "type": "module", "version": "1.0.5", + "main": "dist/index.js", "bin": { - "bunext": "dist/index.js" + "bunext": "dist/commands/index.js" }, "files": [ "dist", @@ -13,7 +14,8 @@ ], "scripts": { "dev": "tsc --watch", - "publish": "tsc --noEmit && tsc && git add . && git commit -m 'Update documentaion.' && git push", + "publish": "tsc --noEmit && tsc && git add . && git commit -m 'Update Package.json.' && git push", + "compile": "bun build ./src/commands/index.ts --compile --outfile bin/bunext", "build": "tsc" }, "devDependencies": { @@ -35,11 +37,12 @@ "registry": "https://npm.pkg.github.com" }, "dependencies": { - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.2.2", "bun-plugin-tailwind": "^0.1.2", "chalk": "^5.6.2", "commander": "^14.0.2", "esbuild": "^0.27.4", + "lightningcss-wasm": "^1.32.0", "lodash": "^4.17.23", "micromatch": "^4.0.8", "ora": "^9.0.0", diff --git a/src/build/compile.ts b/src/build/compile.ts new file mode 100644 index 0000000..c72c023 --- /dev/null +++ b/src/build/compile.ts @@ -0,0 +1,87 @@ +import { resolve } from "path"; +import { readFileSync } from "fs"; + +const shimPath = resolve(import.meta.dir, "lightningcss-wasm-shim.ts"); +const wasmBytes = readFileSync( + resolve( + import.meta.dir, + "node_modules/lightningcss-wasm/lightningcss_node.wasm", + ), +); +const wasmBase64 = wasmBytes.toString("base64"); + +const result = await Bun.build({ + entrypoints: ["./src/commands/index.ts"], + outdir: "./build", + target: "bun", + plugins: [ + { + name: "alias-lightningcss-to-wasm", + setup(build) { + build.onResolve({ filter: /^lightningcss$/ }, () => { + return { + path: "lightningcss", + namespace: "lcss-wasm-shim", + }; + }); + build.onResolve({ filter: /^lightningcss\// }, () => { + return { + path: "lightningcss", + namespace: "lcss-wasm-shim", + }; + }); + + build.onLoad( + { filter: /.*/, namespace: "lcss-wasm-shim" }, + () => { + return { + contents: ` + import init, { + transform as wasmTransform, + transformStyleAttribute as wasmTransformStyleAttribute, + bundle as wasmBundle, + bundleAsync as wasmBundleAsync, + Features, + browserslistToTargets, + composeVisitors, + } from "lightningcss-wasm"; + + const wasmBytes = Uint8Array.from(atob("${wasmBase64}"), c => c.charCodeAt(0)); + await init(wasmBytes); + + export { + wasmTransform as transform, + wasmTransformStyleAttribute as transformStyleAttribute, + wasmBundle as bundle, + wasmBundleAsync as bundleAsync, + Features, + browserslistToTargets, + composeVisitors, + }; + `, + loader: "ts", + }; + }, + ); + }, + }, + ], +}); + +if (!result.success) { + console.error("Build failed:", result.logs); + process.exit(1); +} + +Bun.spawnSync({ + cmd: [ + "bun", + "build", + "./build/index.js", + "--compile", + "--outfile", + "bin/bunext", + ], + stdout: "inherit", + stderr: "inherit", +}); diff --git a/src/build/lightningcss-wasm-shim.ts b/src/build/lightningcss-wasm-shim.ts new file mode 100644 index 0000000..601e2d8 --- /dev/null +++ b/src/build/lightningcss-wasm-shim.ts @@ -0,0 +1,30 @@ +import { readFileSync } from "fs"; +import { resolve, dirname } from "path"; +import { fileURLToPath } from "url"; +import init, { + transform as wasmTransform, + transformStyleAttribute as wasmTransformStyleAttribute, + bundle as wasmBundle, + bundleAsync as wasmBundleAsync, + Features, + browserslistToTargets, + composeVisitors, +} from "lightningcss-wasm"; + +// Resolve the .wasm file at build time — Bun's bundler will inline this +// as a static path that gets embedded into the bundle. +const wasmBytes = readFileSync( + require.resolve("lightningcss-wasm/lightningcss_node.wasm"), +); + +await init(wasmBytes.toString()); + +export { + wasmTransform as transform, + wasmTransformStyleAttribute as transformStyleAttribute, + wasmBundle as bundle, + wasmBundleAsync as bundleAsync, + Features, + browserslistToTargets, + composeVisitors, +}; diff --git a/src/commands/index.ts b/src/commands/index.ts new file mode 100755 index 0000000..3e666e3 --- /dev/null +++ b/src/commands/index.ts @@ -0,0 +1,88 @@ +#!/usr/bin/env bun + +import { program } from "commander"; +import start from "./start"; +import dev from "./dev"; +import ora, { type Ora } from "ora"; +import type { + BundlerCTXMap, + BunextConfig, + GlobalHMRControllerObject, + PageFiles, +} from "../types"; +import type { FileSystemRouter, Server } from "bun"; +import init from "../functions/init"; +import grabDirNames from "../utils/grab-dir-names"; +import build from "./build"; +import type { BuildContext } from "esbuild"; +import type { FSWatcher } from "fs"; + +/** + * # Declare Global Variables + */ +declare global { + var ORA_SPINNER: Ora; + var CONFIG: BunextConfig; + var SERVER: Server | undefined; + var RECOMPILING: boolean; + var WATCHER_TIMEOUT: any; + var ROUTER: FileSystemRouter; + var HMR_CONTROLLERS: GlobalHMRControllerObject[]; + var LAST_BUILD_TIME: number; + var BUNDLER_CTX: BuildContext | undefined; + var BUNDLER_CTX_MAP: BundlerCTXMap[] | undefined; + var IS_FIRST_BUNDLE_READY: boolean; + var BUNDLER_REBUILDS: 0; + var PAGES_SRC_WATCHER: FSWatcher | undefined; + var CURRENT_VERSION: string | undefined; + var PAGE_FILES: PageFiles[]; +} + +global.ORA_SPINNER = ora(); +global.ORA_SPINNER.clear(); +global.HMR_CONTROLLERS = []; +global.IS_FIRST_BUNDLE_READY = false; +global.BUNDLER_REBUILDS = 0; +global.PAGE_FILES = []; + +await init(); + +const { PAGES_DIR } = grabDirNames(); + +const router = new Bun.FileSystemRouter({ + style: "nextjs", + dir: PAGES_DIR, +}); + +global.ROUTER = router; + +/** + * # Describe Program + */ +program + .name(`bunext`) + .description(`A React Next JS replacement built with bun JS`) + .version(`1.0.0`); + +/** + * # Declare Commands + */ +program.addCommand(dev()); +program.addCommand(start()); +program.addCommand(build()); + +/** + * # Handle Unavailable Commands + */ +program.on("command:*", () => { + console.error( + "Invalid command: %s\nSee --help for a list of available commands.", + program.args.join(" "), + ); + process.exit(1); +}); + +/** + * # Parse Arguments + */ +program.parse(Bun.argv); diff --git a/src/functions/server/web-pages/grab-file-path-module.tsx b/src/functions/server/web-pages/grab-file-path-module.tsx index 0e2fe23..b6528f1 100644 --- a/src/functions/server/web-pages/grab-file-path-module.tsx +++ b/src/functions/server/web-pages/grab-file-path-module.tsx @@ -1,8 +1,5 @@ import isDevelopment from "../../../utils/is-development"; import * as esbuild from "esbuild"; -import postcss from "postcss"; -import tailwindcss from "@tailwindcss/postcss"; -import { readFile } from "fs/promises"; import grabDirNames from "../../../utils/grab-dir-names"; import path from "path"; import tailwindEsbuildPlugin from "./tailwind-esbuild-plugin"; diff --git a/src/functions/server/web-pages/grab-tsx-string-module.tsx b/src/functions/server/web-pages/grab-tsx-string-module.tsx index f0ec9f1..d161598 100644 --- a/src/functions/server/web-pages/grab-tsx-string-module.tsx +++ b/src/functions/server/web-pages/grab-tsx-string-module.tsx @@ -1,11 +1,7 @@ import isDevelopment from "../../../utils/is-development"; import * as esbuild from "esbuild"; -import postcss from "postcss"; -import tailwindcss from "@tailwindcss/postcss"; -import { readFile } from "fs/promises"; import grabDirNames from "../../../utils/grab-dir-names"; import path from "path"; -import { execSync } from "child_process"; import tailwindEsbuildPlugin from "./tailwind-esbuild-plugin"; type Params = { diff --git a/src/index.ts b/src/index.ts old mode 100755 new mode 100644 index f50456c..c82740f --- a/src/index.ts +++ b/src/index.ts @@ -1,88 +1,2 @@ -#!/usr/bin/env bun - -import { program } from "commander"; -import start from "./commands/start"; -import dev from "./commands/dev"; -import ora, { type Ora } from "ora"; -import type { - BundlerCTXMap, - BunextConfig, - GlobalHMRControllerObject, - PageFiles, -} from "./types"; -import type { FileSystemRouter, Server } from "bun"; -import init from "./functions/init"; -import grabDirNames from "./utils/grab-dir-names"; -import build from "./commands/build"; -import type { BuildContext } from "esbuild"; -import type { FSWatcher } from "fs"; - -/** - * # Declare Global Variables - */ -declare global { - var ORA_SPINNER: Ora; - var CONFIG: BunextConfig; - var SERVER: Server | undefined; - var RECOMPILING: boolean; - var WATCHER_TIMEOUT: any; - var ROUTER: FileSystemRouter; - var HMR_CONTROLLERS: GlobalHMRControllerObject[]; - var LAST_BUILD_TIME: number; - var BUNDLER_CTX: BuildContext | undefined; - var BUNDLER_CTX_MAP: BundlerCTXMap[] | undefined; - var IS_FIRST_BUNDLE_READY: boolean; - var BUNDLER_REBUILDS: 0; - var PAGES_SRC_WATCHER: FSWatcher | undefined; - var CURRENT_VERSION: string | undefined; - var PAGE_FILES: PageFiles[]; -} - -global.ORA_SPINNER = ora(); -global.ORA_SPINNER.clear(); -global.HMR_CONTROLLERS = []; -global.IS_FIRST_BUNDLE_READY = false; -global.BUNDLER_REBUILDS = 0; -global.PAGE_FILES = []; - -await init(); - -const { PAGES_DIR } = grabDirNames(); - -const router = new Bun.FileSystemRouter({ - style: "nextjs", - dir: PAGES_DIR, -}); - -global.ROUTER = router; - -/** - * # Describe Program - */ -program - .name(`bunext`) - .description(`A React Next JS replacement built with bun JS`) - .version(`1.0.0`); - -/** - * # Declare Commands - */ -program.addCommand(dev()); -program.addCommand(start()); -program.addCommand(build()); - -/** - * # Handle Unavailable Commands - */ -program.on("command:*", () => { - console.error( - "Invalid command: %s\nSee --help for a list of available commands.", - program.args.join(" "), - ); - process.exit(1); -}); - -/** - * # Parse Arguments - */ -program.parse(Bun.argv); +const bunext = {}; +export default bunext;