| 1 | # JavaScript — operational playbook v1 |
| 2 | |
| 3 | **Purpose:** перевод **fundamentals** (модель языка ECMAScript в KB) в **действия, контракты и проверки** в репозитории и CI. |
| 4 | **Мир:** `software.javascript`. |
| 5 | **Связь:** карта fundamentals + operational kb — [`index-knowledge-javascript-cluster-v1.md`](index-knowledge-javascript-cluster-v1.md). |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## 1. Порядок слоёв: fundamentals → operational |
| 10 | |
| 11 | 1. **`status-javascript-v1.md`** — снимок домена и триггеры. |
| 12 | 2. **Этот playbook** — когда и что проверять в работе (прочитать до углубления в kb). |
| 13 | 3. **Fundamentals (теория / спецификация):** один или цепочка карточек из §2 — **не грузить все сразу** без full pass. |
| 14 | 4. **Operational (экосистема):** [`kb-javascript-operational-ecosystem-v1.md`](kb-javascript-operational-ecosystem-v1.md) — после fundamentals или сразу при чисто инфраструктурном вопросе (lockfile, audit, CSP). |
| 15 | |
| 16 | --- |
| 17 | |
| 18 | ## 2. Слой fundamentals (карточки) |
| 19 | |
| 20 | Читать **последовательно** только при явном «полном фундаментальном проходе»; иначе — **одна** карточка по таблице в index. |
| 21 | |
| 22 | | Шаг | Файл | Кратко | |
| 23 | |-----|------|--------| |
| 24 | | A1 | `kb-javascript-ecmascript-and-modules-v1.md` | редакции ECMA-262, ESM/CJS, транспиляция vs полифилл, **движки и хосты** | |
| 25 | | A2 | `kb-javascript-types-coercion-and-scope-v1.md` | типы времени выполнения, принуждения, TDZ, замыкания, `this` | |
| 26 | | A3 | `kb-javascript-objects-prototypes-and-classes-v1.md` | прототипы, классы, `#`, итерируемость | |
| 27 | | A4 | `kb-javascript-async-and-event-loop-v1.md` | Promises, async/await, микро/макрозадачи, AbortSignal | |
| 28 | |
| 29 | **Остановка:** после шага, закрывшего вопрос. |
| 30 | |
| 31 | --- |
| 32 | |
| 33 | ## 3. Слой operational (карточка) |
| 34 | |
| 35 | | Файл | Когда | |
| 36 | |------|--------| |
| 37 | | `kb-javascript-operational-ecosystem-v1.md` | npm/semver/lockfile, ESLint/Prettier, бандлеры, тест‑раннеры, XSS/CSP/eval, audit в CI | |
| 38 | |
| 39 | --- |
| 40 | |
| 41 | ## 4. Мост «fundamentals → действие в проекте» |
| 42 | |
| 43 | | Идея (fundamentals) | Практический шаг | |
| 44 | |----------------------|------------------| |
| 45 | | ESM vs CJS, `import.meta` | Зафиксировать `package.json` `"type"`, соглашение по `.mjs`/`.cjs`, проверить граф на CI | |
| 46 | | Транспиляция vs полифилл | Записать матрицу сред и `targets`; не смешивать «только синтаксис» с рантайм‑полифиллами без учёта | |
| 47 | | TDZ / порядок модулей | Минимальный reproduce циклического графа; не «лечить» порядком импортов без модели | |
| 48 | | `this` и стрелки | Один задокументированный стиль для колбэков на границах публичного API | |
| 49 | | Микрозадачи / async | Один тест порядка Promise vs `setTimeout` в **целевой** среде CI | |
| 50 | | Фабрики vs `new` | Явная команда договорённость в style guide для объектных API | |
| 51 | |
| 52 | --- |
| 53 | |
| 54 | ## 5. Full pass (fundamentals → operational) |
| 55 | |
| 56 | **Фаза A (fundamentals):** A1 → A2 → A3 → A4 (как в §2). |
| 57 | **Фаза B (operational):** `kb-javascript-operational-ecosystem-v1.md`. |
| 58 | |
| 59 | Не выполнять обе фазы в одной загрузке контекста без необходимости. |
| 60 | |
| 61 | --- |
| 62 | |
| 63 | ## 6. Evidence‑based рабочий формат |
| 64 | |
| 65 | - **Fact:** версия движка (`node -p process.versions`), матрица браузера из конфигурации или Baseline. |
| 66 | - **Hypothesis:** ожидаемый эффект изменения (сборка, порядок задач, разрешение модулей). |
| 67 | - **Check:** минимальный reproduce в целевом рантайме. |
| 68 | - **Decision criterion:** тест + зелёный CI на целевой ветке зависимостей. |
| 69 | - **Confidence mark:** явно. |
| 70 | |
| 71 | --- |
| 72 | |
| 73 | ## 7. Контракты (сжато) |
| 74 | |
| 75 | - **Runtime:** не смешивать ментальную модель «браузерный global» и ESM‑модуля Node без явной политики. |
| 76 | - **Dependencies:** приложения — lockfile под VCS; audit как сигнал, не как единственная защита. |
| 77 | - **Security:** минимизировать `eval`/`Function` от пользовательских строк; CSP — осознанно, вместе с экранированием HTML. |
| 78 | |
| 79 | --- |
| 80 | |
| 81 | ## 8. Смежные домены |
| 82 | |
| 83 | - **TypeScript** (`software.typescript`) — отдельный онбординг; не подменяет fundamentals JS. |
| 84 | - **RegExp во flavor JS:** `worlds/pattern-regex/regex-playbook.md` → `worlds/pattern-regex/kb-regex-flavors-practice-v1.md` § JavaScript. |
| 85 | |
| 86 | --- |
| 87 | |
| 88 | ## 9. Revisit triggers |
| 89 | |
| 90 | - Смена major платформы (ESM‑only, смена разрешения модулей в Node). |
| 91 | - Массовые deprecations после обновления движка или ESLint major. |
| 92 | |
| 93 | --- |
| 94 | |
| 95 | ## Layer (memory-architecture) |
| 96 | |
| 97 | - **L1:** `status-javascript-v1.md` → **этот** playbook. |
| 98 | - **L1 deep fundamentals:** карточки §2 по одной. |
| 99 | - **L1 operational:** `kb-javascript-operational-ecosystem-v1.md`. |
| 100 | |
| 101 | --- |
| 102 | |
| 103 | *Версия: v1 · operational split fundamentals → operational · 2026-05-10* |
| 104 | |
| 105 | |