feat(shared): add pocketbase di client and domain errors

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014hvR7iG75jK5byaBBHdDLT
This commit is contained in:
kamask
2026-10-28 22:27:20 +03:00
co-authored by Claude Sonnet 5.5
parent fc55456286
commit bec31ff02e
22 changed files with 626 additions and 79 deletions
+45
View File
@@ -26,6 +26,51 @@ export default defineConfig([
],
},
},
{
files: ['**/*.ts'],
ignores: ['src/app/shared/pocketbase/pocketbase-client.ts', 'tests/**'],
rules: {
'no-restricted-syntax': [
'error',
{
selector: "NewExpression[callee.name='PocketBase']",
message:
'Клиент PocketBase создаёт только фабрика в shared/pocketbase/pocketbase-client.ts; получайте его через DI (POCKETBASE).',
},
],
// Импорт под другим именем или через subpath (`import PB from 'pocketbase/cjs'`) обходит селектор выше; `import type` остаётся можно.
'@typescript-eslint/no-restricted-imports': [
'error',
{
patterns: [
{
group: ['pocketbase', 'pocketbase/*'],
importNames: ['default'],
allowTypeImports: true,
message:
'Класс PocketBase импортирует только фабрика в shared/pocketbase/pocketbase-client.ts; получайте клиент через DI (POCKETBASE).',
},
],
},
],
},
},
{
files: ['**/domain/**/*.ts', '**/ui/**/*.ts'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['pocketbase', 'pocketbase/*'],
message: 'pocketbase можно импортировать только в data/ и shared/.',
},
],
},
],
},
},
{
files: ['**/*.html'],
extends: [angular.configs.templateRecommended, angular.configs.templateAccessibility],