s-private API Documentation - v3.8.1
    Preparing search index...

    Module @s-hirano-ist/s-core

    @s-hirano-ist/s-core

    Domain layer for s-private application, following Clean Architecture and Domain-Driven Design principles.

    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
    npm install @s-hirano-ist/s-core
    # or
    pnpm add @s-hirano-ist/s-core
    # or
    yarn add @s-hirano-ist/s-core
    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";
    // 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(...);
    @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

    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
    • zod - Runtime validation
    • uuid - ID generation
    • sharp - Image processing types
    # Build the package
    pnpm build

    # Clean build artifacts
    pnpm clean

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

    AGPL-3.0

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

    Modules

    articles/entities/article-entity
    articles/events/article-created-event
    articles/events/article-deleted-event
    articles/repositories/articles-command-repository.interface
    articles/repositories/articles-query-repository.interface
    articles/repositories/category-command-repository.interface
    articles/repositories/category-query-repository.interface
    articles/services/articles-batch-domain-service
    articles/services/articles-domain-service
    articles/services/category-service
    articles/types/query-params
    articles/types/sort-order
    books/entities/book-entity
    books/events/book-created-event
    books/events/book-deleted-event
    books/repositories/books-command-repository.interface
    books/repositories/books-query-repository.interface
    books/services/books-batch-domain-service
    books/services/books-domain-service
    books/services/github-book-fetcher.interface
    books/types/query-params
    books/types/sort-order
    images/entities/image-entity
    images/events/image-created-event
    images/events/image-deleted-event
    images/repositories/images-command-repository.interface
    images/repositories/images-query-repository.interface
    images/services/image-processor.interface
    images/services/images-batch-domain-service
    images/services/images-domain-service
    images/types/query-params
    images/types/sort-order
    notes/entities/note-entity
    notes/events/note-created-event
    notes/events/note-deleted-event
    notes/repositories/notes-command-repository.interface
    notes/repositories/notes-query-repository.interface
    notes/services/notes-batch-domain-service
    notes/services/notes-domain-service
    notes/types/query-params
    notes/types/sort-order
    shared-kernel/entities/common-entity
    shared-kernel/entities/file-entity
    shared-kernel/errors/error-classes
    shared-kernel/events/base-domain-event
    shared-kernel/events/domain-event.interface
    shared-kernel/events/payload-types
    shared-kernel/events/system-error-event
    shared-kernel/events/system-warning-event
    shared-kernel/repositories/batch-command-repository.interface
    shared-kernel/services/entity-factory
    shared-kernel/services/id-generator
    shared-kernel/services/storage-service.interface
    shared-kernel/services/url-validation
    shared-kernel/types/query-options
    shared-kernel/types/search-types