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
47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
# 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 and `async/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*` and `yield` for 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 uses `require/module.exports`
|
|
|
|
## Import Patterns
|
|
|
|
- `import { X } from 'module'` — ESM named import
|
|
- `const X = require('module')` — CommonJS require
|
|
- `import('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 files
|
|
- `package.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 `config` variable, providing encapsulated state without class
|
|
> overhead. The returned object's methods share access to the same `config` reference,
|
|
> forming a module pattern that was standard before ES Modules.
|
|
>
|
|
> When encountering `.mjs` vs `.cjs` extensions, the module system is determined by
|
|
> extension regardless of the `package.json` type field — useful in mixed codebases.
|