Designed for cross-module consumption
Pure data containers without business logic
Full TypeScript integration with runtime validation
Embeddable within larger domain models
{domain}/lib/
└── __scalar/ # Special scalar directory
├── _server.ts # Module registration
└── [scalarName]/ # camelCase scalar name
├── [name].constant.ts # Schema definition
├── [name].dictionary.ts # I18n translations
└── [name].document.ts # Method extensions (optional)
file-responsibility | Description |
---|---|
`*.constant.ts` | Defines schema with `@Model.Scalar` and `@Field.Prop` decorators |
`*.dictionary.ts` | Provides internationalization with `ModelDictionary<Type>` |
`*.document.ts` | Extends functionality with custom methods using `by()` decorator |
Defines schema with `@Model.Scalar` and `@Field.Prop` decorators
Provides internationalization with `ModelDictionary<Type>`
Extends functionality with custom methods using `by()` decorator
naming-convention | Description | Example |
---|---|---|
Scalar Directory | `camelCase` |
|
Constant File | `[name].constant.ts` |
|
Dictionary File | `[name].dictionary.ts` |
|
Document File | `[name].document.ts` |
|
Scalar Class | `PascalCase` |
|
Enum Values | `camelCase` |
|
Dictionary Keys | `kebab-case` prefixes |
|
`camelCase`
`geoLocation`
`[name].constant.ts`
`geoLocation.constant.ts`
`[name].dictionary.ts`
`geoLocation.dictionary.ts`
`[name].document.ts`
`geoLocation.document.ts`
`PascalCase`
`GeoLocation`
`camelCase`
`highAccuracy`
`kebab-case` prefixes
`desc-fieldName`
Schema definition with typed fields and validation
I18n translations for model metadata, fields and enums
Optional method extensions for data transformations
Aggregate and expose scalars through `_server.ts`
Design for maximum reusability across modules
Keep scalars focused and lightweight
Use immutable fields for invariant data
Provide complete I18n coverage in dictionaries
Add document methods only for data transformations
Validate fields with options (min/max, minlength/maxlength)
Embedded as value objects
Auto-generated types and enums
Runtime type checking through decorators
Consistent terminology via dictionaries
Shared request/response payloads