Cordis spatiotemporal framework — это независимый проект с открытым исходным кодом TypeScript. Репозиторий — главный источник для этой статьи. В файле README Cordis описывается как метафреймворк для пространственно-временной компонуемости, после чего приводится важная оговорка: разработка активно ведётся, API нестабилен и может измениться без предупреждения. Учитывайте это при чтении каждого примера.
В задаче зафиксирован снимок GitHub Daily Trending от 2026-08-18. Эта дата объясняет, как кто-то мог обнаружить репозиторий. Она ничего не говорит о долгосрочной популярности, распространённости или готовности к использованию в продуктивной среде.
Две идеи, лежащие в основе этого обозначения
В репозитории есть ссылка на статью Cordiverse о временной и пространственной компонуемости. Это препринт, который активно дорабатывается, поэтому он помогает объяснить термины, но не является окончательной спецификацией.
Временная компонуемость связана с очисткой во времени. Компонент может создавать эффекты во время работы, а затем отменять их или освобождать связанные с ними ресурсы после завершения своей работы. В проверенном коде Fiber отслеживает работу, требующую освобождения ресурсов, а тесты проверяют очистку после удаления плагина fiber.
Пространственная компонуемость связана с зависимостями внутри context. Компонент может объявить service, которые ему необходимы, а среда выполнения может реагировать на изменение context. Исходный код предоставляет Context корневой экземпляр, а также extend, isolate и intercept. Код service и реестра обеспечивает предоставление и внедрение зависимостей для этого context.
Эти термины помогают изучить конструкцию. Они не доказывают, что любая комбинация плагинов безопасна, совместима или подходит для конкретного приложения.
Что предоставляет исходный код ядра
Проверенный манифест packages/core имеет имя cordis, версия 4.0.0-rc.8. Суффикс rc соответствует предупреждению в файле README. Он не обещает стабильную ветку выпуска.
Context предоставляет плагину доступ к фреймворку services. Его конструктор настраивает реестр, события, журналирование и рефлексию service. extend создаёт связанный с ним context. isolate записывает метку изоляции, а intercept содержит конфигурацию для именованного service. Это информация о текущем исходном коде TypeScript, а не руководство по совместимости.
Cordis принимает функциональные плагины, плагины-конструкторы и объекты с методом apply. ctx.plugin(...) создаёт fiber для плагина. В реестре хранятся данные о выполнении известных плагинов, а delete освобождает fiber, связанные с удаленным плагином. Это прямая связь между композицией плагина и идеей очистки.
Service образуют ещё одну границу зависимостей. Экземпляр Service регистрируется через рефлексию service, принадлежащую context. Исходный код также предоставляет декоратор Inject и вспомогательную функцию inject. Сверьте имена, поведение внедрения и конфигурацию с редакцией, которую планируете использовать.
У события service есть методы emit, parallel, serial, bail и waterfall. Они описывают различное поведение управления потоком выполнения. Реализация показывает, что parallel ожидает слушателей и собирает результаты отклонённых вызовов слушателей, тогда как serial запускает слушателей по порядку и может остановиться после получения непустого результата.
Небольшой пример для ознакомления
В тестах используются корневой context, плагины, слушатели событий и освобождение ресурсов. Этот короткий пример следует этим открытым API. Он предназначен для облегчения чтения, а не является инструкцией по установке или обещанием, что более поздняя редакция будет вести себя так же.
import { Context } from 'cordis'
const root = new Context()
const task = root.plugin((ctx) => {
const dispose = ctx.on('example/event', () => {
// Add application behavior here.
})
return () => dispose()
})
await task.dispose()Прочитайте пример дважды. Сначала обратите внимание, где регистрируется слушатель: плагин получает ctx, а не глобальную шину событий. Затем рассмотрите освобождение ресурсов. Текущие тесты показывают, что при освобождении ресурсов плагина удаляются эффекты и слушатели, подключённые к этому плагину context. Ваш собственный тест должен проверять очистку ресурсов, от которой зависит ваше приложение.
Ограничения имеющихся доказательств
Монорепозиторий содержит пакеты для загрузчика и горячей замены модулей, а также другие вспомогательные пакеты. Это показывает, что они находятся в одном дереве исходного кода. Это не свидетельствует о наличии поддерживаемой интеграции для каждого приложения, сборщика, среды выполнения или варианта развёртывания.
Проверенная лицензия — MIT. В ходе данного исследования конечная точка GitHub releases не выдала ни одного результата по релизам. В проверенном дереве не обнаружено SECURITY.md, а GitHub вернул HTTP-код 404 для этого пути. Эти факты не являются оценкой безопасности. Для критически важной системы найдите актуальный канал для раскрытия информации об уязвимостях или контакт службы поддержки, проверьте зависимости и протестируйте точно указанную ревизию в изолированной среде.
В этой статье отсутствуют показатели трафика, ключевых слов, обратных ссылок, распространения, бенчмарков, цен, аппаратного обеспечения, поддержки моделей, совместимости или производительности. Приведённое по ссылке руководство является полезным дополнительным материалом, но предупреждение репозитория означает, что исходный код и манифесты пакетов остаются лучшим доказательством для конкретной ревизии.
Осторожный путь к оценке
Зафиксируйте коммит, который рассматривается. Изучите манифест основного пакета, Context, RegistryService, Service, EventsService и тесты вместе. Проверьте, предусматривает ли жизненный цикл плагина необходимую вам очистку ресурсов. Проверьте, соответствуют ли внедрение service и отправка событий вашим правилам работы с зависимостями и обработки ошибок. Перед сменой ревизий сохраните тест обновления, проверяющий регистрацию и освобождение ресурсов.
Это полезнее, чем считать название фреймворка гарантией. Cordis даёт идеи и доступные для изучения механизмы, видимые в исходном коде. Репозиторий предупреждает читателей о возможных изменениях.
Примечание для читателей OdiRouter
Cordis не является продуктом OdiRouter. Проверенные материалы Cordis и OdiRouter не подтверждают наличие официальной встроенной интеграции Cordis. Прежде чем принимать решение по проекту, ознакомьтесь с актуальной информацией о OdiRouter. В этой статье не утверждается, что OdiRouter поддерживает Cordis.