Forge
markdowne8ad0934
1# JavaScript — operational: экосистема, сборка, тесты, угрозы
2
3**Назначение:** **операционный слой** мира **`software.javascript`** после fundamentals: npm/lockfile, semver, статический анализ, бандлеры, тест‑раннеры, базовая модель угроз (XSS, CSP, динамический код). Не заменяет спецификацию языка — см. карточки `kb-javascript-*` в фазе fundamentals в `index-knowledge-javascript-cluster-v1.md`.
4
5**Порядок загрузки:** `status-javascript-v1.md` → `playbook-javascript-operational-v1.md` → этот файл (после прохождения fundamentals по вопросу или в фазе B full pass).
6
7---
8
9## Provenance
10
11- source_refs: `npm:docs`; `nodejs.org` / `bun.sh` / `deno.land`; `cheatsheetseries.owasp.org` (XSS — ориентир); `kb:internal` synthesis 2026-05-10; supersedes раздел tooling из `kb-javascript-runtime-tooling-and-security-baseline-v1.md`
12- created_at: 2026-05-10
13- updated_at: 2026-05-10
14
15## Metadata
16
17- card_id: kb-javascript-operational-ecosystem-v1
18- world: software.javascript
19- layer: operational (kb)
20- tags: node, npm, tooling, security, csp, ci
21- status: active
22
23## Epistemic Linkage
24
25- epistemic_basis: inference + fact
26- confidence: high для lockfile+semver; medium для матрицы конкретного бандлера
27
28## Core Unit
29
30- **context:** проект выходит за пределы «одного скрипта в HTML».
31- **signal:** «сломалось после minor», audit CI, CSP ломает инлайн, флейки тестов из-за таймеров.
32- **action:** зафиксировать lockfile, политику audit, минимальный security baseline.
33- **outcome:** воспроизводимые сборки и снижение типовых supply-chain/XSS ошибок конфигурации.
34
35### 1. npm, lockfile, semver
36
37- **Fact:** диапазон версий в `package.json` **не** фиксирует дерево; lockfile фиксирует разрешённое дерево при том же менеджере и дисциплине вроде `npm ci`.
38- **Heuristic:** **приложения** коммитят lockfile; библиотеки — по политике пакета (часто только `package.json`).
39- **Uncertainty:** при конфликте `peerDependencies` смотреть отчёт установщика конкретной версии.
40- **Confidence:** high
41
42### 2. ESLint / Prettier и дисциплина стиля
43
44- **Fact:** линтер ловит класс ошибок и опасные паттерны, но **не** заменяет тесты на семантику языка.
45- **Heuristic:** правила async/import‑организации включать после согласования — массовые автофиксы несут риск семантических регрессий.
46- **Confidence:** high
47
48### 3. Транспиляция и бандлеры
49
50- **Fact:** esbuild/swc/Rollup/webpack/Vite решают граф модулей и совместимость целей; артефакты могут различаться картами кода и транзитивными лицензиями инструментов.
51- **Heuristic:** supply chain и лицензии — отдельная политика организации; KB фиксирует класс риска.
52- **Confidence:** medium
53
54### 4. Тестирование: Vitest / Jest / `node:test`
55
56- **Fact:** раннер задаёт окружение модулей и моки времени/сети; влияет на флейки порядка задач.
57- **Heuristic:** изолировать глобальное состояние и таймеры; `useFakeTimers` — с пониманием взаимодействия с microtasks.
58- **Confidence:** high
59
60### 5. Базовые web‑угрозы (XSS, CSP)
61
62- **Fact:** XSS часто связан со склейкой HTML без экранирования, а не «с JS как языком».
63- **Heuristic:** CSP и отказ от `unsafe-inline` — осознанно; **CSP не заменяет** корректное экранирование в HTML‑контекстах на сервере/шаблоне.
64- **Confidence:** high как ориентир
65
66### 6. Динамический код: `eval`, `new Function`
67
68- **Fact:** компиляция строк в код расширяет blast radius при вводе пользователя или компрометации конфигов.
69- **Heuristic:** по умолчанию deny без threat model; REPL и исключения — изолировать.
70- **Confidence:** high
71
72## Operationalization (сводка слоя)
73
74- **first_adoption_task:** включить `npm audit` / эквивалент в CI как **сигнал**, не как единственную гарантию.
75- **validation_check:** `node -p process.versions` согласован между dev и CI.
76- **success_criterion:** lockfile приложения под версионированием; нет «случайного» его отсутствия.
77
78## Lifecycle
79
80- supersedes: kb-javascript-runtime-tooling-and-security-baseline-v1 (содержимое tooling/security перенесено сюда; движки — в `kb-javascript-ecmascript-and-modules-v1.md` § реализации)
81- superseded_by: —
82- deprecation_reason: —
83
84
View only · write via MCP/CIDE