iruka teaches data structures with heavily commented TypeScript
teaching data structures and algorithms to web engineers
At a glance
- What is it?
- The iruka repository is a TypeScript collection of classical data structures and algorithms written to be read, with a video tutorial attached to most entries, and the naming history explains why a package called dsa-ts is what you install.
- Who is it for?
- iruka suits a web engineer who knows the abstractions but has not seen the implementations, since the code is written to be read and each entry links to a walkthrough video. It is the wrong tool for a production system, because the package carries no runtime dependencies but also no maintenance commitment, with the last push on 2026-04-08, and the checklist still has bucket sort and most of graph theory unticked.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The educational goal explains the comment density
The repository states that its primary goal is educational, and that hence all implementations include a prolific number of comments which guide the reader. That single decision explains most of what distinguishes this from a general purpose data structure library, including the fact that the code is not trying to be fast. The name gives the rest of the story. The project is named iruka as an ode to Iruka sensei from Naruto, who became a teacher to pass on the Will of Fire and teach the future ninja of the leaf village, and the parallel is drawn explicitly, with the project here to teach the future software engineers of earth. The homepage is a YouTube playlist, and the README tells you to click the video emoji for tutorials. So the primary artefact is not the code, it is the pairing of a readable implementation with a recorded walkthrough, and the library is the download that comes with it.
The package you install is not the repository you are reading
There is a naming wrinkle worth sorting out before anyone types an install command. The repository is 4thd1m/iruka, but the npm package is dsa-ts, and the README gives the install as a single command.
yarn add dsa-tsThe badges and links in the README point further afield too, at a jeffzh4ng/dsa-ts repository and a jeffzh4ng/algorithms-and-data-structures repository, and the source links in the data structure list point into those paths rather than into the repository holding the README. The author is credited as Jeff Zhang, so this is the same work under a different name and a fork that has been renamed. The practical consequence for a reader is that the tutorial videos, the npm package and the source tree you are reading may live in three different places, and the links in the README are the reliable way to find each. The package version in package.json is 0.0.0-development, which is the placeholder for a version set by the release tooling, and the release script is semantic-release.
Sequences and priority queues, several implementations each
The data structure list is grouped by family and each family offers more than one implementation, which is the teaching device. Under sequences there is a linked list, a stack, a queue, a double-ended queue and a circular buffer. Under priority queues there is a binary heap, a D-Heap, an indexed binary heap, and under mergeable heaps a binomial heap, a lazy binomial heap and a Fibonacci heap. The mergeable heap family is where the interesting comparisons live, because the three implementations trade the same operations against each other in different ways, and having them side by side in one repository is worth more than any single one of them. The search tree family offers a binary search tree, an AVL tree, a red-black tree and a B-Tree, again as variants of one idea. Every one of these has a video link except the ones the README lists without one, and the ones without a video are the ones to read the source for.
Hash tables are split by collision strategy
The hash table section is the clearest example of the repository's method, because it separates one concept into four files. There is a base open addressing implementation, and then three collision strategies built on it: linear probing, quadratic probing and double hashing. Alongside those sits the separate chaining implementation, which is a different approach rather than a different strategy, and the README links a tutorial for the separate chaining version only. So the repository is not a list of names, it is a taxonomy, and the file tree under src/data-structures/hash-tables/ is a diagram of how a hash table can be built. The same treatment appears in the sorting section, which has merge sort, quick sort, heap sort, two topological sorts, one based on DFS and one based on Kahn's algorithm, and counting sort, with bucket sort listed as an empty checkbox.
No runtime dependencies, and the test tooling is from 2020
The dependencies object in package.json is empty, so nothing in the library pulls anything into your bundle, and the build script is simply tsc with a prepublish step that also runs tsc. The test story is thorough on paper, with the README promising that test coverage will be kept at 100 percent, and the test script running jest with a single worker and a codecov report target. The toolchain versions date the project. TypeScript is 3.9.6, jest is 26.1.0, eslint is 7.4.0, prettier is 2.0.5 and ts-jest is 26.1.1, which is a 2020 generation of tooling. The repository also has husky hooks that run lint-staged and the test suite on both pre-commit and pre-push, lint-staged running prettier over every TypeScript file, and a renovate configuration for dependency updates. So the discipline is real, it is just aimed at an older ecosystem than a new project would pick.
Where this collection stops
The limitations are visible in the checklist rather than hidden. Bucket sort is unchecked. The graph theory section is largely unchecked at the top level, with only shortest paths filled in, covering Dijkstra's single source shortest path, Bellman-Ford single source shortest path and Floyd-Warshall for all pairs, and the truncated list makes it clear the rest of the graph material is not there. So a reader looking for a complete algorithms reference will find gaps, and the project does not pretend otherwise, which is more useful than a list that implies completeness it does not have. The second limitation is the one that follows from the educational goal. A teaching implementation is chosen for clarity, and clarity costs memory and speed, so lifting a data structure from here into a hot path is a decision you should make with the source open in another window, reading the comments to see what was traded away. The third is the fork situation. The npm package, the videos and the source live under different names, and the last push was on 2026-04-08 with no GitHub releases, so there is no version history to consult when the package and the repository drift apart.
Editorial conclusion
iruka suits a web engineer who knows the abstractions but has not seen the implementations, since the code is written to be read and each entry links to a walkthrough video. It is the wrong tool for a production system, because the package carries no runtime dependencies but also no maintenance commitment, with the last push on 2026-04-08, and the checklist still has bucket sort and most of graph theory unticked. Before copying anything from it, read the implementation rather than the interface, since the pedagogical comments are the point and the API shape is a by-product, and check the TypeScript version, because the toolchain is pinned to 3.9.6. The licence is MIT and the package publishes under the name dsa-ts.
Frequently asked questions
How do I install the iruka data structures package?
The README gives the install as yarn add dsa-ts. The npm package is named dsa-ts even though the repository is 4thd1m/iruka, and the package.json shows no runtime dependencies, with the build script being tsc.
What data structures does iruka implement?
Sequences including a linked list, stack, queue, double-ended queue and circular buffer; priority queues including a binary heap, D-Heap, indexed binary heap, binomial heap, lazy binomial heap and Fibonacci heap; search trees including binary search tree, AVL, red-black and B-Tree; and hash tables with separate chaining plus open addressing with linear probing, quadratic probing and double hashing.
Does iruka include video tutorials?
Yes. The README says to click the video emoji for tutorials, and most entries in the data structure list link to a video in the project playlist, whose URL is the repository homepage. The package also documents a 100 percent test coverage target and reports coverage to codecov.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/4thd1m-iruka)Was this useful?