Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Jan 3, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

…h examples

- Add real-world analogies (stack of plates)
- Add step-by-step execution walkthroughs with visual diagrams
- Add execution context deep-dive with accordions
- Add stack overflow explanation and prevention tips
- Add debugging guide with Chrome DevTools
- Add quiz section to test understanding
- Enhance all resource links with descriptive summaries
- Link to related concepts (Event Loop, Recursion, Closures)
…n with examples

- Add real-world analogy (atoms vs molecules)
- Add TL;DR summary box for quick readers
- Add deep-dive sections for all 7 primitive types
- Add typeof operator guide with quirks table
- Add immutability explanation with visual diagrams
- Add autoboxing section explaining wrapper objects
- Add null vs undefined comparison with tabs
- Add JavaScript quirks section (typeof null, NaN, 0.1+0.2)
- Add Intl.NumberFormat for currency formatting
- Add quiz section with 5 questions
- Add fun moments and simplified technical jargon
- Curate resources: 5 articles, 1 book, 3 courses, 3 videos
- Add Piccalilli and Anthony Alicea courses
- Add Courses section with Introduction to Asynchronous JavaScript
- Piccalilli lesson covers single-threaded nature and call stack execution
- Add javascript.info article covering Symbol.toPrimitive, toString, valueOf
- Moved from primitive-types page as it better fits type coercion topic
…with examples

- Add real-world 'Shapeshifter' analogy with ASCII diagram
- Add explicit vs implicit coercion comparison with Tabs
- Add deep-dive sections for String, Number, Boolean conversion
- Add conversion rules tables with examples and gotchas
- Add Object to Primitive conversion with ToPrimitive algorithm
- Add == algorithm explanation with step-by-step examples
- Add operators & coercion cheat sheet
- Add JavaScript WAT moments section (8 famous weird parts)
- Add best practices and anti-patterns
- Add quiz section with 6 questions
- Curate resources: 1 MDN reference, 3 articles, 1 book chapter, 3 videos
- Link to YDKJS Chapter 4 specifically for coercion
… guide

- Combine concepts #6 (Scope) and #21 (Closures) into single document
- Add real-world analogy and detailed explanations
- Include code examples, ASCII diagrams, and test yourself section
- Curate resources: 6 articles, 1 course, 4 videos
- Update navigation in docs.json
- Update cross-references in call-stack.mdx and primitive-types.mdx
- Remove old scope.mdx and closures.mdx files
…guage

- Rename title to 'Equality and Type Checking'
- Replace bouncer analogy with universal teacher grading analogy
- Add complete Abstract Equality Algorithm with step-by-step traces
- Cover ==, ===, Object.is(), and typeof in depth
- Include surprising results gallery with coercion examples
- Add decision flowchart and best practices guide
- Simplify language for global accessibility
- Remove culturally-specific idioms and colloquialisms
- Add curated articles, videos, and references
- Include test your knowledge section with 7 questions
…ze and memory management

- Add sticky note vs map analogy with ASCII diagrams
- Add detailed Stack vs Heap memory explanation
- Add copying behavior section with visual diagrams
- Add comparison behavior (by value vs by reference)
- Add functions/parameters section (pass by value of reference)
- Add mutation vs reassignment section with const trap
- Add Object.freeze() section with shallow/deep freeze examples
- Add related methods comparison (freeze vs seal vs preventExtensions)
- Add shallow vs deep copy with structuredClone()
- Fix structuredClone() limitations (remove incorrect Error mention)
- Add WeakMap/memory leaks accordion (Advanced)
- Add common bugs and pitfalls (7 items)
- Add quiz section with 8 questions
- Curate resources: 3 articles, 1 book, 3 videos
- Install vitest 4.0.16 as test runner
- Create vitest.config.js with test configuration
- Add test scripts (test, test:watch, test:coverage)
- Add docs scripts for mintlify (docs, docs:build)
- Improve package.json description and keywords
- Fix repository URLs to use 33-js-concepts

