Тема
Утилита Codegen
Локальная утилита codegen работает как listener на 127.0.0.1:3210.
Она нужна для ручного сценария без постоянного демона:
- ты запускаешь listener
- расширение находит открытую вкладку платформы
- по кнопке
Сгенерироватьрасширение отправляет bundle в listener - listener создает или обновляет
src/gen
Запуск
Из корня проекта:
bash
pnpm codegen:listenОжидаемое поведение в консоли:
text
[endge-codegen] Listening on http://127.0.0.1:3210
[endge-codegen] Waiting for Chrome extension connection...
[endge-codegen] Connection not established yet. Retrying in 5 seconds...Когда вкладка найдена и heartbeat пошел, listener пишет подключение к вкладке.
Что генерируется
В целевом проекте создается каталог:
text
src/genСейчас туда пишутся:
domain.jsondomain.meta.tscatalog.tsidentifiers.tstypes.tsindex.ts
Что будет внутри
Пример types.ts:
ts
import { EndgeGen } from '@/gen'
type ProjectId = EndgeGen.ProjectId
type EnvId = EndgeGen.EnvIdПример index.ts:
ts
export * from './catalog'
export * from './domain.meta'
export * from './identifiers'
export * from './types'Примеры на текущих identity
По текущему проекту полезно ожидать такие generated-конструкции:
ts
EndgeGen.ProjectId.configurator
EndgeGen.EnvId.dev
EndgeGen.SettingsId.general
EndgeGen.ActionId.configurator_init
EndgeGen.ComponentId.textИ затем использовать их в коде:
ts
import { EndgeGen } from '@/gen'
interface ShellProps {
project: EndgeGen.ProjectId
env: EndgeGen.EnvId
}Если в текущем snapshot конкретная сущность отсутствует, generated type для нее откатывается к базовому типу из @endge/core, а не ломает сборку.
Что нужно для корректной работы
- расширение Chrome установлено и обновлено
- открыта поддерживаемая вкладка платформы
- listener запущен локально
- в popup указан абсолютный путь до целевого проекта
После этого генерация должна обновить src/gen, а IDE подхватит новые типы и константы.