@s-hirano-ist/s-core
v1.18.3
Published
Core domain layer for s-private application - Clean architecture domain entities, repositories, and services
Maintainers
Readme
@s-hirano-ist/s-core
Domain layer for s-private application, following Clean Architecture and Domain-Driven Design principles.
Overview
This package contains the core domain logic for the s-private content management system, including:
- Domain Entities: Core business objects with their invariants
- Repository Interfaces: Abstraction for data access (dependency inversion)
- Domain Services: Complex business logic that doesn't belong to a single entity
- Domain Events: Events emitted during domain operations
- Value Objects & Types: Domain-specific types and constants
Installation
npm install @s-hirano-ist/s-core
# or
pnpm add @s-hirano-ist/s-core
# or
yarn add @s-hirano-ist/s-coreUsage
Import all domains (with namespaces)
import { Articles, Books, Notes, Images, Common, Errors } from "@s-hirano-ist/s-core";
// Usage
const article = new Articles.ArticleEntity(...);
const book = new Books.BooksEntity(...);
const note = new Notes.NoteEntity(...);
const image = new Images.ImageEntity(...);Import specific domain (recommended)
// Articles domain
import { ArticleEntity, ArticlesDomainService } from "@s-hirano-ist/s-core/articles";
// Books domain
import { BooksEntity, BooksDomainService } from "@s-hirano-ist/s-core/books";
// Notes domain
import { NoteEntity, NotesDomainService } from "@s-hirano-ist/s-core/notes";
// Images domain
import { ImageEntity, ImagesDomainService } from "@s-hirano-ist/s-core/images";
// Common utilities
import { CommonEntity, IdGenerator } from "@s-hirano-ist/s-core/common";
// Error classes
import { DomainError } from "@s-hirano-ist/s-core/errors";Importing specific exports from domain
// Direct import from domain module
import * as Articles from "@s-hirano-ist/s-core/articles";
// Use the exports
const service = new Articles.ArticlesDomainService();
const entity = new Articles.ArticleEntity(...);Package Structure
@s-hirano-ist/s-core/
├── articles/ # Article domain (news/link management)
├── books/ # Book domain (ISBN-based tracking)
├── common/ # Shared domain utilities
├── errors/ # Domain error classes
├── images/ # Image domain (file metadata)
└── notes/ # Note domain (markdown content)Each domain module contains:
entities/- Domain entitiesevents/- Domain eventsrepositories/- Repository interfacesservices/- Domain servicestypes/- Domain-specific types
Architecture
This package follows Clean Architecture principles:
- Dependency Inversion: Repository interfaces defined in domain, implementations elsewhere
- Domain Independence: No dependencies on frameworks or infrastructure
- Business Logic Isolation: Pure TypeScript domain logic
Dependencies
zod- Runtime validationuuid- ID generationsharp- Image processing types
Development
# Build the package
pnpm build
# Clean build artifacts
pnpm clean
# Run tests (from workspace root)
pnpm test:domainsLicense
AGPL-3.0
Repository
https://github.com/s-hirano-ist/s-private