Test coverage for 6 fundamentals concepts (288 tests):
- call-stack (18 tests)
- primitive-types (62 tests)
- value-reference-types (43 tests)
- type-coercion (60 tests)
- equality-operators (68 tests)
- scope-and-closures (37 tests)

Update CONTRIBUTING.md with test guidelines
- Move tests to tests/fundamentals/ for better organization
- Add @vitest/coverage-v8 for test coverage support
- Add 66 new tests across all 6 fundamentals concepts (288 → 354)

New tests added:
- call-stack: setter recursion bug and fix (+2)
- primitive-types: Intl.NumberFormat, floating-point solutions, array holes, trim checks (+11)
- value-reference-types: structuredClone with Map/Set, WeakMap, shared default pitfall (+11)
- type-coercion: modulo, comparison operators, double negation, Date coercion (+14)
- equality-operators: -0 edge cases, NaN Map key, isSafeInteger, string sorting (+19)
- scope-and-closures: TDZ ReferenceError, hoisting comparison (+9)

Update CLAUDE.md with new test counts and improved documentation
- Move from 'concrete to abstract' learning path
- Start with Primitive Types (most tangible concept)
- End with Call Stack (capstone tying everything together)

New order:
1. Primitive Types
2. Value Types and Reference Types
3. Type Coercion
4. Equality Operators
5. Scope & Closures
6. Call Stack

Update Related Concepts links to reflect new order:
- call-stack.mdx: add link to Primitive Types
- type-coercion.mdx: add link to Value vs Reference Types
- scope-and-closures.mdx: add link to Call Stack
- Complete rewrite with 'Messy Desk' analogy for code organization
- Cover IIFEs, Namespaces, and ES6 Modules in three structured parts
- Include practical examples: barrel files, dynamic imports, real project structure
- Add 6 quiz questions and curated resources (6 articles, 4 videos)
- Use simple, accessible language for non-native English speakers
- Remove Bitwise Operators concept entirely (too niche for core concepts)
- Create new 'Web Platform' group with DOM concept
- Move JavaScript Engines to Advanced Topics
- Remove 'Under the Hood' group entirely
- Update concept numbering (32 → 31 concepts)

New structure:
- Web Platform (7): DOM and Layout Trees
- Advanced Topics (24-31): JavaScript Engines added as first item
- Add tests for IIFE syntax variations (classic, arrow, named, with params)
- Add tests for scope isolation and private variable patterns
- Add tests for Module Pattern with encapsulation
- Add tests for namespace patterns (simple, nested, combined with IIFE)
- Add tests for ES6 module patterns (named exports, default exports, re-exports)
- Add tests for evolution from globals to IIFEs to modules
- Add edge cases: return values, nested IIFEs, this context, singleton pattern
- Add closure over loop variables demonstration
- Add restaurant kitchen analogy with ASCII diagrams
- Add detailed JavaScript runtime environment diagram
- Add step-by-step event loop walkthrough with examples
- Add comprehensive Tasks vs Microtasks section
- Add setTimeout section (zero delay myth, 4ms rule, arguments)
- Add setInterval section (drift problem, nested setTimeout solution)
- Add requestAnimationFrame section (rAF timing, animation example)
- Add 6 classic interview questions with detailed explanations
- Add 5 common misconceptions debunked
- Add blocking the event loop solutions (Web Workers, chunking)
- Add rendering and the event loop (60fps, layout thrashing)
- Add 5 common bugs and pitfalls (clearInterval, this binding, closures)
- Add Loupe visualization tool reference
- Add 6 knowledge test questions
- Merge timers.mdx content and delete separate file
- Update docs.json navigation
- Add 56 comprehensive tests covering all code examples
- Curate resources: 6 articles, 1 tool, 3 videos
- Move Event Loop to first position in Functions & Execution
- Move Web Platform group to come after Functions & Execution
- Update concept count to 30 (reflecting Timers merge into Event Loop)
- Renumber all concepts accordingly

