@breadstone/archipel-mcp 0.0.54 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/guides/ai-image-generation.md +101 -0
- package/data/guides/ai-realtime-voice.md +85 -473
- package/data/guides/ai-text-generation.md +98 -635
- package/data/guides/health-indicators.md +67 -66
- package/data/guides/index.md +2 -1
- package/data/guides/intelligence-prompts-warm-up.md +81 -312
- package/data/packages/platform-intelligence/api/Class.AnthropicIntelligenceProviderAdapter.md +122 -0
- package/data/packages/platform-intelligence/api/Class.GatewayIntelligenceProviderAdapter.md +122 -0
- package/data/packages/platform-intelligence/api/Class.GoogleIntelligenceProviderAdapter.md +122 -0
- package/data/packages/platform-intelligence/api/Class.GrokIntelligenceProviderAdapter.md +122 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceAgent.md +95 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceAgentFactory.md +11 -23
- package/data/packages/platform-intelligence/api/Class.IntelligenceEmbeddingGenerator.md +25 -21
- package/data/packages/platform-intelligence/api/Class.IntelligenceHealthIndicator.md +15 -10
- package/data/packages/platform-intelligence/api/Class.IntelligenceImageGenerator.md +117 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceLanguageGenerator.md +159 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceModule.md +2 -2
- package/data/packages/platform-intelligence/api/Class.IntelligencePromptExecutor.md +6 -6
- package/data/packages/platform-intelligence/api/Class.IntelligencePromptPolicyPort.md +1 -1
- package/data/packages/platform-intelligence/api/Class.IntelligenceProviderAdapterPort.md +104 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceProviderAssetUploader.md +21 -15
- package/data/packages/platform-intelligence/api/Class.IntelligenceProviderDiagnostics.md +55 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceProviderError.md +14 -4
- package/data/packages/platform-intelligence/api/Class.IntelligenceProviderRegistry.md +68 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceRealtimeError.md +9 -9
- package/data/packages/platform-intelligence/api/Class.IntelligenceRealtimeMeteringPort.md +1 -1
- package/data/packages/platform-intelligence/api/Class.IntelligenceRealtimeSessionFactory.md +8 -8
- package/data/packages/platform-intelligence/api/Class.IntelligenceRealtimeSessionPort.md +18 -18
- package/data/packages/platform-intelligence/api/Class.IntelligenceReranker.md +58 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceSpeechGenerator.md +117 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceToolBase.md +14 -16
- package/data/packages/platform-intelligence/api/Class.IntelligenceToolRegistry.md +14 -18
- package/data/packages/platform-intelligence/api/Class.IntelligenceTranscriptionGenerator.md +139 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceVideoGenerator.md +117 -0
- package/data/packages/platform-intelligence/api/Class.MiMoIntelligenceProviderAdapter.md +122 -0
- package/data/packages/platform-intelligence/api/Class.OpenAIIntelligenceProviderAdapter.md +122 -0
- package/data/packages/platform-intelligence/api/Function.createAnthropicAdvisor20260301Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicBash20241022Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicBash20250124Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicCodeExecution20250522Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicCodeExecution20250825Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicCodeExecution20260120Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicComputer20241022Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicComputer20250124Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicComputer20251124Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicMemory20250818Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicTextEditor20241022Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicTextEditor20250124Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicTextEditor20250429Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicTextEditor20250728Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicToolSearchBM2520251119Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicToolSearchRegex20251119Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicWebFetch20250910Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicWebFetch20260209Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicWebSearch20250305Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createAnthropicWebSearch20260209Tool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleCodeExecutionTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleEnterpriseWebSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleFileSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleGoogleMapsTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleGoogleSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleUrlContextTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGoogleVertexRagStoreTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokCodeExecutionTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokFileSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokMcpServerTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokViewImageTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokViewXVideoTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokWebSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createGrokXSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createIntelligenceJsonSchema.md +31 -0
- package/data/packages/platform-intelligence/api/Function.createIntelligenceTool.md +2 -2
- package/data/packages/platform-intelligence/api/Function.createMimoCustomTool.md +5 -5
- package/data/packages/platform-intelligence/api/Function.createOpenAIApplyPatchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAICodeInterpreterTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAICustomTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIFileSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIImageGenerationTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAILocalShellTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIMcpTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIShellTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIToolSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIWebSearchPreviewTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.createOpenAIWebSearchTool.md +1 -1
- package/data/packages/platform-intelligence/api/Function.defineIntelligenceTool.md +31 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceAgentConfiguration.md +70 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceEmbeddingBatchOptions.md +140 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceEmbeddingBatchResult.md +70 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceEmbeddingOptions.md +130 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceEmbeddingResult.md +70 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceFileUploadOptions.md +118 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceFileUploadResult.md +60 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceGeneratedFile.md +40 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceGenerationStepStartEvent.md +50 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceImageGenerationOptions.md +186 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceImageGenerationResult.md +60 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceLanguageCompletion.md +141 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceLanguageGenerationOptions.md +250 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceLanguageStream.md +50 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceModelReference.md +34 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceModelRequestOptions.md +72 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceModelStatus.md +30 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceModuleOptions.md +54 -26
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceObjectStream.md +56 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePrompt.md +50 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptDefinition.md +14 -14
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptEffectivePolicy.md +1 -1
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptExecutionPolicy.md +1 -1
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptExecutionResult.md +15 -27
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceProviderConfiguration.md +10 -10
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceProviderLoadRequest.md +54 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceProviderProbeResult.md +70 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceRealtimeModuleOptions.md +9 -21
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceRealtimeSessionOptions.md +23 -11
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceRealtimeUsage.md +174 -10
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceRequestOptions.md +114 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceRerankingOptions.md +156 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceRerankingResult.md +50 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceSkillUploadOptions.md +110 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceSkillUploadResult.md +80 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceSpeechGenerationOptions.md +180 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceSpeechGenerationResult.md +50 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceStreamingTranscriptionOptions.md +155 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTool.md +7 -10
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceToolCall.md +40 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceToolDefinition.md +91 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceToolExecutionEndEvent.md +50 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceToolExecutionStartEvent.md +30 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceToolRegistry.md +4 -4
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTranscriptionOptions.md +130 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTranscriptionResult.md +84 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTranscriptionStream.md +97 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceUsage.md +197 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceVideoGenerationOptions.md +245 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceVideoGenerationResult.md +50 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IIntelligenceModelMessage.md +43 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IIntelligencePromptModelRequirement.md +2 -2
- package/data/packages/platform-intelligence/api/TypeAlias.IIntelligenceSchema.md +70 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceCapability.md +14 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceDefaultModels.md +14 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceJsonValue.md +22 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligencePromptDefinitionConfiguration.md +2 -2
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligencePromptGenerationOptions.md +1 -1
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceProviderName.md +1 -1
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceProviderOptions.md +14 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceProviderProbeStatus.md +14 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceProviderToolOptions.md +17 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceRealtimeMeteringEvent.md +1 -1
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceRequestTimeouts.md +14 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceToolChoice.md +21 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceToolOutput.md +22 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceToolSet.md +14 -0
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceTranscriptionStreamPart.md +46 -0
- package/data/packages/platform-intelligence/api/Variable.AI_GATEWAY_API_KEY.md +14 -0
- package/data/packages/platform-intelligence/api/Variable.AI_GATEWAY_BASE_URL.md +14 -0
- package/data/packages/platform-intelligence/api/Variable.AI_GATEWAY_CONFIG_ENTRIES.md +14 -0
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_API_KEY.md +1 -1
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_BASE_URL.md +1 -1
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_MAX_OUTPUT_TOKENS.md +1 -1
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_MODEL.md +1 -1
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_PROVIDER.md +2 -2
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_TEMPERATURE.md +1 -1
- package/data/packages/platform-intelligence/api/Variable.INTELLIGENCE_TOP_P.md +1 -1
- package/data/packages/platform-intelligence/api/Variable.IntelligenceCapabilityNames.md +40 -0
- package/data/packages/platform-intelligence/api/Variable.IntelligenceProviderNames.md +2 -0
- package/data/packages/platform-intelligence/api/Variable.PLATFORM_INTELLIGENCE_CONFIG_ENTRIES.md +2 -2
- package/data/packages/platform-intelligence/api/index.md +83 -32
- package/data/packages/platform-intelligence/index.md +81 -622
- package/package.json +1 -1
- package/data/packages/index.md +0 -8
- package/data/packages/platform-analytics/index.md +0 -209
- package/data/packages/platform-authentication/index.md +0 -725
- package/data/packages/platform-blob-storage/index.md +0 -416
- package/data/packages/platform-bootstrap/index.md +0 -162
- package/data/packages/platform-caching/index.md +0 -167
- package/data/packages/platform-configuration/index.md +0 -226
- package/data/packages/platform-core/index.md +0 -504
- package/data/packages/platform-cryptography/index.md +0 -142
- package/data/packages/platform-database/index.md +0 -337
- package/data/packages/platform-documents/index.md +0 -255
- package/data/packages/platform-esigning/index.md +0 -710
- package/data/packages/platform-feature-flags/index.md +0 -103
- package/data/packages/platform-health/index.md +0 -141
- package/data/packages/platform-intelligence/api/Class.IntelligenceMediaGenerator.md +0 -118
- package/data/packages/platform-intelligence/api/Class.IntelligenceStructuredGenerator.md +0 -70
- package/data/packages/platform-intelligence/api/Class.IntelligenceTelemetryRegistry.md +0 -44
- package/data/packages/platform-intelligence/api/Class.IntelligenceTextGenerator.md +0 -138
- package/data/packages/platform-intelligence/api/Function.createProviderOptions.md +0 -39
- package/data/packages/platform-intelligence/api/Function.loadAnthropicLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadGoogleLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadGoogleRealtimeModel.md +0 -25
- package/data/packages/platform-intelligence/api/Function.loadGrokLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadGrokRealtimeModel.md +0 -25
- package/data/packages/platform-intelligence/api/Function.loadMimoLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadOpenAILanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadOpenAIRealtimeModel.md +0 -25
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCompletionUsage.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextCompletion.md +0 -180
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerationOptions.md +0 -144
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerator.md +0 -78
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextStreamingOptions.md +0 -170
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceLanguageModelLoader.md +0 -24
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceLanguageModelLoaders.md +0 -14
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceRealtimeModelLoader.md +0 -25
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceRealtimeModelLoaders.md +0 -14
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceTextStream.md +0 -14
- package/data/packages/platform-logging/index.md +0 -150
- package/data/packages/platform-mailing/index.md +0 -470
- package/data/packages/platform-mapping/index.md +0 -123
- package/data/packages/platform-mcp/index.md +0 -335
- package/data/packages/platform-openapi/index.md +0 -207
- package/data/packages/platform-payments/index.md +0 -610
- package/data/packages/platform-queue/index.md +0 -192
- package/data/packages/platform-reporting/index.md +0 -233
- package/data/packages/platform-resources/index.md +0 -137
- package/data/packages/platform-telemetry/index.md +0 -262
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: platform-database
|
|
3
|
-
description: Prisma ORM integration with PostgreSQL, repository pattern, query abstraction, and pagination.
|
|
4
|
-
order: 5
|
|
5
|
-
tags: [database, prisma, postgresql, repository, queries, pagination, health]
|
|
6
|
-
package: '@breadstone/archipel-platform-database'
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# platform-database
|
|
10
|
-
|
|
11
|
-
Prisma ORM integration with PostgreSQL featuring a repository base class, type-safe query pattern, transactional support, and cursor-based pagination.
|
|
12
|
-
|
|
13
|
-
**Package:** `@breadstone/archipel-platform-database`
|
|
14
|
-
|
|
15
|
-
<InstallTabs />
|
|
16
|
-
|
|
17
|
-
## Quick Start
|
|
18
|
-
|
|
19
|
-
```typescript
|
|
20
|
-
import { Module } from '@nestjs/common';
|
|
21
|
-
import { ConfigModule } from '@breadstone/archipel-platform-core';
|
|
22
|
-
import { DatabaseModule, PLATFORM_DATABASE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-database';
|
|
23
|
-
|
|
24
|
-
@Module({
|
|
25
|
-
imports: [
|
|
26
|
-
ConfigModule.register('database', PLATFORM_DATABASE_CONFIG_ENTRIES),
|
|
27
|
-
|
|
28
|
-
// Global registration (recommended)
|
|
29
|
-
DatabaseModule.forRoot(),
|
|
30
|
-
|
|
31
|
-
// Feature-scoped registration
|
|
32
|
-
DatabaseModule.register(),
|
|
33
|
-
],
|
|
34
|
-
})
|
|
35
|
-
export class AppModule {}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Module Configuration
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
interface IDatabaseModuleConfig {
|
|
44
|
-
accelerateUrl?: string; // Prisma Accelerate URL (overrides DB_ACCELERATE_URL env var)
|
|
45
|
-
middlewares?: Array<unknown>; // Future extension point
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Global setup
|
|
49
|
-
DatabaseModule.forRoot(config?: IDatabaseModuleConfig): DynamicModule
|
|
50
|
-
|
|
51
|
-
// Feature-scoped
|
|
52
|
-
DatabaseModule.register(config?: IDatabaseModuleConfig): DynamicModule
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Config Keys
|
|
56
|
-
|
|
57
|
-
Register all database config keys with `PLATFORM_DATABASE_CONFIG_ENTRIES`:
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
import { ConfigModule } from '@breadstone/archipel-platform-core';
|
|
61
|
-
import { PLATFORM_DATABASE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-database';
|
|
62
|
-
|
|
63
|
-
ConfigModule.register('database', PLATFORM_DATABASE_CONFIG_ENTRIES);
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Environment Variables
|
|
67
|
-
|
|
68
|
-
| Variable | Description | Required | Default |
|
|
69
|
-
| --------------------- | ----------------------------------------- | ------------------- | ------- |
|
|
70
|
-
| `DATABASE_URL` | PostgreSQL connection string | Yes | — |
|
|
71
|
-
| `DB_ACCELERATE_URL` | Prisma Accelerate proxy URL | No | `''` |
|
|
72
|
-
| `DB_AUTO_CONNECTION` | Auto-connect on module init | No | `true` |
|
|
73
|
-
| `DB_OPTIMIZE` | Enable Prisma Optimize query analysis | No | `true` |
|
|
74
|
-
| `DB_OPTIMIZE_API_KEY` | API key for the Prisma Optimize dashboard | If optimize enabled | `''` |
|
|
75
|
-
|
|
76
|
-
> **Accelerate resolution order:** `accelerateUrl` module parameter → `DB_ACCELERATE_URL` environment variable → no Accelerate.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Repository Pattern
|
|
81
|
-
|
|
82
|
-
### RepositoryBase
|
|
83
|
-
|
|
84
|
-
All repositories extend `RepositoryBase`, which provides the `execute()` method for running typed queries.
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
import { Injectable } from '@nestjs/common';
|
|
88
|
-
import { RepositoryBase, DatabaseService } from '@breadstone/archipel-platform-database';
|
|
89
|
-
import type { Prisma } from '@prisma/client';
|
|
90
|
-
|
|
91
|
-
@Injectable()
|
|
92
|
-
export class OrderRepository extends RepositoryBase<Prisma.OrderDelegate, Prisma.OrderFindManyArgs, unknown> {
|
|
93
|
-
constructor(database: DatabaseService) {
|
|
94
|
-
super(database, database.order);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### Query Pattern
|
|
100
|
-
|
|
101
|
-
Queries are first-class objects that encapsulate data access logic:
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
import { query, type IRepositoryQuery } from '@breadstone/archipel-platform-database';
|
|
105
|
-
import type { Prisma } from '@prisma/client';
|
|
106
|
-
|
|
107
|
-
// Define a query
|
|
108
|
-
export const findOrdersByUser = (userId: string) =>
|
|
109
|
-
query<Prisma.OrderDelegate, IOrderEntity[]>('findOrdersByUser', async (model) => {
|
|
110
|
-
return model.findMany({
|
|
111
|
-
where: { userId },
|
|
112
|
-
orderBy: { createdAt: 'desc' },
|
|
113
|
-
select: {
|
|
114
|
-
id: true,
|
|
115
|
-
status: true,
|
|
116
|
-
total: true,
|
|
117
|
-
createdAt: true,
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
// Define another query
|
|
123
|
-
export const findOrderById = (orderId: string) =>
|
|
124
|
-
query<Prisma.OrderDelegate, IOrderEntity | null>('findOrderById', async (model) => {
|
|
125
|
-
return model.findUnique({
|
|
126
|
-
where: { id: orderId },
|
|
127
|
-
include: { items: true },
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Executing Queries
|
|
133
|
-
|
|
134
|
-
```typescript
|
|
135
|
-
@Injectable()
|
|
136
|
-
export class OrderService {
|
|
137
|
-
constructor(private readonly _orderRepository: OrderRepository) {}
|
|
138
|
-
|
|
139
|
-
public async getOrdersByUser(userId: string): Promise<IOrderEntity[]> {
|
|
140
|
-
return this._orderRepository.execute(findOrdersByUser(userId));
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
public async getOrder(orderId: string): Promise<IOrderEntity | null> {
|
|
144
|
-
return this._orderRepository.execute(findOrderById(orderId));
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Transactional Queries
|
|
150
|
-
|
|
151
|
-
For multi-model writes, use `transactionalQuery`:
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
import { transactionalQuery } from '@breadstone/archipel-platform-database';
|
|
155
|
-
|
|
156
|
-
export const createOrderWithItems = (
|
|
157
|
-
userId: string,
|
|
158
|
-
items: Array<{ productId: string; quantity: number; price: number }>,
|
|
159
|
-
) =>
|
|
160
|
-
transactionalQuery<IOrderEntity>('createOrderWithItems', async (tx) => {
|
|
161
|
-
const order = await tx.order.create({
|
|
162
|
-
data: {
|
|
163
|
-
userId,
|
|
164
|
-
status: 'pending',
|
|
165
|
-
total: items.reduce((sum, i) => sum + i.price * i.quantity, 0),
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
await tx.orderItem.createMany({
|
|
170
|
-
data: items.map((item) => ({
|
|
171
|
-
orderId: order.id,
|
|
172
|
-
productId: item.productId,
|
|
173
|
-
quantity: item.quantity,
|
|
174
|
-
unitPrice: item.price,
|
|
175
|
-
})),
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
return order;
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
// Execute in a repository
|
|
182
|
-
const order = await this._orderRepository.executeTransactional(createOrderWithItems(userId, items));
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## Database Services
|
|
188
|
-
|
|
189
|
-
### PrismaService
|
|
190
|
-
|
|
191
|
-
Extended `PrismaClient` with Prisma Optimize support:
|
|
192
|
-
|
|
193
|
-
```typescript
|
|
194
|
-
import { PrismaService } from '@breadstone/archipel-platform-database';
|
|
195
|
-
|
|
196
|
-
// Typically injected via DatabaseModule, not used directly
|
|
197
|
-
@Injectable()
|
|
198
|
-
export class MyService {
|
|
199
|
-
constructor(private readonly _prisma: PrismaService) {}
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### DatabaseService
|
|
204
|
-
|
|
205
|
-
High-level database operations extending `PrismaService`:
|
|
206
|
-
|
|
207
|
-
```typescript
|
|
208
|
-
import { DatabaseService } from '@breadstone/archipel-platform-database';
|
|
209
|
-
|
|
210
|
-
@Injectable()
|
|
211
|
-
export class TransferService {
|
|
212
|
-
constructor(private readonly _db: DatabaseService) {}
|
|
213
|
-
|
|
214
|
-
public async transfer(fromId: string, toId: string, amount: number): Promise<void> {
|
|
215
|
-
await this._db.transactionCallback(async (tx) => {
|
|
216
|
-
await tx.account.update({
|
|
217
|
-
where: { id: fromId },
|
|
218
|
-
data: { balance: { decrement: amount } },
|
|
219
|
-
});
|
|
220
|
-
await tx.account.update({
|
|
221
|
-
where: { id: toId },
|
|
222
|
-
data: { balance: { increment: amount } },
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
## Pagination
|
|
232
|
-
|
|
233
|
-
Cursor-based pagination utility:
|
|
234
|
-
|
|
235
|
-
```typescript
|
|
236
|
-
import { paginator, type IPaginatedResult } from '@breadstone/archipel-platform-database';
|
|
237
|
-
|
|
238
|
-
const paginate = paginator({ perPage: 20 });
|
|
239
|
-
|
|
240
|
-
@Injectable()
|
|
241
|
-
export class ProductService {
|
|
242
|
-
constructor(private readonly _prisma: PrismaService) {}
|
|
243
|
-
|
|
244
|
-
public async listProducts(page: number): Promise<IPaginatedResult<IProductEntity>> {
|
|
245
|
-
return paginate<IProductEntity>(
|
|
246
|
-
this._prisma.product,
|
|
247
|
-
{ where: { isActive: true }, orderBy: { name: 'asc' } },
|
|
248
|
-
{ page, perPage: 20 },
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### IPaginatedResult
|
|
255
|
-
|
|
256
|
-
```typescript
|
|
257
|
-
interface IPaginatedResult<T> {
|
|
258
|
-
data: T[];
|
|
259
|
-
meta: {
|
|
260
|
-
total: number; // Total matching records
|
|
261
|
-
lastPage: number; // Last page number
|
|
262
|
-
currentPage: number; // Current page
|
|
263
|
-
perPage: number; // Items per page
|
|
264
|
-
prev: number | null; // Previous page (null if first)
|
|
265
|
-
next: number | null; // Next page (null if last)
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
## Entity Models
|
|
273
|
-
|
|
274
|
-
Domain entities are defined as interfaces under `models/entities/`. They mirror the Prisma schema and serve as the type contract between repositories and services.
|
|
275
|
-
|
|
276
|
-
```typescript
|
|
277
|
-
// Property names MUST match Prisma schema exactly
|
|
278
|
-
interface IOrderEntity {
|
|
279
|
-
readonly id: string;
|
|
280
|
-
readonly userId: string;
|
|
281
|
-
readonly status: string;
|
|
282
|
-
readonly total: number;
|
|
283
|
-
readonly createdAt: Date;
|
|
284
|
-
readonly updatedAt: Date;
|
|
285
|
-
}
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
### Rules
|
|
289
|
-
|
|
290
|
-
- Entity properties match Prisma schema property names exactly.
|
|
291
|
-
- Entities are pure data — no methods or business logic.
|
|
292
|
-
- Entities reference only other entity interfaces or primitives.
|
|
293
|
-
- One entity interface per file.
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
## Health Check
|
|
298
|
-
|
|
299
|
-
The `DatabaseHealthIndicator` verifies database connectivity via a Prisma ping (`SELECT 1`). Import it from the `/health` subpath:
|
|
300
|
-
|
|
301
|
-
```typescript
|
|
302
|
-
import { DatabaseHealthIndicator } from '@breadstone/archipel-platform-database/health';
|
|
303
|
-
import { HealthModule } from '@breadstone/archipel-platform-health';
|
|
304
|
-
|
|
305
|
-
@Module({
|
|
306
|
-
imports: [
|
|
307
|
-
DatabaseModule,
|
|
308
|
-
HealthModule.withIndicators([DatabaseHealthIndicator]),
|
|
309
|
-
],
|
|
310
|
-
})
|
|
311
|
-
export class AppModule {}
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
| Key | Check | Dependencies |
|
|
315
|
-
| --- | ----- | ------------ |
|
|
316
|
-
| `database` | Prisma `SELECT 1` ping | `PrismaHealthIndicator`, `DatabaseService` |
|
|
317
|
-
|
|
318
|
-
---
|
|
319
|
-
|
|
320
|
-
## Exports Summary
|
|
321
|
-
|
|
322
|
-
| Export | Type | Description |
|
|
323
|
-
| ---------------------------------- | -------------- | ---------------------------------------- |
|
|
324
|
-
| `DatabaseModule` | NestJS Module | `forRoot()` / `register()` |
|
|
325
|
-
| `DatabaseService` | Service | Extended Prisma client with transactions |
|
|
326
|
-
| `PrismaService` | Service | Prisma client with extensions |
|
|
327
|
-
| `RepositoryBase` | Abstract class | Base class for repositories |
|
|
328
|
-
| `query()` | Factory | Create typed query objects |
|
|
329
|
-
| `transactionalQuery()` | Factory | Create transactional query objects |
|
|
330
|
-
| `paginator()` | Factory | Create pagination helper |
|
|
331
|
-
| `DatabaseHealthIndicator` | Health | PostgreSQL health check (`/health` subpath) |
|
|
332
|
-
| `PLATFORM_DATABASE_CONFIG_ENTRIES` | Constant | Config entries for `ConfigModule` |
|
|
333
|
-
| `DB_ACCELERATE_URL` | Config Key | Prisma Accelerate URL |
|
|
334
|
-
| `DB_AUTO_CONNECTION` | Config Key | Auto-connect toggle |
|
|
335
|
-
| `DB_OPTIMIZE` | Config Key | Prisma Optimize toggle |
|
|
336
|
-
| `DB_OPTIMIZE_API_KEY` | Config Key | Prisma Optimize API key |
|
|
337
|
-
| `DB` (Prisma) | Namespace | Re-exported Prisma types |
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: platform-documents
|
|
3
|
-
description: Document generation engine supporting DOCX and PDF with template-based rendering.
|
|
4
|
-
order: 9
|
|
5
|
-
tags: [documents, docx, pdf, templates, generation, rendering]
|
|
6
|
-
package: '@breadstone/archipel-platform-documents'
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# platform-documents
|
|
10
|
-
|
|
11
|
-
Template-based document generation engine supporting DOCX and PDF output. Uses pluggable renderers and template parsers with image processing via Sharp.
|
|
12
|
-
|
|
13
|
-
**Package:** `@breadstone/archipel-platform-documents`
|
|
14
|
-
|
|
15
|
-
<InstallTabs />
|
|
16
|
-
|
|
17
|
-
## Quick Start
|
|
18
|
-
|
|
19
|
-
```typescript
|
|
20
|
-
import { Module } from '@nestjs/common';
|
|
21
|
-
import { DocumentModule } from '@breadstone/archipel-platform-documents';
|
|
22
|
-
import { SharpImageProcessor } from '@breadstone/archipel-platform-documents/sharp';
|
|
23
|
-
import { DocxDocumentRenderer2 } from '@breadstone/archipel-platform-documents/docx';
|
|
24
|
-
import { PdfDocumentRenderer } from '@breadstone/archipel-platform-documents/pdf';
|
|
25
|
-
|
|
26
|
-
@Module({
|
|
27
|
-
imports: [
|
|
28
|
-
DocumentModule.forRoot({
|
|
29
|
-
imageProcessor: SharpImageProcessor,
|
|
30
|
-
renderers: [DocxDocumentRenderer2, PdfDocumentRenderer],
|
|
31
|
-
maxImageWidth: 1920,
|
|
32
|
-
maxImageHeight: 1080,
|
|
33
|
-
delimiters: { start: '[[', end: ']]' },
|
|
34
|
-
debug: false,
|
|
35
|
-
}),
|
|
36
|
-
],
|
|
37
|
-
})
|
|
38
|
-
export class AppModule {}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Module Configuration
|
|
44
|
-
|
|
45
|
-
### IDocumentModuleOptions
|
|
46
|
-
|
|
47
|
-
| Property | Type | Default | Description |
|
|
48
|
-
| ------------------ | ----------------------------- | ------- | ------------------------------------------------------------------------- |
|
|
49
|
-
| `imageProcessor` | `Type<IImageProcessor>` | — | **Required.** Image processor class (e.g. `SharpImageProcessor`) |
|
|
50
|
-
| `renderers` | `Type<IDocumentRenderer>[]` | — | **Required.** Renderer classes (e.g. `[DocxDocumentRenderer2, PdfDocumentRenderer]`) |
|
|
51
|
-
| `maxImageWidth` | `number` | `1920` | Maximum width for embedded images |
|
|
52
|
-
| `maxImageHeight` | `number` | `1080` | Maximum height for embedded images |
|
|
53
|
-
| `delimiters.start` | `string` | `'[['` | Template variable start delimiter |
|
|
54
|
-
| `delimiters.end` | `string` | `']]'` | Template variable end delimiter |
|
|
55
|
-
| `debug` | `boolean` | `false` | Enable debug output |
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## DocumentEngine
|
|
60
|
-
|
|
61
|
-
Main orchestrator for document rendering. Emits debug-level logs for document format detection and renderer initialization to aid troubleshooting.
|
|
62
|
-
|
|
63
|
-
### Render from Template
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
import { DocumentEngine } from '@breadstone/archipel-platform-documents';
|
|
67
|
-
|
|
68
|
-
@Injectable()
|
|
69
|
-
export class InvoiceService {
|
|
70
|
-
constructor(private readonly _docEngine: DocumentEngine) {}
|
|
71
|
-
|
|
72
|
-
public async generateInvoice(data: IInvoiceData): Promise<Buffer> {
|
|
73
|
-
const result = await this._docEngine.render({
|
|
74
|
-
templateId: 'invoice-template',
|
|
75
|
-
data: {
|
|
76
|
-
invoiceNumber: data.number,
|
|
77
|
-
customerName: data.customerName,
|
|
78
|
-
items: data.items.map((item) => ({
|
|
79
|
-
description: item.description,
|
|
80
|
-
qty: item.quantity,
|
|
81
|
-
unitPrice: `€${item.unitPrice.toFixed(2)}`,
|
|
82
|
-
total: `€${(item.quantity * item.unitPrice).toFixed(2)}`,
|
|
83
|
-
})),
|
|
84
|
-
subtotal: `€${data.subtotal.toFixed(2)}`,
|
|
85
|
-
tax: `€${data.tax.toFixed(2)}`,
|
|
86
|
-
total: `€${data.total.toFixed(2)}`,
|
|
87
|
-
date: new Date().toLocaleDateString('de-DE'),
|
|
88
|
-
},
|
|
89
|
-
templateFormat: 'docx',
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
return result.buffer;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Render from Buffer
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
const templateBuffer = await fs.readFile('./templates/contract.docx');
|
|
101
|
-
|
|
102
|
-
const result = await this._docEngine.render({
|
|
103
|
-
templateBuffer,
|
|
104
|
-
data: { clientName: 'Acme Corp', startDate: '2025-01-01' },
|
|
105
|
-
templateFormat: 'docx',
|
|
106
|
-
});
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Templates with Images
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
const result = await this._docEngine.render({
|
|
113
|
-
templateId: 'report-with-charts',
|
|
114
|
-
data: {
|
|
115
|
-
title: 'Q4 Report',
|
|
116
|
-
summary: 'Revenue increased by 23%.',
|
|
117
|
-
},
|
|
118
|
-
images: [
|
|
119
|
-
{
|
|
120
|
-
tag: 'revenueChart', // Matches [[revenueChart]] in template
|
|
121
|
-
buffer: chartImageBuffer,
|
|
122
|
-
contentType: 'image/png',
|
|
123
|
-
width: 800,
|
|
124
|
-
height: 400,
|
|
125
|
-
},
|
|
126
|
-
],
|
|
127
|
-
templateFormat: 'docx',
|
|
128
|
-
});
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Document Renderers
|
|
134
|
-
|
|
135
|
-
### DOCX Renderer
|
|
136
|
-
|
|
137
|
-
Renders DOCX (Microsoft Word) documents using `docxtemplater`:
|
|
138
|
-
|
|
139
|
-
- Variable substitution: `[[variableName]]`
|
|
140
|
-
- Loops: `[[#items]][[name]] - [[price]][[/items]]`
|
|
141
|
-
- Conditionals: `[[#if showDiscount]]...[[/if]]`
|
|
142
|
-
- Image placeholders: `[[imageName]]`
|
|
143
|
-
|
|
144
|
-
### PDF Renderer
|
|
145
|
-
|
|
146
|
-
Renders PDF documents using `pdf-lib`:
|
|
147
|
-
|
|
148
|
-
- Text substitution in PDF form fields
|
|
149
|
-
- Image insertion
|
|
150
|
-
- Page manipulation
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Image Processing
|
|
155
|
-
|
|
156
|
-
### SharpImageProcessor
|
|
157
|
-
|
|
158
|
-
Resizes and optimizes images before embedding in documents:
|
|
159
|
-
|
|
160
|
-
```typescript
|
|
161
|
-
import { SharpImageProcessor } from '@breadstone/archipel-platform-documents';
|
|
162
|
-
|
|
163
|
-
// Used internally by DocumentEngine
|
|
164
|
-
// Respects maxImageWidth and maxImageHeight from module options
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
Supported formats: PNG, JPEG, WebP, TIFF, AVIF.
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Real-World Example: Contract Generator
|
|
172
|
-
|
|
173
|
-
```typescript
|
|
174
|
-
@Controller('api/v1/contracts')
|
|
175
|
-
export class ContractController {
|
|
176
|
-
constructor(
|
|
177
|
-
private readonly _docEngine: DocumentEngine,
|
|
178
|
-
private readonly _blobService: BlobService,
|
|
179
|
-
) {}
|
|
180
|
-
|
|
181
|
-
@Post(':id/generate')
|
|
182
|
-
public async generate(@Param('id') contractId: string, @Res() res: Response): Promise<void> {
|
|
183
|
-
const contract = await this._contractService.findById(contractId);
|
|
184
|
-
|
|
185
|
-
const result = await this._docEngine.render({
|
|
186
|
-
templateId: 'service-agreement',
|
|
187
|
-
data: {
|
|
188
|
-
clientName: contract.clientName,
|
|
189
|
-
startDate: contract.startDate.toLocaleDateString('de-DE'),
|
|
190
|
-
endDate: contract.endDate.toLocaleDateString('de-DE'),
|
|
191
|
-
monthlyFee: `€${contract.monthlyFee.toFixed(2)}`,
|
|
192
|
-
services: contract.services,
|
|
193
|
-
},
|
|
194
|
-
templateFormat: 'docx',
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
// Optionally store in blob storage
|
|
198
|
-
await this._blobService.uploadFile(
|
|
199
|
-
`contracts/${contractId}/${result.name}`,
|
|
200
|
-
result.buffer,
|
|
201
|
-
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
res.set({
|
|
205
|
-
'Content-Type': result.contentType,
|
|
206
|
-
'Content-Disposition': `attachment; filename="${result.name}"`,
|
|
207
|
-
});
|
|
208
|
-
res.send(result.buffer);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## Error Handling
|
|
216
|
-
|
|
217
|
-
The library provides a hierarchy of domain error classes for structured error handling:
|
|
218
|
-
|
|
219
|
-
| Error class | Base class | When thrown |
|
|
220
|
-
| -------------------------- | --------------- | ------------------------------------------------- |
|
|
221
|
-
| `DocumentError` | `Error` | Base class for all document errors |
|
|
222
|
-
| `DocumentRenderError` | `DocumentError` | Template rendering failures (DOCX, PDF) |
|
|
223
|
-
| `DocumentValidationError` | `DocumentError` | Invalid templates, missing placeholders |
|
|
224
|
-
| `ImageProcessingError` | `DocumentError` | Image resize/conversion failures (Sharp) |
|
|
225
|
-
|
|
226
|
-
```typescript
|
|
227
|
-
import {
|
|
228
|
-
DocumentRenderError,
|
|
229
|
-
DocumentValidationError,
|
|
230
|
-
ImageProcessingError,
|
|
231
|
-
} from '@breadstone/archipel-platform-documents';
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
All errors extend `DocumentError`, so a single `catch (error instanceof DocumentError)` handles any document-related failure.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Exports Summary
|
|
239
|
-
|
|
240
|
-
| Export | Type | Description |
|
|
241
|
-
| ---------------------- | -------------- | ----------------------------------------- |
|
|
242
|
-
| `DocumentModule` | NestJS Module | `forRoot()` configuration |
|
|
243
|
-
| `DocumentEngine` | Service | Main rendering orchestrator |
|
|
244
|
-
| `BaseDocumentRenderer` | Abstract class | Renderer base |
|
|
245
|
-
| `IDocumentRenderer` | Interface | Renderer contract |
|
|
246
|
-
| `SharpImageProcessor` | Service | Image resize/optimization |
|
|
247
|
-
| `IImageProcessor` | Interface | Image processor contract |
|
|
248
|
-
| `DocumentFormat` | Enum | `'docx'` / `'pdf'` |
|
|
249
|
-
| `TemplateFormat` | Enum | Template format identifiers |
|
|
250
|
-
| `IRenderResult` | Interface | Render output (buffer, name, contentType) |
|
|
251
|
-
| `IDocumentProbeReport` | Interface | Template validation report |
|
|
252
|
-
| `DocumentError` | Error class | Base document error |
|
|
253
|
-
| `DocumentRenderError` | Error class | Render failure error |
|
|
254
|
-
| `DocumentValidationError` | Error class | Validation failure error |
|
|
255
|
-
| `ImageProcessingError` | Error class | Image processing failure error |
|