mirror of
https://github.com/Egonex-AI/Understand-Anything.git
synced 2026-06-22 10:58:03 +08:00
Replace the TypeScript/JavaScript-biased analysis pipeline with a truly language-agnostic system. The core architecture was already language-neutral (graph schema, dashboard, search) — the bias lived in agent prompts, tree-sitter plugin, and language-lesson system. Core changes: - LanguageConfig + FrameworkConfig types with Zod validation - LanguageRegistry (12 languages) and FrameworkRegistry (10 frameworks) - Config-driven TreeSitterPlugin replacing hardcoded TS/JS grammars - PluginRegistry now delegates to LanguageRegistry for extension mapping - Language-lesson system uses config for display names and concepts Prompt system: - SKILL.md generalized: dynamic injection of language snippets and framework addendums instead of hardcoded if/else conditionals - 12 language prompt snippets (languages/*.md) with concepts, patterns, frameworks per language - 10 framework addendums (frameworks/*.md) with canonical file roles, edge patterns, architectural layers — Django/FastAPI/Flask preserved and split, plus React/Next.js/Express/Vue/Spring/Rails/Gin added - Extended entry points, directory patterns, and test patterns across all 12 language ecosystems in base prompts
2.3 KiB
2.3 KiB
JavaScript Language Prompt Snippet
Key Concepts
- Closures: Functions that capture variables from their enclosing lexical scope
- Prototypes: Prototype chain-based inheritance underlying all JavaScript objects
- Promises: Asynchronous value containers enabling
.then()chaining andasync/await - Event Loop: Single-threaded concurrency model with microtask and macrotask queues
- Destructuring: Extract values from objects and arrays into distinct variables
- Spread/Rest Operators:
...for expanding iterables or collecting remaining arguments - Proxies: Meta-programming construct to intercept and customize object operations
- Generators: Functions using
function*andyieldfor lazy iteration - Symbol: Unique, immutable primitive used for non-string property keys
- WeakMap/WeakSet: Collections with weakly-held keys allowing garbage collection
- Modules (ESM vs CJS): ES Modules use
import/export; CommonJS usesrequire/module.exports
Import Patterns
import { X } from 'module'— ESM named importconst X = require('module')— CommonJS requireimport('module')— dynamic import returning a Promise (code splitting)export default X/export { X }— ESM export forms
File Patterns
index.js— barrel file or directory entry point.mjs— explicitly ES Module files.cjs— explicitly CommonJS filespackage.json"type"field — sets default module system ("module"or"commonjs")
Common Frameworks
- React — Declarative UI with virtual DOM and component model
- Vue — Progressive framework with reactivity system and single-file components
- Express — Minimal and flexible Node.js web application framework
- Next.js — React framework for production with hybrid rendering
- Svelte — Compile-time framework that shifts work from runtime to build step
Example Language Notes
Closure captures outer
configvariable, providing encapsulated state without class overhead. The returned object's methods share access to the sameconfigreference, forming a module pattern that was standard before ES Modules.When encountering
.mjsvs.cjsextensions, the module system is determined by extension regardless of thepackage.jsontype field — useful in mixed codebases.