New order:
- Functions & Execution (7-9): Event Loop, Expression vs Statement, IIFE/Modules
- Web Platform (10): DOM and Layout Trees
- Add 'Expression vs Statement' section explaining why IIFEs need parentheses
- Include ASCII diagram comparing expressions and statements
- Add function declaration vs expression comparison table
- Merge all resources (articles, videos) from expression-statement.mdx
- Update Related Concepts to link to Call Stack instead
- Add Expression Statement MDN reference
- Remove expression-statement.mdx (content now in iife-modules)
- Update docs.json navigation
- Fix dynamic import example to wrap await in async function
- Add Note explaining CommonJS (require/module.exports) for Node.js context
- Clarify default import example to avoid confusion about multiple imports
- Add Tip explaining why default exports accept any name
- Complete rewrite with 'Video Game Character' analogy
- Cover factory functions with closures for true privacy
- Explain constructor functions and the 4 steps of 'new' keyword
- Deep dive into ES6 classes as 'syntactic sugar' over prototypes
- Cover private fields (#) vs closure-based privacy
- Static methods, getters/setters, and class fields
- Inheritance with extends/super vs factory composition
- Decision guide for choosing between factories and classes
- Add 6 quiz questions with detailed answers
- Include 43 tests covering all patterns and edge cases
…5 tests

- Rewrite DOM guide from 56 to 1,596 lines with beginner-friendly content
- Add Family Tree analogy with ASCII diagram for DOM relationships
- Cover: node types, selection, traversal, manipulation, attributes, styling
- Add Critical Rendering Path section (DOM → CSSOM → Render Tree → Layout → Paint)
- Include performance best practices (caching, batching, layout thrashing)
- Add 8 quiz questions with detailed answers
- Create 85 comprehensive tests using jsdom environment
- Add jsdom as dev dependency for DOM testing
- Remove low-quality resources (Guru99, Steve Griffith video)
- Fix code bugs: invalid HTML tag, duplicate const, reserved word 'static'
- Move DOM definition to the very beginning of the page
- Add Info box with learning objectives after intro code
- Reorganize Family Tree as a dedicated section after intro
- Create 'What the DOM is NOT' as a proper section header
- Improve table format for DOM relationship analogies
- Add opening paragraph explaining why object creation matters
- Define what Factory Functions are in simple terms
- Define what Classes are and reference familiar OOP languages
- Explain both achieve same goal with different approaches
- Improve transition into video game analogy
- Add HTTP & Fetch concept explaining the protocol and Fetch API
- Cover HTTP methods, status codes, request/response cycle
- Include error handling patterns (network vs HTTP errors)
- Add AbortController section for request cancellation
- Add URL/URLSearchParams section for building URLs
- Include restaurant analogy and ASCII diagrams
- Add 72 tests covering all code examples
- Update CLAUDE.md with new concept and test counts
…tions

- Rewrite POST section with MDN link and explanation of what POST is
- Rewrite error handling intro to clearly explain the #1 fetch mistake
- Add prose descriptions to 'The Mistake' and 'The Fix' subsections
- Add async/await concept link for cross-referencing
- Rename headers to be more engaging (mix of casual/descriptive)
- Enrich section intros with MDN links (Response, Headers, JSON, POST)
- Mention GET is the default method in Basic GET section
- Move project context to .claude/CLAUDE.md
- Add .claude/skills/ to .gitignore for local-only skills
- Fix phrasing: 'callbacks are passed to higher-order functions' (not 'are higher-order functions in action')
- Replace Node.js-specific setImmediate with cross-platform setTimeout(..., 0)
- Add battleCry() to Warrior.prototype in ASCII diagram for accuracy
- Clarify Gorilla-Banana quote attribution to Joe Armstrong (Coders at Work)
- Improve Traversy Media video description to be more specific
- Replace broken patterns.dev link with MDN learning path
- Add Object.hasOwn() as modern alternative to hasOwnProperty()
- Clarify new operator step 2 edge case (non-object prototype)
- Add edge case note for constructors returning functions
- Improve prototype pollution example with realistic attack vector
- Add MDN link to prototype pollution security docs
- Fix simulateNew implementation to properly handle non-object prototypes
- Update return value check from instanceof to typeof for accuracy
- Fix broken links: /concepts/new-constructor -> /concepts/object-creation-prototypes
- Fix broken links: /concepts/prototype -> /concepts/inheritance-polymorphism
- Clarify arrow function arguments behavior with enclosing scope example
- Add test case for constructor with non-object prototype edge case
…pt page

- Fix broken Medium article URL (redirected to talkingtech.io)
- Correct private fields introduction year from ES2022 to ES2020
- Fix misleading statement about this binding in factory functions
- Clarify that primitive returns are ignored by new keyword
- Update Aten article description to match actual content
- Add tip about arrow function class fields for auto-binding this
- Add tests for arrow function class field behavior
…cept page

- Fix Error objects cloning claim (moved from 'Cannot Clone' to 'Can Clone')
- Update Safari Shared Workers support (now supported in Safari 16+)
- Change 'neutered' to 'detached' terminology for ArrayBuffer
- Expand transferable objects table (add AudioData, VideoFrame, RTCDataChannel)
- Add structuredClone() mention with code example
- Clarify requestAnimationFrame is dedicated workers only
- Simplify inline worker URL revocation explanation
- Fix pseudocode to match HTML spec: task -> microtasks -> render (was render before task)
- Add clarification that 4ms rule output varies by browser/system
- Replace misleading 'separate threads' claims with accurate description
- Fix 'continuously monitors' to 'coordinates execution when stack empty'
- Add setTimeout third parameter as alternative closure fix
- Clarify requestIdleCallback timing (runs if idle time remains)
- Update Loupe tool links from HTTP to HTTPS
…es page

- Replace 3 broken article links (Google Developers, SitePoint) with working alternatives
- Replace unavailable YouTube video with Programming with Mosh tutorial
- Clarify var global scope claim applies to script mode, not modules
- Soften default exports best practice to 'common convention'
- Add note that error messages vary by browser
- Update MDN links for execution contexts to point to correct documentation
- Clarify distinction between execution context and stack frame terminology
- Standardize terminology from 'Callback Queue' to 'Task Queue'
- Add note about Firefox's non-standard InternalError for stack overflow
- Update MDN closures URL to canonical path (/Guide/Closures)
- Fix closure definition wording to match MDN exactly
- Improve memory leak example to actually reference the variable
- Add note about modern engine optimizations for closures
- Add note about module scope for completeness
- Complete rewrite covering arrow functions, destructuring, spread/rest,
  template literals, optional chaining, nullish coalescing, Map/Set/Symbol
- Add 57 tests covering all major ES6+ features
- Include fact-checked code examples with correct edge case behavior
- Add curated resources: 6 MDN refs, 6 articles, 4 videos
- Complete rewrite of ES Modules documentation covering:
  - Why ES Modules matter (static analysis, tree-shaking)
  - ESM vs CommonJS comparison with detailed table
  - Live bindings explanation with ASCII diagrams
  - Export syntax (named, default, re-exports, barrel files)
  - Import syntax (named, default, namespace, side-effect)
  - Module characteristics (strict mode, scope, singleton)
  - Dynamic imports with real-world use cases
  - Top-level await patterns
  - Browser vs Node.js differences
  - Import maps for bare specifiers
  - Common mistakes section

- Added 57 comprehensive tests covering:
  - Live bindings behavior vs CommonJS value copies
  - Read-only import bindings
  - Circular dependencies and TDZ (ReferenceError)
  - Module singleton behavior
  - Dynamic import patterns
  - Export/import syntax variations
  - Module characteristics (strict mode, this, scope)
  - Common mistakes (named vs default, extensions)
- Cover built-in structures: Array, Object, Map, Set, WeakMap, WeakSet
- Implement Stack, Queue, Linked List, BST, and Graph with BFS/DFS
- Include ASCII diagrams for visual explanations
- Add time complexity tables and trade-off comparisons
- Cover common interview questions (Two Sum, Valid Parentheses, etc.)
- Add 59 tests covering all data structures and edge cases
- Fix indexOf comment accuracy after unshift operation
- Clarify Object property order behavior in ES2015+
- Complete rewrite of algorithms-big-o.mdx (~2500 words)
- Cover Big O notation fundamentals with accurate technical definitions
- Include searching algorithms (linear, binary search)
- Include sorting algorithms (bubble sort with early termination, merge sort)
- Add common interview patterns (two pointers, sliding window, frequency counter)
- Add JavaScript built-in methods complexity reference tables
- Include 70 comprehensive tests for all algorithm implementations
- Add Key Takeaways and Test Your Knowledge sections
- Fact-checked all complexity claims against authoritative sources
- Cover 6 practical JS patterns: Module, Singleton, Factory, Observer, Proxy, Decorator
- Add Note clarifying Module is JS-specific, not a GoF pattern
- Include ASCII diagrams, real-world analogies, and code examples
- Add common mistakes section and pattern selection guide
- Include 23 passing tests covering all patterns
- Add Key Takeaways, Test Your Knowledge Q&A, and curated resources
- Add complete guide covering clean code principles for JavaScript
- Include sections on meaningful naming, small functions, DRY, side effects
- Add early returns, guard clauses, and comments best practices
- Add SOLID principles with code examples for all 5 principles
- Include newspaper analogy with ASCII diagram
- Add Key Takeaways, Test Your Knowledge Q&A section
- Add curated articles and videos (Ryan McDermott, Fireship, Uncle Bob)
- Reference Robert C. Martin's Clean Code book as foundational text
- Link to related concepts: pure-functions, modern-js-syntax, error-handling
- Create new getting-started/ folder with 4 pages:
  - about.mdx: Project origin, original 33 concepts, what we changed
  - how-to-learn.mdx: Page structure, resource types, learning tips
  - prerequisites.mdx: Tools setup (browser, code editor, Node.js)
  - learning-paths.mdx: Beginner, intermediate, interview prep paths

- Refactor index.mdx as Welcome page:
  - Add SEO-optimized title and description
  - Add intro paragraph with keyword placement
  - Add Web Platform category card (7 categories total)
  - Update links to new getting-started pages

- Delete old introduction.mdx (content moved to new pages)

- Update docs.json navigation for new structure

- SEO improvements across all pages:
  - Titles under 60 characters with hooks
  - Descriptions 140-160 characters with keywords
  - Question-format H2s for featured snippets
- Reduce README from 1293 to 170 lines (~87% smaller)
- Organize concepts into 7 categories with descriptions
- Link all concepts to 33jsconcepts.com documentation site
- Remove inline articles/videos (now available on docs site)
- Create TRANSLATIONS.md with all 42 community translations
- Keep original header image and GitHub recognition badge
- Run tests on push and pull requests to master/main
- Test against Node.js 18.x, 20.x, and 22.x
- Generate coverage report on Node 20.x
- Uses npm ci for faster, reliable installs
Vitest 4.x requires Node.js 20+. Node 18.x fails with ERR_REQUIRE_ESM
due to Vite 6's pure ESM modules. Node 18.x reaches EOL April 2025.
- Remove old markdown link checker workflow (action.yml)
- Simplify tests.yml to use only latest LTS Node.js
- Remove coverage step for simpler workflow
feat: Complete Documentation Site with 33 JavaScript Concepts
@pull pull bot locked and limited conversation to collaborators Jan 3, 2026
@pull pull bot added the ⤵️ pull label Jan 3, 2026
@pull pull bot merged commit 5cda73b into Uncodedtech:master Jan 3, 2026
1 check passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant