Because by analyzing and building your own implementation of the major libraries and frameworks, you gain a lot of knowledge and develop your skills as a developer.
This project is my small sandbox where I squeeze every bit of coding inspiration when I am not developing for a company. It's my way of having code freedom and explore interesting topics, without the need to rush or develop based on deadlines.
By the end of it, it should have concepts, snippets and ideas gathered across 9 years of software engineer development mainly focused at web development. Take this repository as a constant WIP.
This repository contains small utilities aimed for personal growth, do NOT use them in production unless you know what you are doing.
Probably you'll find a lot of room for improvements, PRs are welcome, but I am aiming at having small bitesize tools with simple responsibilities.
-
Jasmine simplified expect function.
Check my implementation in the tests utils file.
-
Reduxy/Vuexy like state management store. It supports publish/subscribe pattern in a simple way.
Check my implementation in the store file and of course its tests using the custom
expect,describeanditfunctions. Check Redux official docs and Vuex official docs. -
Debounce function for rate limiting function calls.
Check my implementation in the debounce file and its tests.
- Custom Promises Implementation
- Functional Programming Utils
- String Manipulation
- Throttle Function
- Enhanced Testing Utils
- Simple Event Emitter
- Observer Pattern Implementation
- Linked List
- Stack & Queue
- Binary Tree
- Binary Search Tree
- Hash Table
- Trie
- Graph
- Sorting Algorithms
- Search Algorithms
- Graph Algorithms
- Dynamic Programming
- Recursion Utilities
- Custom Iterator/Generator
- Proxy Handler
- Custom Error Classes
- Decorator Pattern
- Reflection Utils
- Async Queue
- Retry Logic
- Timeout Wrapper
- Debounced Promise
- Weak References
- Object Pool
- Lazy Loading
- Garbage Collection Simulation
- Immutability Helpers
- Lens Implementation
- Monads
- Transducers
- Lazy Evaluation
- String Interpolation
- Markdown Parser
- CSV Parser
- URL Parser
- Regular Expression Builder
- Date Formatter
- Duration Calculator
- Timezone Handler
- Calendar Utils
- Relative Time
- Big Integer
- Decimal Operations
- Statistics
- Random Generators
- Unit Converter
- Virtual DOM
- Custom Elements
- Event Delegation
- CSS-in-JS
- Animation Framework
- Fetch Wrapper
- Request Cache
- WebSocket Manager
- Server-Sent Events
- GraphQL Client
- Local Storage Wrapper
- IndexedDB Abstraction
- Cache Manager
- Session Manager
- Cookie Parser
- Factory Pattern
- Builder Pattern
- Singleton Pattern
- Prototype Pattern
- Abstract Factory
- Adapter Pattern
- Decorator Pattern
- Facade Pattern
- Proxy Pattern
- Composite Pattern
- Command Pattern
- Strategy Pattern
- State Machine
- Mediator Pattern
- Chain of Responsibility
- Observable
- Subject
- Operators
- Schedulers
- Backpressure
- Worker Pool
- Mutex/Semaphore
- Async Scheduler
- Rate Limiter
- Batch Processor
- Schema Validator
- Type Guards
- Sanitizer
- Parser Combinator
- Form Validator
- Test Runner
- Mock Server
- Spy Functions
- Snapshot Testing
- Performance Testing
- Logger
- Debugger
- Profiler
- Configuration Manager
- CLI Framework
- Game Loop
- Collision Detection
- Pathfinding
- Finite State Machine
- Entity Component System