@breadstone/archipel-mcp 0.0.20 → 0.0.22
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-text-generation.md +10 -0
- package/data/guides/analytics-and-error-tracking.md +6 -0
- package/data/guides/cryptography-and-otp.md +20 -2
- package/data/guides/database-setup.md +4 -3
- package/data/guides/document-generation.md +26 -0
- package/data/guides/email-delivery.md +23 -0
- package/data/guides/email-templates.md +298 -0
- package/data/guides/esigning-integration.md +1 -1
- package/data/guides/getting-started.md +6 -6
- package/data/guides/index.md +1 -0
- package/data/guides/mcp-server.md +9 -0
- package/data/guides/payments-and-feature-gating.md +18 -0
- package/data/guides/resource-management.md +9 -9
- package/data/guides/telemetry-and-observability.md +7 -1
- package/data/packages/platform-analytics/api/Class.AppInsightsAnalyticsClient.md +55 -6
- package/data/packages/platform-analytics/api/Class.DatadogAnalyticsClient.md +32 -6
- package/data/packages/platform-analytics/api/Class.SentryAnalyticsClient.md +55 -6
- package/data/packages/platform-analytics/index.md +13 -0
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_PROVIDER_OPTIONS.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AZURE_BLOB_PROVIDER_OPTIONS.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.BLOB_PROVIDER.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.VERCEL_BLOB_PROVIDER_OPTIONS.md +1 -1
- package/data/packages/platform-core/api/Class.ErrorTemplateService.md +1 -1
- package/data/packages/platform-core/api/Class.EventHub.md +7 -7
- package/data/packages/platform-core/api/Class.HostService.md +1 -1
- package/data/packages/platform-core/api/Class.SseHub.md +29 -6
- package/data/packages/platform-core/api/Variable.ID_GENERATOR_TOKEN.md +1 -1
- package/data/packages/platform-core/api/index.md +0 -27
- package/data/packages/platform-core/index.md +8 -4
- package/data/packages/platform-cryptography/api/Class.BcryptService.md +4 -4
- package/data/packages/platform-cryptography/api/Class.CryptoService.md +3 -3
- package/data/packages/platform-cryptography/api/Class.OtpService.md +6 -6
- package/data/packages/platform-cryptography/api/Variable.BCRYPT_OPTIONS.md +2 -2
- package/data/packages/platform-cryptography/api/Variable.MAX_BCRYPT_PASSWORD_BYTES.md +1 -1
- package/data/packages/platform-cryptography/api/Variable.MIN_BCRYPT_ROUNDS.md +1 -1
- package/data/packages/platform-cryptography/api/Variable.OTP_OPTIONS.md +2 -2
- package/data/packages/platform-cryptography/api/Variable.OTP_SERVICE_TOKEN.md +2 -2
- package/data/packages/platform-cryptography/api/Variable.TOTP_EPOCH_TOLERANCE.md +1 -1
- package/data/packages/platform-cryptography/api/index.md +3 -3
- package/data/packages/platform-cryptography/index.md +10 -0
- package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +32 -1
- package/data/packages/platform-documents/api/Class.DocumentEngine.md +4 -4
- package/data/packages/platform-documents/api/Class.DocumentError.md +61 -0
- package/data/packages/platform-documents/api/Class.DocumentModule.md +2 -2
- package/data/packages/platform-documents/api/Class.DocumentRenderError.md +53 -0
- package/data/packages/platform-documents/api/Class.DocumentValidationError.md +52 -0
- package/data/packages/platform-documents/api/Class.DocxDocumentRenderer2.md +333 -0
- package/data/packages/platform-documents/api/Class.ImageProcessingError.md +53 -0
- package/data/packages/platform-documents/api/Class.PdfDocumentRenderer.md +355 -0
- package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +5 -5
- package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +31 -5
- package/data/packages/platform-documents/api/Variable.DOCUMENT_MODULE_OPTIONS.md +1 -1
- package/data/packages/platform-documents/api/Variable.DOCUMENT_PARSER_TOKEN.md +1 -1
- package/data/packages/platform-documents/api/Variable.DOCUMENT_RENDERER_TOKEN.md +1 -1
- package/data/packages/platform-documents/api/Variable.IMAGE_PROCESSOR_TOKEN.md +1 -1
- package/data/packages/platform-documents/api/index.md +6 -0
- package/data/packages/platform-documents/index.md +27 -0
- package/data/packages/platform-esigning/api/Class.EsigningClientPort.md +2 -2
- package/data/packages/platform-esigning/api/Class.InternalEsigningProvider.md +8 -8
- package/data/packages/platform-esigning/index.md +2 -0
- package/data/packages/platform-health/index.md +128 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistry.md +3 -3
- package/data/packages/platform-intelligence/api/Class.IntelligenceConfigurationError.md +50 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceTextGenerator.md +27 -4
- package/data/packages/platform-intelligence/api/Class.IntelligenceValidationError.md +50 -0
- package/data/packages/platform-intelligence/api/Function.loadProviderFactory.md +1 -1
- package/data/packages/platform-intelligence/api/index.md +2 -0
- package/data/packages/platform-intelligence/index.md +32 -0
- package/data/packages/platform-logging/api/Class.LoggerModule.md +1 -1
- package/data/packages/platform-logging/index.md +2 -0
- package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +0 -1
- package/data/packages/platform-mailing/api/Class.MailDeliveryError.md +65 -0
- package/data/packages/platform-mailing/api/Class.MailModule.md +1 -1
- package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +0 -5
- package/data/packages/platform-mailing/api/Variable.SMTP_CONFIG_ENTRIES.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_HOST.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_PASSWORD.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_PORT.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_SECURE.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_USER.md +14 -0
- package/data/packages/platform-mailing/api/index.md +7 -3
- package/data/packages/platform-mailing/index.md +29 -0
- package/data/packages/platform-mapping/index.md +121 -0
- package/data/packages/platform-mcp/api/Class.McpServerService.md +8 -8
- package/data/packages/platform-mcp/api/Variable.MCP_MODULE_OPTIONS.md +1 -1
- package/data/packages/platform-mcp/index.md +11 -0
- package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +4 -4
- package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +2 -2
- package/data/packages/platform-openapi/index.md +1 -1
- package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +6 -6
- package/data/packages/platform-payments/api/Class.MollieClient.md +6 -6
- package/data/packages/platform-payments/api/Class.PaddleClient.md +6 -6
- package/data/packages/platform-payments/api/Class.PaymentError.md +65 -0
- package/data/packages/platform-payments/api/Class.StripeClient.md +6 -6
- package/data/packages/platform-payments/api/index.md +1 -0
- package/data/packages/platform-payments/index.md +29 -0
- package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +1 -1
- package/data/packages/platform-reporting/index.md +3 -1
- package/data/packages/platform-resources/index.md +135 -0
- package/data/packages/platform-telemetry/api/Class.MetricsService.md +29 -3
- package/data/packages/platform-telemetry/api/Class.OtelSdkHolder.md +3 -2
- package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +6 -6
- package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +3 -3
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_ENABLED.md +1 -1
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_FACADE.md +1 -1
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_OPTIONS.md +1 -1
- package/data/packages/platform-telemetry/api/index.md +1 -1
- package/data/packages/platform-telemetry/index.md +3 -1
- package/{src/knowledge/configPattern.js → data/patterns/config-pattern.md} +44 -47
- package/{src/knowledge/dtoPattern.js → data/patterns/dto-pattern.md} +58 -61
- package/{src/knowledge/errorHandlingPattern.js → data/patterns/error-handling-pattern.md} +35 -38
- package/{src/knowledge/guardPattern.js → data/patterns/guard-pattern.md} +35 -38
- package/{src/knowledge/mappingPattern.js → data/patterns/mapping-pattern.md} +43 -144
- package/data/patterns/module-pattern.md +182 -0
- package/data/patterns/query-pattern.md +137 -0
- package/data/patterns/repository-pattern.md +208 -0
- package/{src/knowledge/testingPattern.js → data/patterns/testing-pattern.md} +37 -40
- package/package.json +1 -1
- package/src/PatternsLoader.d.ts +12 -0
- package/src/PatternsLoader.js +65 -0
- package/src/generators/mappingPatternGenerator.d.ts +5 -0
- package/src/generators/mappingPatternGenerator.js +107 -0
- package/src/generators/modulePatternGenerator.d.ts +5 -0
- package/src/generators/modulePatternGenerator.js +107 -0
- package/src/generators/queryPatternGenerator.d.ts +4 -0
- package/src/generators/queryPatternGenerator.js +83 -0
- package/src/generators/repositoryPatternGenerator.d.ts +5 -0
- package/src/generators/repositoryPatternGenerator.js +165 -0
- package/src/main.js +15 -9
- package/src/models/IPatternDoc.d.ts +15 -0
- package/src/models/IPatternDoc.js +3 -0
- package/src/tools/registerGetConfigPatternTool.d.ts +2 -1
- package/src/tools/registerGetConfigPatternTool.js +4 -3
- package/src/tools/registerGetDtoPatternTool.d.ts +2 -1
- package/src/tools/registerGetDtoPatternTool.js +4 -3
- package/src/tools/registerGetErrorHandlingPatternTool.d.ts +2 -1
- package/src/tools/registerGetErrorHandlingPatternTool.js +4 -3
- package/src/tools/registerGetGuardPatternTool.d.ts +2 -1
- package/src/tools/registerGetGuardPatternTool.js +4 -3
- package/src/tools/registerGetMappingPatternTool.d.ts +2 -1
- package/src/tools/registerGetMappingPatternTool.js +5 -4
- package/src/tools/registerGetModulePatternTool.d.ts +2 -1
- package/src/tools/registerGetModulePatternTool.js +5 -4
- package/src/tools/registerGetQueryPatternTool.d.ts +2 -1
- package/src/tools/registerGetQueryPatternTool.js +5 -4
- package/src/tools/registerGetRepositoryPatternTool.d.ts +2 -1
- package/src/tools/registerGetRepositoryPatternTool.js +5 -4
- package/src/tools/registerGetTestingPatternTool.d.ts +2 -1
- package/src/tools/registerGetTestingPatternTool.js +4 -3
- package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +0 -195
- package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +0 -215
- package/data/packages/platform-core/api/Class.FileResourceStrategy.md +0 -192
- package/data/packages/platform-core/api/Class.HealthModule.md +0 -42
- package/data/packages/platform-core/api/Class.HealthOrchestrator.md +0 -64
- package/data/packages/platform-core/api/Class.MappingBuilder.md +0 -110
- package/data/packages/platform-core/api/Class.MappingModule.md +0 -46
- package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +0 -56
- package/data/packages/platform-core/api/Class.MappingProfileBase.md +0 -52
- package/data/packages/platform-core/api/Class.MappingService.md +0 -284
- package/data/packages/platform-core/api/Class.ResourceManager.md +0 -565
- package/data/packages/platform-core/api/Class.ResourceModule.md +0 -46
- package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +0 -57
- package/data/packages/platform-core/api/Function.createMappingKey.md +0 -39
- package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +0 -28
- package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +0 -40
- package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +0 -72
- package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +0 -46
- package/data/packages/platform-core/api/Interface.IHealthIndicator.md +0 -41
- package/data/packages/platform-core/api/Interface.IMappingBuilder.md +0 -76
- package/data/packages/platform-core/api/Interface.IMappingKey.md +0 -58
- package/data/packages/platform-core/api/Interface.IMappingProfile.md +0 -32
- package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +0 -89
- package/data/packages/platform-core/api/Interface.IResourceMetadata.md +0 -94
- package/data/packages/platform-core/api/Interface.IResourceResult.md +0 -34
- package/data/packages/platform-core/api/Interface.IResourceStrategy.md +0 -134
- package/data/packages/platform-core/api/Variable.HEALTH_INDICATORS_TOKEN.md +0 -14
- package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +0 -60
- package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +0 -58
- package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +0 -71
- package/src/knowledge/configPattern.d.ts +0 -5
- package/src/knowledge/dtoPattern.d.ts +0 -5
- package/src/knowledge/errorHandlingPattern.d.ts +0 -5
- package/src/knowledge/guardPattern.d.ts +0 -5
- package/src/knowledge/mappingPattern.d.ts +0 -6
- package/src/knowledge/modulePattern.d.ts +0 -6
- package/src/knowledge/modulePattern.js +0 -283
- package/src/knowledge/queryPattern.d.ts +0 -6
- package/src/knowledge/queryPattern.js +0 -215
- package/src/knowledge/repositoryPattern.d.ts +0 -6
- package/src/knowledge/repositoryPattern.js +0 -367
- package/src/knowledge/testingPattern.d.ts +0 -5
|
@@ -5,7 +5,7 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Class: StripeClient
|
|
7
7
|
|
|
8
|
-
Defined in: [stripe/StripeClient.ts:
|
|
8
|
+
Defined in: [stripe/StripeClient.ts:29](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L29)
|
|
9
9
|
|
|
10
10
|
Stripe implementation of the [PaymentClientPort](Class.PaymentClientPort).
|
|
11
11
|
All Stripe-specific types and logic are encapsulated here.
|
|
@@ -22,7 +22,7 @@ All Stripe-specific types and logic are encapsulated here.
|
|
|
22
22
|
new StripeClient(configService): StripeClient;
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
Defined in: [stripe/StripeClient.ts:
|
|
25
|
+
Defined in: [stripe/StripeClient.ts:40](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L40)
|
|
26
26
|
|
|
27
27
|
#### Parameters
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ Defined in: [stripe/StripeClient.ts:39](https://github.com/RueDeRennes/archipel/
|
|
|
46
46
|
constructWebhookEvent(payload, signature): INormalizedWebhookEvent;
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Defined in: [stripe/StripeClient.ts:
|
|
49
|
+
Defined in: [stripe/StripeClient.ts:153](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L153)
|
|
50
50
|
|
|
51
51
|
Construct and normalize a webhook event.
|
|
52
52
|
|
|
@@ -79,7 +79,7 @@ createCheckoutSession(
|
|
|
79
79
|
userId?): Promise<INormalizedCheckoutSession>;
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
Defined in: [stripe/StripeClient.ts:
|
|
82
|
+
Defined in: [stripe/StripeClient.ts:88](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L88)
|
|
83
83
|
|
|
84
84
|
Create a checkout session.
|
|
85
85
|
|
|
@@ -110,7 +110,7 @@ Normalized checkout session
|
|
|
110
110
|
fetchPrices(productId): Promise<INormalizedPrice[]>;
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
-
Defined in: [stripe/StripeClient.ts:
|
|
113
|
+
Defined in: [stripe/StripeClient.ts:59](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L59)
|
|
114
114
|
|
|
115
115
|
Fetch all active prices for a product.
|
|
116
116
|
|
|
@@ -140,7 +140,7 @@ fetchSubscription(subscriptionId): Promise<
|
|
|
140
140
|
| null>;
|
|
141
141
|
```
|
|
142
142
|
|
|
143
|
-
Defined in: [stripe/StripeClient.ts:
|
|
143
|
+
Defined in: [stripe/StripeClient.ts:128](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L128)
|
|
144
144
|
|
|
145
145
|
Retrieve subscription details.
|
|
146
146
|
|
|
@@ -16,6 +16,7 @@ editUrl: false
|
|
|
16
16
|
| [MollieClient](Class.MollieClient) | Mollie implementation of the [PaymentClientPort](Class.PaymentClientPort). Uses the official `@mollie/api-client` to interact with the Mollie API. |
|
|
17
17
|
| [PaddleClient](Class.PaddleClient) | Paddle implementation of the [PaymentClientPort](Class.PaymentClientPort). Uses the official `@paddle/paddle-node-sdk` to interact with the Paddle Billing API. |
|
|
18
18
|
| [PaymentClientPort](Class.PaymentClientPort) | Abstract port for payment provider clients. Each provider (Stripe, Paddle, LemonSqueezy, Mollie) must implement this contract so that the consuming application can switch providers without changing business logic. |
|
|
19
|
+
| [PaymentError](Class.PaymentError) | Domain error thrown when a payment operation fails. |
|
|
19
20
|
| [PaymentModule](Class.PaymentModule) | NestJS module providing generic payment infrastructure. Exposes a configurable payment client, a feature-gating guard, and a usage-tracking interceptor. The specific payment provider (Stripe, Paddle, LemonSqueezy, Mollie) is selected via the options. |
|
|
20
21
|
| [StripeClient](Class.StripeClient) | Stripe implementation of the [PaymentClientPort](Class.PaymentClientPort). All Stripe-specific types and logic are encapsulated here. |
|
|
21
22
|
|
|
@@ -504,6 +504,34 @@ export class RecipeController {
|
|
|
504
504
|
|
|
505
505
|
---
|
|
506
506
|
|
|
507
|
+
## Error Handling
|
|
508
|
+
|
|
509
|
+
All payment clients throw a `PaymentError` when provider operations fail (checkout session creation, webhook signature verification, price fetching, etc.). This domain error wraps the underlying SDK error and exposes structured metadata:
|
|
510
|
+
|
|
511
|
+
```typescript
|
|
512
|
+
import { PaymentError } from '@breadstone/archipel-platform-payments';
|
|
513
|
+
|
|
514
|
+
try {
|
|
515
|
+
await this._paymentClient.createCheckoutSession(params);
|
|
516
|
+
} catch (error) {
|
|
517
|
+
if (error instanceof PaymentError) {
|
|
518
|
+
logger.error('Payment operation failed', {
|
|
519
|
+
provider: error.provider, // 'stripe', 'paddle', 'mollie', 'lemonsqueezy'
|
|
520
|
+
code: error.code, // 'PAYMENT'
|
|
521
|
+
cause: error.cause, // Original provider SDK error
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
| Property | Type | Description |
|
|
528
|
+
| ---------- | -------- | -------------------------------------------------- |
|
|
529
|
+
| `code` | `string` | Always `'PAYMENT'` |
|
|
530
|
+
| `provider` | `string` | Provider that failed (`stripe`, `paddle`, etc.) |
|
|
531
|
+
| `cause` | `unknown`| Original error from the provider SDK |
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
507
535
|
## Exports Summary
|
|
508
536
|
|
|
509
537
|
### Core (`@breadstone/archipel-platform-payments`)
|
|
@@ -523,6 +551,7 @@ export class RecipeController {
|
|
|
523
551
|
| `INormalizedSubscription` | Interface | Normalized subscription |
|
|
524
552
|
| `INormalizedWebhookEvent` | Interface | Normalized webhook event |
|
|
525
553
|
| `SubscriptionStatus` | Type Alias | Subscription status union |
|
|
554
|
+
| `PaymentError` | Error class | Domain error for payment failures |
|
|
526
555
|
|
|
527
556
|
### Provider subpaths
|
|
528
557
|
|
|
@@ -29,7 +29,7 @@ new ReportingContributorRegistry(): ReportingContributorRegistry;
|
|
|
29
29
|
getContributors(): readonly IReportingContributor[];
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Defined in: [core/ReportingContributorRegistry.ts:
|
|
32
|
+
Defined in: [core/ReportingContributorRegistry.ts:37](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/core/ReportingContributorRegistry.ts#L37)
|
|
33
33
|
|
|
34
34
|
#### Returns
|
|
35
35
|
|
|
@@ -30,6 +30,8 @@ export class AppModule {}
|
|
|
30
30
|
|
|
31
31
|
Each feature module provides an `IReportingContributor` that exposes the datasets it can report on. Contributors are registered with the `ReportingContributorRegistry` and discovered by the `ReportingFacade`.
|
|
32
32
|
|
|
33
|
+
> **Capacity limit:** The registry enforces a maximum of **200** registered contributors. Attempts to exceed this limit are logged as warnings and silently ignored.
|
|
34
|
+
|
|
33
35
|
### IReportingContributor
|
|
34
36
|
|
|
35
37
|
```typescript
|
|
@@ -128,7 +130,7 @@ export class OrderModule implements OnModuleInit {
|
|
|
128
130
|
|
|
129
131
|
## ReportingFacade
|
|
130
132
|
|
|
131
|
-
Central API for catalog browsing and query execution.
|
|
133
|
+
Central API for catalog browsing and query execution. Each `executeQuery()` call is subject to a **30-second timeout** — queries that exceed this limit throw a `ReportingExecutionError`.
|
|
132
134
|
|
|
133
135
|
### Browse Catalog
|
|
134
136
|
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: platform-resources
|
|
3
|
+
description: Multi-strategy resource management with MIME type detection and optional caching.
|
|
4
|
+
order: 3
|
|
5
|
+
tags: [resources, files, blob, mime, caching]
|
|
6
|
+
package: '@breadstone/archipel-platform-resources'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# platform-resources
|
|
10
|
+
|
|
11
|
+
Multi-strategy resource management for NestJS applications. Loads files from the file system, embedded buffers, or blob storage with MIME type detection and optional caching. Extracted from `platform-core` to provide a focused, independently versionable resource module.
|
|
12
|
+
|
|
13
|
+
**Package:** `@breadstone/archipel-platform-resources`
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import {
|
|
19
|
+
ResourceModule,
|
|
20
|
+
ResourceManager,
|
|
21
|
+
FileResourceStrategy,
|
|
22
|
+
BlobResourceStrategy,
|
|
23
|
+
EmbeddedResourceStrategy,
|
|
24
|
+
ResourceNotFoundError,
|
|
25
|
+
} from '@breadstone/archipel-platform-resources';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Module Registration
|
|
31
|
+
|
|
32
|
+
Register the module with one or more resource strategies:
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { Module } from '@nestjs/common';
|
|
36
|
+
import { ResourceModule, FileResourceStrategy, EmbeddedResourceStrategy } from '@breadstone/archipel-platform-resources';
|
|
37
|
+
import { join } from 'node:path';
|
|
38
|
+
|
|
39
|
+
@Module({
|
|
40
|
+
imports: [
|
|
41
|
+
ResourceModule.forRoot({
|
|
42
|
+
strategies: [
|
|
43
|
+
new FileResourceStrategy({
|
|
44
|
+
basePath: join(__dirname, '..', 'assets'),
|
|
45
|
+
}),
|
|
46
|
+
new EmbeddedResourceStrategy([
|
|
47
|
+
{ name: 'fallback.html', buffer: Buffer.from('<html>Fallback</html>') },
|
|
48
|
+
]),
|
|
49
|
+
],
|
|
50
|
+
}),
|
|
51
|
+
],
|
|
52
|
+
})
|
|
53
|
+
export class AppModule {}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Using ResourceManager
|
|
57
|
+
|
|
58
|
+
Inject and use `ResourceManager` to load resources at runtime:
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import { Injectable } from '@nestjs/common';
|
|
62
|
+
import { ResourceManager } from '@breadstone/archipel-platform-resources';
|
|
63
|
+
|
|
64
|
+
@Injectable()
|
|
65
|
+
export class TemplateService {
|
|
66
|
+
constructor(private readonly _resourceManager: ResourceManager) {}
|
|
67
|
+
|
|
68
|
+
public async loadTemplate(name: string): Promise<string> {
|
|
69
|
+
const result = await this._resourceManager.get(name);
|
|
70
|
+
return result.buffer.toString('utf-8');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Strategies
|
|
78
|
+
|
|
79
|
+
| Strategy | Description |
|
|
80
|
+
| --------------------------- | ----------------------------------------------------------------- |
|
|
81
|
+
| `FileResourceStrategy` | Loads resources from the local file system with glob support |
|
|
82
|
+
| `BlobResourceStrategy` | Loads resources from a blob storage adapter (Vercel, Azure, S3) |
|
|
83
|
+
| `EmbeddedResourceStrategy` | Serves pre-loaded in-memory buffers |
|
|
84
|
+
|
|
85
|
+
### BlobResourceStrategy
|
|
86
|
+
|
|
87
|
+
For loading resources from cloud blob storage, provide an adapter that implements `IBlobServiceAdapter`:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { BlobResourceStrategy, type IBlobServiceAdapter } from '@breadstone/archipel-platform-resources';
|
|
91
|
+
|
|
92
|
+
const blobStrategy = new BlobResourceStrategy({
|
|
93
|
+
adapter: myBlobAdapter,
|
|
94
|
+
containerName: 'templates',
|
|
95
|
+
});
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Custom Strategies
|
|
99
|
+
|
|
100
|
+
Implement `IResourceStrategy` to create your own resource loading strategy:
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import type { IResourceStrategy, IResourceResult } from '@breadstone/archipel-platform-resources';
|
|
104
|
+
|
|
105
|
+
export class CustomStrategy implements IResourceStrategy {
|
|
106
|
+
public async get(name: string): Promise<IResourceResult | undefined> {
|
|
107
|
+
// Custom loading logic
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Interfaces
|
|
115
|
+
|
|
116
|
+
| Interface | Description |
|
|
117
|
+
| ---------------------- | ---------------------------------------- |
|
|
118
|
+
| `IResourceResult` | Result object with `buffer` and `metadata` |
|
|
119
|
+
| `IResourceMetadata` | Metadata including `mimeType` and `size` |
|
|
120
|
+
| `IResourceStrategy` | Strategy contract for resource loading |
|
|
121
|
+
| `IBlobServiceAdapter` | Adapter contract for blob storage access |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Error Classes
|
|
126
|
+
|
|
127
|
+
| Error | Description |
|
|
128
|
+
| ------------------------ | --------------------------------------------- |
|
|
129
|
+
| `ResourceNotFoundError` | Thrown when a requested resource is not found |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## API Reference
|
|
134
|
+
|
|
135
|
+
See the auto-generated [API Reference](./api/) for full details on all exported classes, interfaces, and types.
|
|
@@ -7,10 +7,14 @@ editUrl: false
|
|
|
7
7
|
|
|
8
8
|
Defined in: [metrics/MetricsService.ts:25](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L25)
|
|
9
9
|
|
|
10
|
-
Provides
|
|
10
|
+
Provides eagerly-initialized OpenTelemetry metric instruments.
|
|
11
11
|
|
|
12
12
|
Replaces the former module-level `let instruments` closure (TEL-4).
|
|
13
13
|
|
|
14
|
+
## Implements
|
|
15
|
+
|
|
16
|
+
- `OnModuleInit`
|
|
17
|
+
|
|
14
18
|
## Constructors
|
|
15
19
|
|
|
16
20
|
### Constructor
|
|
@@ -31,10 +35,32 @@ new MetricsService(): MetricsService;
|
|
|
31
35
|
getInstruments(): IMetricInstruments | undefined;
|
|
32
36
|
```
|
|
33
37
|
|
|
34
|
-
Defined in: [metrics/MetricsService.ts:
|
|
38
|
+
Defined in: [metrics/MetricsService.ts:61](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L61)
|
|
35
39
|
|
|
36
|
-
Returns the cached metric instruments
|
|
40
|
+
Returns the cached metric instruments.
|
|
37
41
|
|
|
38
42
|
#### Returns
|
|
39
43
|
|
|
40
44
|
[`IMetricInstruments`](Interface.IMetricInstruments) \| `undefined`
|
|
45
|
+
|
|
46
|
+
***
|
|
47
|
+
|
|
48
|
+
### onModuleInit()
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
onModuleInit(): void;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Defined in: [metrics/MetricsService.ts:40](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L40)
|
|
55
|
+
|
|
56
|
+
Eagerly initializes metric instruments at module startup.
|
|
57
|
+
|
|
58
|
+
#### Returns
|
|
59
|
+
|
|
60
|
+
`void`
|
|
61
|
+
|
|
62
|
+
#### Implementation of
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
OnModuleInit.onModuleInit
|
|
66
|
+
```
|
|
@@ -36,7 +36,7 @@ new OtelSdkHolder(): OtelSdkHolder;
|
|
|
36
36
|
onApplicationShutdown(): Promise<void>;
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Defined in: [OtelSdkHolder.ts:
|
|
39
|
+
Defined in: [OtelSdkHolder.ts:39](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/OtelSdkHolder.ts#L39)
|
|
40
40
|
|
|
41
41
|
#### Returns
|
|
42
42
|
|
|
@@ -58,9 +58,10 @@ OnApplicationShutdown.onApplicationShutdown
|
|
|
58
58
|
setSdk(sdk): void;
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
Defined in: [OtelSdkHolder.ts:
|
|
61
|
+
Defined in: [OtelSdkHolder.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/OtelSdkHolder.ts#L30)
|
|
62
62
|
|
|
63
63
|
Stores the SDK reference so it can be shut down later.
|
|
64
|
+
Can only be called once — subsequent calls are ignored.
|
|
64
65
|
|
|
65
66
|
#### Parameters
|
|
66
67
|
|
|
@@ -23,7 +23,7 @@ Defined in: [logger/TelemetryLoggerService.ts:5](https://github.com/RueDeRennes/
|
|
|
23
23
|
new TelemetryLoggerService(ruleEngine?): TelemetryLoggerService;
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Defined in: [logger/TelemetryLoggerService.ts:
|
|
26
|
+
Defined in: [logger/TelemetryLoggerService.ts:11](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L11)
|
|
27
27
|
|
|
28
28
|
#### Parameters
|
|
29
29
|
|
|
@@ -49,7 +49,7 @@ ConsoleLogger.constructor
|
|
|
49
49
|
debug(message, context?): void;
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
Defined in: [logger/TelemetryLoggerService.ts:
|
|
52
|
+
Defined in: [logger/TelemetryLoggerService.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L30)
|
|
53
53
|
|
|
54
54
|
Write a 'debug' level log, if the configured level allows for it.
|
|
55
55
|
Prints to `stdout` with newline.
|
|
@@ -88,7 +88,7 @@ error(
|
|
|
88
88
|
context?): void;
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
Defined in: [logger/TelemetryLoggerService.ts:
|
|
91
|
+
Defined in: [logger/TelemetryLoggerService.ts:22](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L22)
|
|
92
92
|
|
|
93
93
|
Write an 'error' level log, if the configured level allows for it.
|
|
94
94
|
Prints to `stderr` with newline.
|
|
@@ -125,7 +125,7 @@ ConsoleLogger.error
|
|
|
125
125
|
log(message, context?): void;
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
Defined in: [logger/TelemetryLoggerService.ts:
|
|
128
|
+
Defined in: [logger/TelemetryLoggerService.ts:18](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L18)
|
|
129
129
|
|
|
130
130
|
Write a 'log' level log, if the configured level allows for it.
|
|
131
131
|
Prints to `stdout` with newline.
|
|
@@ -161,7 +161,7 @@ ConsoleLogger.log
|
|
|
161
161
|
verbose(message, context?): void;
|
|
162
162
|
```
|
|
163
163
|
|
|
164
|
-
Defined in: [logger/TelemetryLoggerService.ts:
|
|
164
|
+
Defined in: [logger/TelemetryLoggerService.ts:34](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L34)
|
|
165
165
|
|
|
166
166
|
Write a 'verbose' level log, if the configured level allows for it.
|
|
167
167
|
Prints to `stdout` with newline.
|
|
@@ -197,7 +197,7 @@ ConsoleLogger.verbose
|
|
|
197
197
|
warn(message, context?): void;
|
|
198
198
|
```
|
|
199
199
|
|
|
200
|
-
Defined in: [logger/TelemetryLoggerService.ts:
|
|
200
|
+
Defined in: [logger/TelemetryLoggerService.ts:26](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L26)
|
|
201
201
|
|
|
202
202
|
Write a 'warn' level log, if the configured level allows for it.
|
|
203
203
|
Prints to `stdout` with newline.
|
|
@@ -5,7 +5,7 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Class: TelemetryRuleEngine
|
|
7
7
|
|
|
8
|
-
Defined in: [rules/TelemetryRuleEngine.ts:
|
|
8
|
+
Defined in: [rules/TelemetryRuleEngine.ts:12](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L12)
|
|
9
9
|
|
|
10
10
|
## Constructors
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ Defined in: [rules/TelemetryRuleEngine.ts:11](https://github.com/RueDeRennes/arc
|
|
|
15
15
|
new TelemetryRuleEngine(options, metricsService): TelemetryRuleEngine;
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Defined in: [rules/TelemetryRuleEngine.ts:
|
|
18
|
+
Defined in: [rules/TelemetryRuleEngine.ts:20](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L20)
|
|
19
19
|
|
|
20
20
|
#### Parameters
|
|
21
21
|
|
|
@@ -36,7 +36,7 @@ Defined in: [rules/TelemetryRuleEngine.ts:18](https://github.com/RueDeRennes/arc
|
|
|
36
36
|
process(message): void;
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Defined in: [rules/TelemetryRuleEngine.ts:
|
|
39
|
+
Defined in: [rules/TelemetryRuleEngine.ts:27](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L27)
|
|
40
40
|
|
|
41
41
|
#### Parameters
|
|
42
42
|
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const TELEMETRY_ENABLED: typeof TELEMETRY_ENABLED;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [tokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens.ts#L4)
|
|
12
|
+
Defined in: [tokens/TelemetryTokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens/TelemetryTokens.ts#L4)
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const TELEMETRY_FACADE: typeof TELEMETRY_FACADE;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [tokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens.ts#L3)
|
|
12
|
+
Defined in: [tokens/TelemetryTokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens/TelemetryTokens.ts#L3)
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const TELEMETRY_OPTIONS: typeof TELEMETRY_OPTIONS;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [tokens.ts:2](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens.ts#L2)
|
|
12
|
+
Defined in: [tokens/TelemetryTokens.ts:2](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens/TelemetryTokens.ts#L2)
|
|
@@ -9,7 +9,7 @@ editUrl: false
|
|
|
9
9
|
|
|
10
10
|
| Class | Description |
|
|
11
11
|
| ------ | ------ |
|
|
12
|
-
| [MetricsService](Class.MetricsService) | Provides
|
|
12
|
+
| [MetricsService](Class.MetricsService) | Provides eagerly-initialized OpenTelemetry metric instruments. |
|
|
13
13
|
| [NoopTelemetryFacade](Class.NoopTelemetryFacade) | - |
|
|
14
14
|
| [OtelSdkHolder](Class.OtelSdkHolder) | Holds a reference to the OpenTelemetry NodeSDK instance and performs a graceful shutdown when the application terminates. |
|
|
15
15
|
| [TelemetryCacheMetricsRecorder](Class.TelemetryCacheMetricsRecorder) | Generic cache metrics recorder that forwards cache lifecycle events into the telemetry facade (which may be a noop when disabled). |
|
|
@@ -164,7 +164,9 @@ The module initializes these OTEL components:
|
|
|
164
164
|
| Metrics exporter | OTLP/HTTP |
|
|
165
165
|
| Express instrumentation | `@opentelemetry/instrumentation-express` |
|
|
166
166
|
| HTTP instrumentation | `@opentelemetry/instrumentation-http` |
|
|
167
|
-
| SDK shutdown hook | Graceful on `OnModuleDestroy`
|
|
167
|
+
| SDK shutdown hook | Graceful on `OnModuleDestroy` (5-second timeout) |
|
|
168
|
+
| SDK init guard | `OtelSdkHolder` write-once — prevents double-init |
|
|
169
|
+
| Metric instruments | Eager init via `MetricsService.onModuleInit()` |
|
|
168
170
|
|
|
169
171
|
---
|
|
170
172
|
|