spec: simplify runtime requirements #20
@@ -156,7 +156,7 @@
|
|||||||
|
|
||||||
### Requirement: Income payments remain traceable to exact Ledger Entries
|
### Requirement: Income payments remain traceable to exact Ledger Entries
|
||||||
|
|
||||||
В разделе «Выплаты» страница MUST показывать единый список карточек точных исполненных Ledger Entries применённого периода в исходном серверном порядке entries. Каждая выплата MUST иметь собственную сразу видимую карточку с описанием, датой, доступной identity Instrument и signed Money в исходной валюте. Страница MUST NOT добавлять внешние группировочные карточки или заголовки по Instrument либо валюте, subtotals инструмента или количество выплат инструмента. Список MUST сохранять отрицательные корректировки и повторяющиеся operation IDs как отдельные записи и MUST NOT включать записи вне аналитического итога. Отказ от группировочного UI MUST NOT отменять проверки принадлежности entries к instrumentKey, валюты и receipt count ответа или приводить к пересчёту денежных итогов на клиенте.
|
В разделе «Выплаты» страница MUST показывать единый список карточек точных исполненных Ledger Entries применённого периода в исходном серверном порядке entries. Каждая выплата MUST иметь собственную сразу видимую карточку с описанием, датой, доступной identity Instrument и signed Money в исходной валюте. Страница MUST NOT добавлять внешние группировочные карточки или заголовки по Instrument либо валюте, subtotals инструмента или количество выплат инструмента. Список MUST сохранять отрицательные корректировки и повторяющиеся operation IDs как отдельные записи и MUST NOT включать записи вне аналитического итога. Backend MUST обеспечивать согласованность entries, instrumentKey, валюты и receipt count при формировании ответа из одного набора записей. Frontend SHALL доверять типизированному contract без второго runtime consistency validator и MUST NOT пересчитывать денежные итоги.
|
||||||
|
|
||||||
#### Scenario: Каждая выплата показана отдельной карточкой
|
#### Scenario: Каждая выплата показана отдельной карточкой
|
||||||
|
|
||||||
|
|||||||
@@ -94,20 +94,29 @@ Portfolio Snapshot является результатом наблюдения
|
|||||||
- **THEN** система передаёт её как строку `"-0.5"`
|
- **THEN** система передаёт её как строку `"-0.5"`
|
||||||
|
|
||||||
### Requirement: Свежесть и fallback полного Portfolio Snapshot
|
### Requirement: Свежесть и fallback полного Portfolio Snapshot
|
||||||
Система MUST кэшировать полный успешный Portfolio Snapshot отдельно для каждой пары User и Brokerage Account в памяти на 30 секунд. После истечения свежего кэша система MUST получить новый полный снимок; при временной upstream-недоступности она SHALL вернуть последний успешный полный снимок, если ему не более пяти минут, с `isStale: true`. Metadata инструмента MUST NOT влиять на успешность или свежесть Portfolio Snapshot, но MUST быть получено до формирования нового Snapshot, чтобы при доступном upstream-ответе вернуть отображаемое имя инструмента.
|
Система MUST хранить последний полный успешный Portfolio Snapshot в SQLite
|
||||||
|
с принадлежностью User, экземпляру подключения и Brokerage Account. Обычный
|
||||||
|
GET MUST читать сохранённые данные без ожидания T-Bank; missing/stale источники
|
||||||
|
обновляются в фоне по пользовательскому запросу. Portfolio source свеж 60 секунд.
|
||||||
|
Ошибка обновления MUST сохранять прежний полный Snapshot и его время без
|
||||||
|
пятиминутного лимита fallback. Metadata MUST NOT определять успешность или
|
||||||
|
свежесть финансового Snapshot; при её отсутствии используется доступный fallback.
|
||||||
|
|
||||||
Система MUST очищать все Portfolio Snapshot User после успешной замены или удаления его T-Bank connection. Успешные metadata инструмента и подтверждённое отсутствие инструмента MUST кэшироваться глобально по FIGI на 24 часа; ошибка metadata lookup MUST NOT кэшироваться.
|
Система MUST делать прежние личные datasets недоступными после успешной замены
|
||||||
|
или удаления подключения. Поздняя работа прежнего подключения MUST NOT
|
||||||
|
публиковаться в новом. Общие metadata и подтверждённое отсутствие инструмента
|
||||||
|
сохраняются по UID/FIGI на 24 часа; ошибка lookup не подтверждает отсутствие.
|
||||||
|
|
||||||
#### Scenario: Свежий Snapshot
|
#### Scenario: Свежий Snapshot
|
||||||
- **WHEN** User повторно запрашивает тот же Portfolio в течение 30 секунд после успешного получения
|
- **WHEN** User повторно запрашивает тот же Portfolio в течение 60 секунд после успешного получения
|
||||||
- **THEN** система возвращает свежий Snapshot без нового обращения к T-Bank
|
- **THEN** система возвращает свежий Snapshot без нового обращения к T-Bank
|
||||||
|
|
||||||
#### Scenario: Медленный lookup инструмента
|
#### Scenario: Медленный lookup инструмента
|
||||||
- **WHEN** metadata инструмента ещё отсутствует и его lookup не завершился
|
- **WHEN** metadata инструмента ещё отсутствует и его lookup не завершился
|
||||||
- **THEN** система ожидает lookup в пределах gRPC deadline и возвращает name при успешном ответе upstream
|
- **THEN** система не задерживает локальный ответ ради lookup и показывает доступную identity; сохранённая успешная metadata используется последующим чтением
|
||||||
|
|
||||||
#### Scenario: Fallback после временной upstream-ошибки
|
#### Scenario: Fallback после временной upstream-ошибки
|
||||||
- **WHEN** обновление устаревшего Snapshot неуспешно из-за временной недоступности T-Bank, а последний полный успешный Snapshot получен не более пяти минут назад
|
- **WHEN** обновление устаревшего Snapshot неуспешно из-за временной недоступности T-Bank, а в текущей границе подключения есть полный успешный Snapshot
|
||||||
- **THEN** система отвечает `200` этим Snapshot с `isStale: true` и исходным `lastSuccessfulAt`
|
- **THEN** система отвечает `200` этим Snapshot с `isStale: true` и исходным `lastSuccessfulAt`
|
||||||
|
|
||||||
#### Scenario: Недействительный token не маскируется fallback-данными
|
#### Scenario: Недействительный token не маскируется fallback-данными
|
||||||
@@ -118,7 +127,14 @@ Portfolio Snapshot является результатом наблюдения
|
|||||||
|
|
||||||
Клиент SHALL загружать Portfolio при открытии защищённого маршрута
|
Клиент SHALL загружать Portfolio при открытии защищённого маршрута
|
||||||
`/accounts/:accountId`. Он MUST использовать успешный ответ в течение
|
`/accounts/:accountId`. Он MUST использовать успешный ответ в течение
|
||||||
30 секунд, без automatic retry, polling или refetch при возврате фокуса.
|
30 секунд, без automatic retry или refetch при возврате фокуса.
|
||||||
|
Polling допускается только для известной работы открытого экрана;
|
||||||
|
data GET наблюдения использует `sync=observe` и MUST NOT запускать новый импорт.
|
||||||
|
Status сообщает state/errorCode без hash notifications и численных progress counters.
|
||||||
|
После ухода или завершения работы polling MUST прекращаться.
|
||||||
|
|
||||||
|
Предзагрузка всей истории свечей бумаг портфеля MUST NOT выполняться.
|
||||||
|
Новый диапазон свечей загружается при его открытии; initial loading допустим.
|
||||||
При загрузке без ранее полученного успешного ответа для этого же Brokerage
|
При загрузке без ранее полученного успешного ответа для этого же Brokerage
|
||||||
Account клиент MUST показывать структурное skeleton-состояние ожидаемого
|
Account клиент MUST показывать структурное skeleton-состояние ожидаемого
|
||||||
содержимого, включая сводку, без вымышленных сумм. Область загрузки MUST
|
содержимого, включая сводку, без вымышленных сумм. Область загрузки MUST
|
||||||
|
|||||||
@@ -53,11 +53,21 @@
|
|||||||
|
|
||||||
#### Scenario: Истёкшая сессия
|
#### Scenario: Истёкшая сессия
|
||||||
- **WHEN** клиент отправляет refresh-cookie Session, не обновлявшейся более 7 дней
|
- **WHEN** клиент отправляет refresh-cookie Session, не обновлявшейся более 7 дней
|
||||||
- **THEN** система удаляет refresh-cookie и отвечает `401` Problem Details с code `UNAUTHORIZED`
|
- **THEN** система отвечает `401` Problem Details с code `UNAUTHORIZED`, не изменяя cookie неуспешным refresh
|
||||||
|
|
||||||
#### Scenario: Повторное использование refresh token
|
#### Scenario: Повторное использование refresh token
|
||||||
- **WHEN** клиент отправляет refresh token, заменённый предыдущим успешным refresh
|
- **WHEN** клиент отправляет refresh token, заменённый предыдущим успешным refresh
|
||||||
- **THEN** система удаляет refresh-cookie и отвечает `401` Problem Details с code `UNAUTHORIZED`, не отзывая связанную Session только из-за этого запроса
|
- **THEN** система отвечает `401` Problem Details с code `UNAUTHORIZED`, не изменяет cookie и не отзывает связанную Session только из-за этого запроса
|
||||||
|
|
||||||
|
### Requirement: Межвкладочная координация не требуется
|
||||||
|
Frontend MUST сохранять изоляцию данных текущей identity внутри вкладки.
|
||||||
|
Он MUST NOT требовать cross-tab synchronization для auth flow. После смены
|
||||||
|
auth-состояния в другой вкладке допускаются reload или повторная авторизация.
|
||||||
|
Неуспешный refresh MUST NOT удалять cookie успешного конкурентного запроса.
|
||||||
|
|
||||||
|
#### Scenario: Конкурентный refresh проигрывает в другой вкладке
|
||||||
|
- **WHEN** вкладка получает `401` после ротации общей cookie другой вкладкой
|
||||||
|
- **THEN** она может перейти на login; cookie победителя остаётся доступной для последующего восстановления
|
||||||
|
|
||||||
### Requirement: Завершение сессии
|
### Requirement: Завершение сессии
|
||||||
Система SHALL позволять завершить текущую Session через logout. Logout MUST отозвать Session, если refresh-cookie соответствует активной Session, и MUST удалить refresh-cookie. Logout MUST быть идемпотентным и не раскрывать существование Session.
|
Система SHALL позволять завершить текущую Session через logout. Logout MUST отозвать Session, если refresh-cookie соответствует активной Session, и MUST удалить refresh-cookie. Logout MUST быть идемпотентным и не раскрывать существование Session.
|
||||||
|
|||||||
Generated
+86
-86
@@ -81,13 +81,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/config-validator": {
|
"node_modules/@commitlint/config-validator": {
|
||||||
"version": "21.2.0",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-21.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-21.2.3.tgz",
|
||||||
"integrity": "sha512-t7AzNHAKeIdo/3NRGwzpufKHsKkPHmFs/56N2Fnsh0/r0rGtnQzTxk6vnFgjaGr4hdSQKNB50/KAhR9Yk4LJKA==",
|
"integrity": "sha512-JQ13v0GafSM4fBYX8UowSy++07Was20auq0NcTdnzSEq6/05Cq5GBUMIfKkqjzyBwC9sJFmPpKWgLLhH7cygkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"ajv": "^8.11.0"
|
"ajv": "^8.11.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -95,13 +95,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/ensure": {
|
"node_modules/@commitlint/ensure": {
|
||||||
"version": "21.2.0",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-21.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-21.2.3.tgz",
|
||||||
"integrity": "sha512-76IF9vDNS13lAzEEik9eKwzt8f9hYhWiwVXZ2AnyLCz5/f511FsEQ3pw1X3/zSQpdRLQU7i5qDMVKyXi1GWjSg==",
|
"integrity": "sha512-gEjNKgRocbODI5/sMx2Qc9XOf2/zFTNV2aEK1QZ4gKDKxDC/VR7us3QtIX1C5d5xxHxx0I/tEbYbdSP1Am2LwA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"es-toolkit": "^1.46.0"
|
"es-toolkit": "^1.46.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -119,13 +119,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/format": {
|
"node_modules/@commitlint/format": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/format/-/format-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/format/-/format-21.2.3.tgz",
|
||||||
"integrity": "sha512-v6fvxZSc/AvVMROlr3H34+1766bZSYApRUSCAMjWamStPjKMvZ8GdvVA5YW/VQNgbFTmcMz6OYmSTJEvIjPrfA==",
|
"integrity": "sha512-KKwCjXYqA8r295uhLnulDXL9yekdXmj2yp2Q0XsBPhxQ2iPuvRE8F43j7g7yexo69wTdmUQmFz15jpderluzUQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"picocolors": "^1.1.1"
|
"picocolors": "^1.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -133,13 +133,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/is-ignored": {
|
"node_modules/@commitlint/is-ignored": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-21.2.3.tgz",
|
||||||
"integrity": "sha512-9UoKNgfFE3LU7FrzierCvk3CdDfMDeVGC86qZiT/n0TIjfq/dmZ9MHuXd45OTNRa26ZanmJRxEtmiXk/lEJihg==",
|
"integrity": "sha512-Ng4nRj/LBAOvc+GQu7bsFW4/fL89LvZ14OOC/ERLbUpnG6QBwWRzY/1oXGwPs3C8YHWjJObin4kLYo2YeEn70w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"semver": "^7.6.0"
|
"semver": "^7.6.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -147,32 +147,32 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/lint": {
|
"node_modules/@commitlint/lint": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-21.2.3.tgz",
|
||||||
"integrity": "sha512-Fy8JxEBzdmsYWFude/61GxXu5O+wEymwiRK2z9GL9R8mCsXphCoGxAFc5iHn5mjlfcSrhiiONE+ksf4KOjnaPg==",
|
"integrity": "sha512-lUZcSuVLLEDkhge9ERk8Rp+FXQtrUhCK+h328BFnzKXrTuXGdqiYMEpTlNWdZaOrjyMhMJaz354ZaWEGJxcLeg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/is-ignored": "^21.2.2",
|
"@commitlint/is-ignored": "^21.2.3",
|
||||||
"@commitlint/parse": "^21.2.2",
|
"@commitlint/parse": "^21.2.3",
|
||||||
"@commitlint/rules": "^21.2.2",
|
"@commitlint/rules": "^21.2.3",
|
||||||
"@commitlint/types": "^21.2.0"
|
"@commitlint/types": "^21.2.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22.12.0"
|
"node": ">=22.12.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/load": {
|
"node_modules/@commitlint/load": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/load/-/load-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/load/-/load-21.2.3.tgz",
|
||||||
"integrity": "sha512-0Tt6wDPX167cjKC5D4zhm0+20wJJG+TN/TKovMOspfSe78rOnKX+MNzlVNiu6HyQPZChPJ8QBH31MVt6Bb8fCg==",
|
"integrity": "sha512-cDrL8lOo23Lk7knGzQdjbFcq7z2JgvjwV6PhbESVvEc+Fe21MeLjPKBJi8nKjg7j+jh79CVbVSUbZc104thXRw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/config-validator": "^21.2.0",
|
"@commitlint/config-validator": "^21.2.3",
|
||||||
"@commitlint/execute-rule": "^21.0.1",
|
"@commitlint/execute-rule": "^21.0.1",
|
||||||
"@commitlint/resolve-extends": "^21.2.2",
|
"@commitlint/resolve-extends": "^21.2.3",
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"cosmiconfig": "^9.0.1",
|
"cosmiconfig": "^9.0.1",
|
||||||
"cosmiconfig-typescript-loader": "^6.1.0",
|
"cosmiconfig-typescript-loader": "^6.1.0",
|
||||||
"es-toolkit": "^1.46.0",
|
"es-toolkit": "^1.46.0",
|
||||||
@@ -194,13 +194,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/parse": {
|
"node_modules/@commitlint/parse": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-21.2.3.tgz",
|
||||||
"integrity": "sha512-MEkobPfvRp+z06Wro8HMG1BDGHzZmj82A1LH1nWeG3ipHpg/x4m6v3wEDvMBIKjRFUnfR3nBeFs3MVCr7UdAmg==",
|
"integrity": "sha512-Jt61QpF1xA88damCELe8I0FlDZPSpXNc8IhN7z5kZ0EcDYPjdZ+ZHPvsSXl69r2MIlLnNKeHhOn2cmVpziFE9w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"conventional-changelog-angular": "^9.0.0",
|
"conventional-changelog-angular": "^9.0.0",
|
||||||
"conventional-commits-parser": "^7.0.0"
|
"conventional-commits-parser": "^7.0.0"
|
||||||
},
|
},
|
||||||
@@ -209,14 +209,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/read": {
|
"node_modules/@commitlint/read": {
|
||||||
"version": "21.2.1",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/read/-/read-21.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/read/-/read-21.2.3.tgz",
|
||||||
"integrity": "sha512-hUW7EJQnNTL0vPOmVMNK4CrnrNBN0nN+JJHReFkdHO5y4iyHeEmTBwuC15OCqUTjxWo7idnH1LftfpWVIaPWIA==",
|
"integrity": "sha512-szAepuLA1vTTr7fuudEg7jYyVHudf+FH+vptU91bhxE1WnE8TKrfTAi44HVllz8XpI8Pvp4GjR/iP5Nshgh+og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/top-level": "^21.2.0",
|
"@commitlint/top-level": "^21.2.0",
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"@conventional-changelog/git-client": "^3.0.0",
|
"@conventional-changelog/git-client": "^3.0.0",
|
||||||
"tinyexec": "^1.0.0"
|
"tinyexec": "^1.0.0"
|
||||||
},
|
},
|
||||||
@@ -225,14 +225,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/resolve-extends": {
|
"node_modules/@commitlint/resolve-extends": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-21.2.3.tgz",
|
||||||
"integrity": "sha512-RPkJ/IFi7sMUUVbZLqwWFtWw/zRDcfFsmrPSiTMrt5wb7AdxOr86EGQFvmGzef5QKV5IPBWWCujqVTw1RWX44A==",
|
"integrity": "sha512-bqJdmAtXgAQel+l02uIsF7rHgKgx1AGZdGBjam7uK4XW54ZAQtB6XAIUXezYprQiCcRMpBh4fHs5JodXK4mVZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/config-validator": "^21.2.0",
|
"@commitlint/config-validator": "^21.2.3",
|
||||||
"@commitlint/types": "^21.2.0",
|
"@commitlint/types": "^21.2.3",
|
||||||
"es-toolkit": "^1.46.0",
|
"es-toolkit": "^1.46.0",
|
||||||
"global-directory": "^5.0.0",
|
"global-directory": "^5.0.0",
|
||||||
"resolve-from": "^5.0.0"
|
"resolve-from": "^5.0.0"
|
||||||
@@ -242,16 +242,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/rules": {
|
"node_modules/@commitlint/rules": {
|
||||||
"version": "21.2.2",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-21.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-21.2.3.tgz",
|
||||||
"integrity": "sha512-eplQzyYkBjYB1HyyRj8hkcK11Y9DU9nuBz7uOKEd6NpE9NGDytLFCAnlRE+OoiK/5sHEJsaz2RGhuWBvYzIbNA==",
|
"integrity": "sha512-5+YnI/LuTx3JDl9GjqfP2z9x96M8KKDrd+4jOel/T0L1BB3oAmBlSN8xppf63QsudiVEgR8C0gRoAMrPVrms6g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@commitlint/ensure": "^21.2.0",
|
"@commitlint/ensure": "^21.2.3",
|
||||||
"@commitlint/message": "^21.2.0",
|
"@commitlint/message": "^21.2.0",
|
||||||
"@commitlint/to-lines": "^21.0.1",
|
"@commitlint/to-lines": "^21.0.1",
|
||||||
"@commitlint/types": "^21.2.0"
|
"@commitlint/types": "^21.2.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22.12.0"
|
"node": ">=22.12.0"
|
||||||
@@ -281,9 +281,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@commitlint/types": {
|
"node_modules/@commitlint/types": {
|
||||||
"version": "21.2.0",
|
"version": "21.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@commitlint/types/-/types-21.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@commitlint/types/-/types-21.2.3.tgz",
|
||||||
"integrity": "sha512-7zVFCDB2reMvJH5dmbKnOQPjZEvjdJTH8jc0U/PIPU1r3/+vf5pD1HlfitV2MWsWXrvu7u39iY1lyLUPOaN0Gw==",
|
"integrity": "sha512-sGEA473TlCvhCGNoTBY9OXZVWdscIXdGt0dm8EpB+2MRfmt8LNh/X56P/T3nCtEB+eH5qGEa3odphSAoUxSfSQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -972,9 +972,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "26.5.1",
|
"version": "26.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
|
||||||
"integrity": "sha512-CzNm2FezW4VR/LjG6yUdiEgLE/rAQ9Slj5gCu/C2VrdcW7I0ahNZ8DRbHT7zOZ6r3ONgd/bsQIeSaoDGrd1C6g==",
|
"integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
"peer": true,
|
||||||
@@ -1377,9 +1377,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ansi-regex": {
|
"node_modules/ansi-regex": {
|
||||||
"version": "6.3.0",
|
"version": "6.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz",
|
||||||
"integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==",
|
"integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1446,9 +1446,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/basic-ftp": {
|
"node_modules/basic-ftp": {
|
||||||
"version": "5.3.1",
|
"version": "6.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-6.2.1.tgz",
|
||||||
"integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==",
|
"integrity": "sha512-bK67isD+lKq46AU8vNtjvMaT2ZqAOAmNCbxUHlFBRD4k15NWxyEjmaKtZPlgce58So4BNTjITGQOVTjL9y0ECA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1470,9 +1470,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/bundle-name": {
|
"node_modules/bundle-name": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.1.tgz",
|
||||||
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
|
"integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1672,9 +1672,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/content-type": {
|
"node_modules/content-type": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/content-type/-/content-type-3.1.1.tgz",
|
||||||
"integrity": "sha512-z26wZR7iXahgpSK7XgnB4IbRVmUNSODvsX9qC9TAru7AcWGiqn5YKy+OH3PLRrwyAnewykKhCqnD+VV3a8uT8Q==",
|
"integrity": "sha512-GW4qUsfFo59d0HbUibDlWv5wPz+vAAcaTWbKIuKCf0JkC7wWkSyf8f13IpXn5JkeMlB2P8iTSSIjwXljorg2vA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2093,9 +2093,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/exsolve": {
|
"node_modules/exsolve": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.3.tgz",
|
||||||
"integrity": "sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==",
|
"integrity": "sha512-kuzL9zherLQoqDeQaS55AiiIg1kb4KYXaSusTtgZTPlvKP2gGCI82LNmBNh5RjDVUXIcmgx+/Mx7vPwRzBbhJA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@@ -2124,9 +2124,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fast-uri": {
|
"node_modules/fast-uri": {
|
||||||
"version": "3.1.7",
|
"version": "3.1.8",
|
||||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz",
|
||||||
"integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==",
|
"integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2189,9 +2189,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/get-east-asian-width": {
|
"node_modules/get-east-asian-width": {
|
||||||
"version": "1.6.0",
|
"version": "1.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz",
|
||||||
"integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
|
"integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2355,9 +2355,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ip-address": {
|
"node_modules/ip-address": {
|
||||||
"version": "10.7.0",
|
"version": "10.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.3.tgz",
|
||||||
"integrity": "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==",
|
"integrity": "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3316,9 +3316,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/string-width": {
|
"node_modules/string-width": {
|
||||||
"version": "8.2.2",
|
"version": "8.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
|
||||||
"integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==",
|
"integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -3439,9 +3439,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici": {
|
"node_modules/undici": {
|
||||||
"version": "7.29.0",
|
"version": "7.29.1",
|
||||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz",
|
||||||
"integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
|
"integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3590,9 +3590,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yargs": {
|
"node_modules/yargs": {
|
||||||
"version": "18.1.0",
|
"version": "18.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz",
|
||||||
"integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==",
|
"integrity": "sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -17,5 +17,11 @@
|
|||||||
"@release-it/conventional-changelog": "12.0.0",
|
"@release-it/conventional-changelog": "12.0.0",
|
||||||
"conventional-changelog-conventionalcommits": "10.4.0",
|
"conventional-changelog-conventionalcommits": "10.4.0",
|
||||||
"release-it": "21.0.2"
|
"release-it": "21.0.2"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"release-it": {
|
||||||
|
"basic-ftp": "6.2.1",
|
||||||
|
"undici": "7.29.1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user