Webpack Explorer banner

Webpack Explorer

10 devlogs
91h 43m 55s

This project consists of the tooling I am building for a slack client modding ecosystem however due to time constraints right now it is only a tool for reading webpack bundles.

This project uses AI

AI used for reference, almost all code is organically grown

Demo Repository

Loading README...

felix

Shipped this project!

Its finally shipped! This was a huge project and I learned a lot throughout it but I’m happy how it turned out.

felix

I fixed search and also added a new in file search thing.
I also added an AI explanation tab for explaining code with AI.
Then I wrote up a readme and packaged the extension to get this ready for shipping.

Lets pray this works
Now if you’ll excuse me I’m tired. gn

Attachment
0
felix

Howdy, I’ve been doing some backend work to get this thing presentable and less buggy. Also now references are directly built from the AST with some fancy scope-stack technology™ and variable identification magic.
With all these changes from the last few devlogs a file that previously could have taken half a second to load now only takes ~30ms (with about half that time being spent by @babel/traverse but don’t worry I won’t be rewriting allat).

I’ve also been busy with actually integrating this thing into an extension (pictured below). It can inject some code into any webpack website when it is opened to extract all code but also has some mock data it falls back to only in dev to make debugging the thing actually possible. I also added a reload button to refetch the bundle in case anything got lazy loaded and I think that’s about it.
Well I’ll better get back to it because this flavortown thing wont last long anymore! Bye bye

Attachment
0
felix

hii I’ve added this search (still very much subject to change) and finally completely got rid of shiki, now we are using a custom fork of @babel/generator which means the abstract syntax tree directly gets transformed into highlighted code. No slow regex scanning step. This also allows AST-aware (meaning it knows e̸̩͊v̶̙̀ḙ̵̯͌r̶̩̥͛y̸̥͌͂t̷̬͐͜h̸̹͝ͅi̷̬͋n̷͖̖̿g̸̱̝͝) highlighting which is exiting and means I can also get rid of the reference scanning step later for ultimate performance. Do note that this isn’t completely finished which is why there is a lot of yellow in the screenshot below and no colorized brackets :(. I also prepared packaging to an extension and made the website display in a devtools tab but it is not integrated with the website you are inspecting yet.
Cya next time!

Attachment
1

Comments

bontaromiii
bontaromiii 11 days ago

Hi felix

felix

Hi there, I have been working a while (wow last devlog was 25d ago) to add these references you see below, search which I’m still refining a bit, fancy animated bookmarks, many many technical changes to make these new thingies possible and some miscellaneous improvements as usual.

Attachment
0
felix

So this devlog is pretty boring, I rewrote a lot to get mostly rid of shiki which improves performance and allows me to make this lazy loaded later on and added this mappings panel. I also made it possible to rename variables or a module which automatically updates the code and sidebar, improved the transformer and next devlog you should see some bookmarks too. K byeeeeee

Attachment
0
felix

Heyo, I have been doing some tokenizing, theming, navigation, AST aware highlighting and some other stuff :D, currently I’m trying to get rid of shiki and move to raw textmate so I can stream highlighting without blocking the UI on huge files. Also we have ctrl+clicking now to go to definitions and I’ll add the reverse for usages soon. I think thats it for now byeeee

Attachment
0
felix

Hi again hyper-dino-wave I’ve been busy
While it might seem like this project is kinda all over the place and I’m working on something else every devlog. Well, yes, that is the case. Sorry my neurodivergent ass can’t focus, but trust me everything will come together one way or another.
Anyways, check out this thingy I’m working on yay. It is still pretty WIP but it can get slacks source code, transform it (even better than before), highlight it and some more things. I’m gonna work now on global search, navigating references, modifying mappings inline and then use it for visual patching. Not only will this make modding much easier for me it’ll also make it accessible for you guys (wink wink). Alright see you next devlog :)

If you read this you must join #felixs-den

Attachment
0
felix

I made a dataminer but it seems the files are too big to track with github so its local only for now. Worked a lot more on the plugin system (we now have module search and more), plugins (compact channel list and private channel ids), the plugin CLI and module transformer and a devtools extension for properly viewing and visually patching the webpack modules eyes_shaking

Attatched: random private channels I found rendered as their id by a plugin

Attachment
1

Comments

felix
felix 11 days ago

Apart from the plugin itself basically all this code is also used in the extension

felix

Hi again, since my last devlog I have been hard at work on some more thingies, mainly a CLI tool to create plugins and make slacks source code readable and a module replacement based API. Next I’ll try and readd wpreq.c and maybe make a dataminer!

Attachment
1

Comments

felix
felix 11 days ago

Don’t worry, a lot of this code also made it into the extension. It isn’t as separate as it looks

felix

I already wasted a shit ton of hours due to hackatime issues pensive-wobble but it finally works so I can finally add it to FT.
I already worked on a CDP based system to inject code into the console over websockets so you can mod the electron client (actually 2 versions, one that’s only an injector and another that also finds and launches the app, you can find them in slack). I might also create an ASAR based injector or full app reimplementation in tauri but that’s for another time.
Then I also spent a lot of time on webpack module extraction which can be used for datamining and more convenient source viewing but its unused for now.
Next I’m also working on the loader itself. I’m not sure yet if I want to go for a taut style react component wrapper architecture or vencord style module patching with regexes however I’m leaning towards the latter or a hybrid model since its much more flexible. I also still gotta figure out redux and all that stuff but thats a later felix issue. Current felix needs to figure out why everything is broken criblub

Attachment
0