npm.io
1.21.3 • Published 18h ago

@s-hirano-ist/s-core

Licence
AGPL-3.0
Version
1.21.3
Deps
2
Size
417 kB
Vulns
0
Weekly
0
Stars
1

@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-core

Usage

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(...);
// 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 entities
  • events/ - Domain events
  • repositories/ - Repository interfaces
  • services/ - Domain services
  • types/ - 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 validation
  • uuid - ID generation
  • Infrastructure-independent image processing interfaces

Development

# Build the package
pnpm build

# Clean build artifacts
pnpm clean

# Run tests (from workspace root)
pnpm test:domains

License

AGPL-3.0

Repository

https://github.com/s-hirano-ist/s-private

Keywords